Usando o IPTABLES para isolar interfaces

3

Estou usando a seguinte configuração na minha máquina Linux:

Existem duas pontes no sistema com as seguintes interfaces:

bridge_default -

  1. LAN
  2. WAN

bridge_1 -

  1. WLAN1

Gostaria de isolar entre as interfaces para que as mensagens que chegam da interface WLAN1 não consigam alcançar a interface LAN (em bridge_default) - apenas para a interface WAN.

Para isso, defini as seguintes regras:

Chain DEFAULT_FORWARD (1 references)
pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  wlan1 wan  0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  bridge_default wlan1  0.0.0.0/0            0.0.0.0/0

Chain DEFAULT_INPUT (1 references)
pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  wlan1 wan  0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  bridge_default wlan1  0.0.0.0/0            0.0.0.0/0

Chain DEFAULT_OUTPUT (1 references)
pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  wlan1 wan  0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  bridge_default wlan1  0.0.0.0/0            0.0.0.0/0

No entanto, quando eu realmente estou testando essa configuração, notei que o comportamento não é o esperado. Para ser mais específico, o log mostra que as mensagens chegam de bridge_1 e não da interface WLAN1:

IN=bridge_1 OUT= PHYSIN=wlan1 MAC=00:e0:92:00:01:51:e8:2a:ea:18:60:7d:08:00 S RC=192.168.2.101 DST=192.168.1.1 LEN=60 TOS=0x00 PREC=0x00 TTL=128 ID=21154 PROTO=ICMP TYPE=8 CODE=0 ID=6 SEQ=6891

EDITAR

Os resultados do comando iptables-save são apresentados abaixo:

-A DEFAULT_FORWARD -i wlan1 -o wan -j ACCEPT
-A DEFAULT_FORWARD -i bridge_default -o wlan1 -j DROP
-A DEFAULT_INPUT -i wlan1 -o wan -j ACCEPT
-A DEFAULT_INPUT -i bridge_default -o wlan1 -j DROP
-A DEFAULT_OUTPUT -i wlan1 -o wan -j ACCEPT
-A DEFAULT_OUTPUT -i bridge_default -o wlan1 -j DROP

Uma lista de NICs disponíveis:

root@ugwcpe:~# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP,80000> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
8: eth0_1: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:e0:92:00:01:40 brd ff:ff:ff:ff:ff:ff
9: eth0_2: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:e0:92:00:01:41 brd ff:ff:ff:ff:ff:ff
10: eth0_3: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:e0:92:00:01:42 brd ff:ff:ff:ff:ff:ff
11: eth0_4: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:e0:92:00:01:43 brd ff:ff:ff:ff:ff:ff
12: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:e0:92:00:01:44 brd ff:ff:ff:ff:ff:ff
15: default_bridge: <BROADCAST,MULTICAST,UP,LOWER_UP,80000> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
    link/ether 00:e0:92:00:01:40 brd ff:ff:ff:ff:ff:ff
16: wan@eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default
    link/ether 00:e0:92:00:01:45 brd ff:ff:ff:ff:ff:ff
17: rtlog0: <BROADCAST,MULTICAST,UP,LOWER_UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 00:e0:92:00:01:40 brd ff:ff:ff:ff:ff:ff
18: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state UP mode DEFAULT group default qlen 1000
    link/ether 00:e0:92:00:01:50 brd ff:ff:ff:ff:ff:ff
25: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 00:e0:92:00:01:51 brd ff:ff:ff:ff:ff:ff
26: wlan0.1: <BROADCAST,MULTICAST,UP,LOWER_UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 00:e0:92:00:01:52 brd ff:ff:ff:ff:ff:ff

Regras de encaminhamento padrão:

-A DEFAULT_FORWARD -i bridge1 -o wan -j ACCEPT
-A DEFAULT_FORWARD -i wan -o bridge1 -j ACCEPT
-A DEFAULT_FORWARD -i default_bridge -o bridge1 -j DROP
-A DEFAULT_FORWARD -i bridge1 -o default_bridge -j DROP
-A DEFAULT_FORWARD -i bridge1 -o wan -j ACCEPT
-A DEFAULT_FORWARD -i wan -o bridge1 -j ACCEPT
-A DEFAULT_FORWARD -o bridge1 -j DROP
-A DEFAULT_FORWARD -i bridge1 -j DROP
-A DEFAULT_FORWARD -i wlan -o wan -j ACCEPT
-A DEFAULT_FORWARD -i wan -o wlan -j ACCEPT
-A DEFAULT_FORWARD -o wlan -j DROP
-A DEFAULT_FORWARD -i wlan -j DROP

Alguém por favor pode me ajudar e apontar o que estou fazendo errado?

Obrigado a todos antecipadamente!

    
por dear_tzvi 05.12.2016 / 14:20

2 respostas

0

Você não está impedindo que as mensagens de wlan1 passem para lan .

Eu sou um pouco confuso sobre o NICs .

tente isto:

-A DEFAULT_FORWARD -i wlan1 -o wan -j ACCEPT
-A DEFAULT_FORWARD -i bridge_default -o wlan1 -j DROP
############# ADDED #################################
-A DEFAULT_FORWARD -i wlan1 -o bridge_default -j DROP
#####################################################
-A DEFAULT_INPUT -i wlan1 -o wan -j ACCEPT
-A DEFAULT_INPUT -i bridge_default -o wlan1 -j DROP
-A DEFAULT_OUTPUT -i wlan1 -o wan -j ACCEPT
-A DEFAULT_OUTPUT -i bridge_default -o wlan1 -j DROP

Qualquer pacote não passará para bridge_default se não corresponder à primeira regra que você adicionou -i wlan1 -o wan -j ACCEPT

    
por 06.12.2016 / 10:23
0

O problema descrito aqui é devido ao fato do iptables ser aplicado somente depois que a pilha do linux pode ser resolvida por vários métodos:

  1. Use ebtables em vez de iptables -

Como ebtables aplicam regras na camada ETH, podemos aplicar regras na interface real, e não como descrito aqui foram quando o pacote chega à ponte Linux, ele está sendo editado e alterado de modo que o valor IN será a ponte

  1. Use bridge_1 em vez de Interface -

Se as mesmas regras de tabela up forem aplicadas na bridge em vez da interface - nenhum problema ocorrerá e as regras funcionarão bem

    
por 06.12.2016 / 15:33