Ниже приведены мои правила брандмауэра. eth1
это интерфейс WAN, а все остальные - интерфейсы LAN. Я хочу фильтровать INPUT и FORWARD цепочки только на eth1
(Интерфейс WAN). Все другие интерфейсы не нуждаются в брандмауэре. Мой пример кода ниже работает нормально. Но я чувствую, что мне не нужно иметь так много правил, чтобы включить фильтрацию на eth1
. Итак, как я могу включить фильтрацию только на eth1
всего с несколькими правилами iptables?
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i eth5 -j ACCEPT
iptables -A INPUT -i eth5.20 -j ACCEPT
iptables -A INPUT -i eth5.21 -j ACCEPT
iptables -A INPUT -i eth5.22 -j ACCEPT
iptables -A INPUT -i eth5.23 -j ACCEPT
iptables -A INPUT -i eth5.24 -j ACCEPT
iptables -A INPUT -i eth5.25 -j ACCEPT
iptables -A INPUT -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
iptables -A IFORWARD -i tap0 -j ACCEPT
iptables -A FORWARD -i eth5 -j ACCEPT
iptables -A FORWARD -i eth5.20 -j ACCEPT
iptables -A FORWARD -i eth5.21 -j ACCEPT
iptables -A FORWARD -i eth5.22 -j ACCEPT
iptables -A FORWARD -i eth5.23 -j ACCEPT
iptables -A FORWARD -i eth5.24 -j ACCEPT
iptables -A FORWARD -i eth5.25 -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Webserver Ports
iptables -A INPUT -i eth1 -p tcp --match multiport --dports 80,443 -j ACCEPT
# NAT for my local network
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source my.pub.ip.add
# ICMP Protection
iptables -A INPUT -i eth1 -p icmp -m icmp --icmp-type address-mask-request -j DROP
iptables -A INPUT -i eth1 -p icmp -m icmp --icmp-type timestamp-request -j DROP
iptables -A INPUT -i eth1 -p icmp -m icmp -m limit --limit 1/second -j ACCEPT
iptables -A INPUT -i eth1 -j DROP
iptables -A FORWARD -i eth1 -j DROP
Вы всегда можете сделать что-то подобное в верхней части каждой встроенной цепочки:
iptables -I INPUT -i eth1 -j eth1chain
iptables -I INPUT -i eth1 -j DROP
Затем ударите любые правила, которые вы хотите eth1chain
разрешить движение (можно не ставить -i eth1
в эти цепочки тоже!) и оставьте для политики в основной цепочке значение ПРИНЯТЬ.
Однако я бы не рекомендовал это. Вам действительно лучше использовать политику запрета по умолчанию и указывать только тот трафик, который вам действительно нужен. Использование достойного инструмента управления брандмауэром вместо написания команд iptables напрямую может значительно помочь в этой работе.