IPtables: блокировка всего трафика на интерфейсе, кроме выбранных портов
В моей системе четыре интерфейса (eth0, eth1, eth2 и eth3). Я хочу заблокировать весь входящий и исходящий трафик на eth2 за исключением портов 80 и 443, хотя сейчас я беспокоюсь только о 80. Команды IPtables, которые я использую, следующие:
/sbin/iptables -A FORWARD -i eth2 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -o eth2 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -i eth2 -p tcp --dport 53 -m state --state NEW -j ACCEPT
/sbin/iptables -A OUTPUT -o eth2 -p tcp --sport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -i eth2 -p udp --dport 53 -m state --state NEW -j ACCEPT
/sbin/iptables -A OUTPUT -o eth2 -p udp --sport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth2 -j DROP
/sbin/iptables -A FORWARD -o eth2 -j DROP
Проще говоря, это не работает. Весь трафик на eth2 заблокирован, включая порт 80. Есть идеи или способы выяснить, в чем проблема? У меня минимальный опыт работы с IPtables, поэтому я не уверен, с чего начать. Спасибо!
2 ответа
Рассмотрим строителя брандмауэра, такого как Shorewall. Это поможет сделать все правильно, и может сбросить правила, чтобы вы могли их проверить. Доступна обширная документация и примеры конфигураций для одного, двух или трех интерфейсов (внешних зон). Это дает вам три внешних интерфейса без размещения двух в одной зоне.
Предполагая, что вы назначили eth2
в зону net
включение HTTP и HTTPS может быть включено с одним из этих rules
, Какое правило вам нужно, зависит от того, в каком направлении вы хотите передавать трафик.
Web(ACCEPT) $FW net
Web(Accept) net $FW