Regras Iptables, encaminhar entre duas interfaces

1

eu tenho algumas dificuldades em configurar o meu firewall do servidor ubuntu ... minha situação é esta:

eth0 - > internet

eth1 - > lan1

eth2 - > lan2

Eu quero que os clientes da lan1 não possam se comunicar com os clientes da lan2, exceto para alguns serviços específicos. Por exemplo. Eu quero que os clientes em lan1 podem ssh no cliente em lan2, mas apenas isso. Qualquer outra comunicação é proibida.

Então, eu adiciono essas regras ao iptables:

#Block all traffic between lan, but permit traffic to internet
iptables -I FORWARD -i eth1 -o ! eth0 -j DROP
iptables -I FORWARD -i eth2 -o ! eth0 -j DROP
# Accept ssh traffic from lan1 to client 192.168.20.2 in lan2
iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 22 -d 192.168.20.2 -j ACCEPT

Isso não funcionou. Fazendo iptables -L FORWARD -v eu vejo:

    Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    33   144 DROP       all  --  eth1 !eth0   anywhere             anywhere
    0     0 DROP       all  --  eth2 !eth0   anywhere             anywhere
23630   20M ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  eth1   any     anywhere             anywhere
  175  9957 ACCEPT     all  --  eth1 any     anywhere             anywhere
  107  6420 ACCEPT     all  --  eth2 any     anywhere             anywhere
    0     0 ACCEPT     all  --  pptp+  any     anywhere             anywhere
    0     0 ACCEPT     all  --  tun+   any     anywhere             anywhere
    0     0 ACCEPT     tcp  --  eth1 eth2  anywhere             server2.lan tcp dpt:ssh

Todos os pacotes são descartados e a contagem de pacotes para a última regra é 0 ...

Como eu tenho que modificar minha configuração? Obrigado.

Cumprimentos Marco

    
por Marco 23.08.2011 / 18:03

1 resposta

3

Seus DROPs estão na frente da cadeia (e serão processados primeiro). Você deseja colocar as DROPs após a regra que permite o acesso SSH para que a regra SSH seja usada.

Algo como isso deve funcionar:

#Accept ssh traffic from lan1 to client 192.168.20.2 in lan2
iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 22 -d 192.168.20.2 -j ACCEPT

#Block all traffic between lan, but permit traffic to internet
iptables -A FORWARD -i eth1 -o ! eth0 -j DROP
iptables -A FORWARD -i eth2 -o ! eth0 -j DROP

(use o -A para anexar essas regras ao final da cadeia)

    
por 23.08.2011 / 18:14