Включить iptables на одном интерфейсе

16

Я хочу, чтобы iptables фильтровал только один интерфейс eth0, который обращен к WAN. Как это может быть сделано? И я хочу, чтобы порты ftp и ssh были открыты на eth0.

nixnotwin
источник
Пожалуйста, прочитайте справочные страницы iptables - или, если я неправильно понял вашу проблему, уточните вопрос.
Яри ​​Йокинен

Ответы:

25

Таким образом, для всех интерфейсов, кроме одного, вы хотите принимать весь трафик, а на eth0 вы хотите отбросить весь входящий трафик, кроме ftp и ssh.

Во-первых, мы можем установить политику приема всего трафика по умолчанию.

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

Затем мы можем сбросить ваши правила брандмауэра.

iptables -F

Теперь можно сказать, что мы хотим разрешить входящий трафик на eth0, который является частью соединения, которое мы уже разрешили.

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Также, что мы хотим разрешить входящие ssh-соединения на eth0.

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

Но что-либо еще поступающее на eth0 должно быть отброшено.

iptables -A INPUT -i eth0 -j DROP

Для более подробной информации смотрите эту статью CentOS вики .

FTP сложнее, чем ssh, поскольку он может использовать произвольный порт, поэтому посмотрите этот предыдущий вопрос .

Sciurus
источник
5
ПРЕДУПРЕЖДЕНИЕ!!! Сделайте «iptables -P ...» перед «iptables -F». Если ваши текущие правила по умолчанию настроены на отбрасывание трафика, запуск -F заблокирует вас из вашего ящика. Вот почему рекомендуется придерживаться политики по умолчанию, разрешающей, и специально добавлять правило для удаления всего остального трафика.
Coops
8

Нечто подобное должно сделать работу:

iptables -A INPUT -i eth1 -p all -j DROP
iptables -A INPUT -i eth0 -p all -j ACCEPT
Барт Де Вос
источник
1
Довольно много места (хотя, может быть, немного приятнее, чем «Отбрасывать ВСЕ» на интерфейсе WAN, а?) - Напишите правила для фильтрации интерфейса, который вы хотите фильтровать, и всего ACCEPTостального на других интерфейсах.
voretaq7
4

Возможность указать интерфейс в правиле Iptables является -i, например: -i eth0.

Сумасшедший А. Раунд
источник
4

Это очень просто, когда вы создаете iptablesправило, тогда вы должны указать интерфейс. Опция указать карту LAN, на которой iptablesдолжно работать-i

Следующие правила могут дать вам хороший пример

iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset 

Последнее правило - отклонить любой другой пакет, который не соответствует первым двум правилам. Все правила iptablesвыполняются в указанном порядке, поэтому правило отклонения пакетов всегда последнее.

зарегистрированный пользователь
источник