LINUX 16.04 блокировка портов и блокировка ip

Мое состояние: есть локальная сеть с 3 компьютерами

  1. Комп. A (10.1.1.7 и 172.16.1.12 и 192.168.0.4) (на самом деле Comp A имеет 3 сетевых интерфейса)
  2. Comp B (10.1.1.13)
  3. Comp C (172.16.1.5)

Comp A имеет два сетевых интерфейса, и я использую NAT connect Comp C, который является Tomcat сервер, за Комп. А. Кроме того, NAT является 172.16.1.5:8080<->10.1.1.7:80

Теперь я попытался использовать iptables в Комп. A (10.1.1.7):

[ 110]

После этого Comp B (10.1.1.13) не может пропинговать Comp A (10.1.1.7), но я все еще могу получить доступ к странице Tomcat. Я даже пытался использовать 2-ю команду (REJECT port 80), чтобы заблокировать порт 80.

Могу ли я заблокировать Comp B (10.1.1.13), чтобы Comp B не мог получить доступ к странице Tomcat. Если я только блокирую порт, могу ли я только не разрешить доступ к Tomcat, но все равно могу пропинговать 10.1.1.7? Спасибо

Мой iptables -v -x -n -L:

 pkts      bytes target     prot opt in     out     source               destination
       0        0 DROP       all  --  *      *       147.8.179.216        0.0.0.0/0
       0        0 DROP       all  --  *      *       14.0.154.45          0.0.0.0/0
       0        0 DROP       all  --  *      *       10.1.1.13            0.0.0.0/0
       0        0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

и мой iptables -v -x -n -L -t -nat:

Chain PREROUTING (policy ACCEPT 35032 packets, 1969104 bytes)
    pkts      bytes target     prot opt in     out     source               destination
     386    19820 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:172.16.1.5:8080

Chain INPUT (policy ACCEPT 34737 packets, 1955948 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 312260 packets, 19072061 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 312260 packets, 19072061 bytes)
    pkts      bytes target     prot opt in     out     source               destination
     385    19780 SNAT       tcp  --  *      *       0.0.0.0/0            172.16.1.5           tcp dpt:8080 to:172.16.1.12
1
задан 9 May 2019 в 10:27

2 ответа

Поскольку пакеты, которые вы хотите отбросить или отклонить, в противном случае были бы перенаправлены на компьютер C, они фактически не попадают в обычную цепочку INPUT. Кроме того, таблица nat не предназначена для фильтрации, поэтому ее нельзя сделать там. Таблица mangle PREROUTING просматривается перед таблицей nat PREROUTING, поэтому там можно разместить правила фильтрации.

sudo iptables -t mangle -A PREROUTING -i $EXTIF -p tcp -s 10.1.1.13 --dport 80 -j DROP

Где $ EXTIF - имя сетевого интерфейса.
Вышеуказанное правило было протестировано на моем тестовом компьютере с использованием разных IP-адресов и имен интерфейсов.

Используйте эту диаграмму , чтобы помочь отследить поток пакетов iptables.

0
ответ дан 9 May 2019 в 10:27

Трудно сказать, не видя остальных ваших столов. Вы можете посмотреть на все свои iptables, используя флаг -L, чтобы перечислить их:

sudo iptables -L

Пожалуйста, обновите ваш вопрос этим выводом, особенно если этот ответ не дает решения для вы.

Когда вы читаете этот вывод, вы должны начать сверху и идти вниз. Существуют ли какие-либо правила, которые бы отклоняли, отбрасывали или принимали ваш трафик перед этой линией? Поскольку вы пытаетесь заблокировать доступ, скорее всего, у вас есть строка ПРИНЯТЬ выше REJECT на порту 80.

При использовании команды iptables, вы можете добавить правила -A или вставить их с помощью -I . Это означает, что правила, добавленные с помощью -A, будут в нижней части существующих правил. Это может усложнить изменение на лету, и вместо этого вы загружаете список правил из файла:

sudo iptables -L # Look at tables, test that they work correctly
sudo iptables-save > /etc/iptables # Save tables to a file
....
sudo iptables-restore < /etc/iptables # Restore tables after a reboot or something

Вы также можете sudo iptables --flush начать все заново со свежим набором правил, которые примут все соединения.

0
ответ дан 9 May 2019 в 10:27

Другие вопросы по тегам:

Похожие вопросы: