Iptables: Filtrando apenas uma interface em um roteador com várias interfaces

2

Seguem as minhas regras de firewall. eth1 é a interface WAN e todas as outras são interfaces LAN. Eu quero filtrar as cadeias INPUT e FORWARD somente em eth1 (interface WAN). Todas as outras interfaces não precisam ser protegidas por firewall. Meu exemplo de código abaixo funciona bem. Mas sinto que não preciso de ter tantas regras apenas para ter a filtragem ativada em eth1 . Então, como posso ter a filtragem ativada apenas em eth1 com apenas algumas regras de 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
    
por nixnotwin 15.07.2012 / 09:42

1 resposta

4

Você sempre pode fazer algo assim no topo de cada cadeia interna:

iptables -I INPUT -i eth1 -j eth1chain
iptables -I INPUT -i eth1 -j DROP

Em seguida, digite as regras que você deseja em eth1chain para permitir o tráfego (você pode pular colocando -i eth1 nessas cadeias também!) e deixe a política na cadeia principal como ACCEPT.

No entanto, eu não recomendaria isso. É melhor você usar uma política de negação padrão e especificar apenas o tráfego que realmente deseja. Usar uma ferramenta de gerenciamento de firewall decente, em vez de escrever comandos do iptables diretamente, pode ajudar significativamente com esse trabalho.

    
por 15.07.2012 / 09:54