Назад | Перейти на главную страницу

Новая цепочка для определенных IP-таблиц

Мне нужно создать новую цепочку для обработки определенного IP-адреса, скажем 192.168.0.101.

В этой новой цепочке этот IP-адрес будет иметь доступ ко всем сервисам, кроме FTP.

Мое решение:

iptables -N IP1

iptables -A IP1 -p tcp --dport 20 -j DROP
iptables -A IP1 -p tcp --dport 21 -j DROP
iptables -A IP1 -j ACCEPT

iptables -A INPUT -s 192.168.0.101 -j IP1

Решение правильное? Требуются ли для входящих пакетов два правила с --sport 20, 21?

Предложенные вами правила должны работать, но могут быть случаи, когда DROP в цепочке не является правильным действием.

Например, если вам нужно какое-то более позднее правило INPUT chain, чтобы разрешить ftp-доступ к определенному месту назначения для всех хостов в вашей сети.

В этом случае RETURN может быть лучшим выбором. Предполагая, что политика вашей цепочки INPUT DROP это, вероятно, также даст те же результаты.

iptables -A IP1 -p tcp --dport 20 -j RETURN
iptables -A IP1 -p tcp --dport 21 -j RETURN
iptables -A IP1 -j ACCEPT

Мне нравятся твои команды.

--sport будет для исходного порта (тот, который клиент подключает из), который часто рандомизируется. --dport правильно. Напомним, что соединение представляет собой набор из 4 кортежей, состоящий из адреса источника, порта источника, адреса назначения и порта назначения - iptables воздействует на набор из 4 элементов в пакете, который он видит.

Одна интересная особенность FTP заключается в том, что в пассивном режиме клиент и сервер согласовывают новый номер порта. Кроме того, я считаю, что порт 20 используется для подключения в место назначения файла независимо от того, какой сервер находится в контрольном соединении, но в этом случае не помешает заблокировать его.