Onde o script iptables é armazenado no sistema de arquivos DD-WRT?

6

Eu tenho um roteador ASUS RT-N16 que exibi com o firmware DD-WRT de código-fonte aberto. De acordo com o meu ssh login, estou em execução:

DD-WRT v24-sp2 mega (c) 2010 NewMedia-NET GmbH
Release: 08/07/10 (SVN revision: 14896)

Gostaria de poder personalizar as regras do iptables, mas antes de fazer isso, gostaria de ver a saída das regras internas que são configuradas ao manipular as configurações da interface do navegador / GUI. Estou ciente da guia do script de firewall na interface do navegador para inserir regras de firewall personalizadas, mas não consigo encontrar um local para ver a saída.

Em um sistema Linux completo, as regras do iptables seriam armazenadas em algum lugar como /etc/sysconfig/iptables . Onde eu iria encontrá-los em um sistema de arquivos DD-WRT? eu posso fazer

iptables -L -vn --line-numbers

e ver a saída, mas o que estou procurando é mais do que o comando iptables-save pode gerar ... para que eu possa incorporar as regras apropriadas em meu script personalizado.

Eu entendo que essa compilação não possui um comando iptables-save . Eu não quero necessariamente o comando em si, apenas a saída que ele gera. Se houvesse algo como /etc/sysconfig/iptables , não me importaria em ter iptables-save . Eu vi que pode haver compilações diferentes do DD-WRT que dão algo como iptables-save , mas não estou no ponto em que estou pronto ou disposto a fazer o flash do roteador novamente. Talvez como último recurso.

EDITAR: As localizações Linux usuais para scripts de inicialização e similares (por exemplo, /etc/init.d , /etc/rc , ...) não parecem ter nada de útil (pelo menos na construção do DD-WRT que eu instalei). Por exemplo, dando uma olhada em /etc/init.d :

[/etc/init.d]# ll
-rwxr-xr-x    1 root     root           84 Aug  7  2010 rcS
-rwxr-xr-x    1 root     root           10 Aug  7  2010 S01dummy
[/etc/init.d]# cat rcS
#!/bin/sh
for i in /etc/init.d/S*; do
  $i start 2>&1
done | logger -s -p 6 -t '' &
[/etc/init.d]# cat S01dummy
#!/bin/sh
    
por PattMauler 14.05.2013 / 16:01

3 respostas

5

Procurando em

/tmp/.ipt
/tmp/.rc_firewall

dá exatamente o que eu estava procurando: as regras do iptables como elas normalmente estariam em um arquivo como /etc/sysconfig/iptables .

Eu já havia encontrado este :

dd if=/dev/mem | strings | grep -i iptables

... e, felizmente, funciona no sistema de arquivos DD-WRT. Ele não deu exatamente o que eu estava procurando, mas gerou um pouco de informação que eu não tinha sido capaz de identificar de outra maneira (ou pelo menos não com um único comando).

Ainda é necessário determinar quais coisas estão realmente em vigor comparando com a saída de

iptables -L -vn --line-numbers
iptables -L -vn -t nat --line-numbers
iptables -L -vn -t mangle --line-numbers

Eu também descobri que o comando grep na verdade faz funcionar [minhas desculpas por inicialmente afirmar que isso não aconteceu - eu teria jurado que não funcionou o último vezes eu tentei. Mea maxima culpa.] Usando grep , descobri que o

/lib/services.so

também possui uma riqueza de configurações iptables .

    
por 15.05.2013 / 05:54
4

Existem muitas variantes de distribuição * WRT, e dispositivos diferentes são configurados de maneiras diferentes, por isso não tenho certeza se isso se aplica à sua configuração, mas provavelmente isso acontece.

A configuração básica do * WRT possui um sistema de arquivos raiz somente de leitura, portanto, não é possível salvar as personalizações no sistema de arquivos. Em vez disso, a inicialização carrega várias configurações (dependentes de variantes) de NVRAM , que é organizado como uma lista simples de pares de valores-chave. As regras de firewall são armazenadas em entradas NVRAM dependentes de variantes. Procure um cujo nome contenha firewall ou cujo valor contenha iptables ou algo assim.

Execute ssh ROUTER_HOSTNAME nvram export --dump >nvram.txt para explorar o conteúdo NVRAM do seu roteador conforme desejado.

    
por 15.05.2013 / 00:59
1

Eu tenho o mesmo problema e tentei criar um symblink de iptables to iptables-save , o qual foi recomendado em sua página wiki DD-WRT_V24_.26_iptables-save , mas não funcionou para mim.

Para resolver isso eu fiz um arquivo shell mostrando o conteúdo de /tmp/.ipt .

/ jffs / bin / iptables-save :

#!/bin/sh
cat /tmp/.ipt

NOTA: A página wiki ( DD-WRT_V24_. 26_iptables-save é sobre "Firewall Builder" - Eu não testei esta solução com o "Firewall Builder".

    
por 27.10.2015 / 22:26