Configurando o iptables no roteador dd-wrt

2

Estou tentando configurar um roteador dd-wrt para servir como uma sub-rede para alguns dispositivos arduino personalizados.

A idéia é que os roteadores LAN / WIFI estejam abertos para os dispositivos arduino e só permitam que o tráfego deixe a porta WAN para a LAN da empresa se for para o servidor de controle.

Eu tentei aplicar as seguintes regras:

echo "allow all router connections"
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT

echo "allow all ping"
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT  -p icmp -m state --state ESTABLISHED,RELATED     -j ACCEPT

echo "allow all ntp (time)"
iptables -A OUTPUT -p udp --dport 123 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p udp --sport 123 -m state --state ESTABLISHED     -j ACCEPT

echo "allow dns"
iptables -A OUTPUT -p udp -d 10.80.91.2 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p udp -s 10.80.91.2 --sport 53 -m state --state ESTABLISHED     -j ACCEPT
iptables -A OUTPUT -p tcp -d 10.80.91.2 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p tcp -s 10.80.91.2 --sport 53 -m state --state ESTABLISHED     -j ACCEPT

echo "allow webserver"
iptables -A OUTPUT -p tcp -d 10.80.91.2 --dport 80  -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p tcp -s 10.80.91.2 --sport 80  -m state --state ESTABLISHED     -j ACCEPT

echo "drop everything else"
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP

iptables -P INPUT   DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  DROP

Infelizmente, toda vez que eu alcanço "iptables -A INPUT -j DROP" eu perco minha conexão telnet com o roteador como todas as regras que eu configurei antes de serem ignoradas.

É a primeira vez que uso o iptables e todas as informações que vejo online parecem indicar que estou fazendo corretamente.

O roteador é um Linksys E2000 com DD-WRT v24-sp2 (08/12/10) std-usb-ftp (SVN revisão 14929).

    
por daf 25.02.2016 / 14:05

1 resposta

1

Você não permitiu conexões estabelecidas do tipo que você já está usando na conexão. É por isso que quando você adiciona a última linha, a conexão é quebrada.

Você deseja uma linha como esta:

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Isso diz que o firewall deve permitir conexões que já foram feitas e estão funcionando. (ou seja, passou todas as outras regras no firewall.)

Com isso dito, você também precisará de uma regra para permitir o ssh, como:

-A INPUT -s <source> -p tcp -m state --state NEW -m tcp --dport ssh -j ACCEPT

Isto diz ao firewall para permitir que as conexões ssh sejam iniciadas .

Espero que isso ajude.

P.S. Eu teria que checar, mas as linhas "-P" (últimas três) você não deveria estar usando, pois acho que elas limpam as tabelas. Mas eu teria que reavaliar isso.

    
por 23.09.2016 / 16:12