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

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

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

Итак, для всех интерфейсов, кроме одного, вы хотите принимать весь трафик, а на 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, поскольку он может использовать случайный порт, см. этот предыдущий вопрос.

Что-то вроде этого должно сработать:

iptables -A INPUT -i eth1 -p all -j DROP
iptables -A INPUT -i eth0 -p all -j ACCEPT

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

Это очень просто, когда вы делаете iptables правило, вы должны указать интерфейс. Возможность указать сетевую карту, на которой 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 выполняются в указанном порядке, поэтому правило отклонения пакетов всегда выполняется последним.