Ver todas as regras de iptables

116

Existe uma maneira de visualizar as regras iptables com um pouco mais de detalhes?

Recentemente adicionei mascaramento a um intervalo de IPs:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save
service iptables restart

Que fez o que eu quero, mas quando eu uso:

iptables -L

Eu recebo a mesma saída que normalmente recebo:

Chain INPUT (policy ACCEPT)
target    prot opt source        destination

Chain FORWARD (policy ACCEPT)
target    prot opt source        destination

Chain OUTPUT (policy ACCEPT)
target    prot opt source        destination

Como posso ver as regras, incluindo as que adiciono? (o sistema é o CentOS 6)

    
por Trent 27.05.2015 / 15:14

7 respostas

92

Ao usar a opção -L , --list para listar as regras de firewall atuais, você também precisa especificar a tabela apropriada do Netfilter (uma de filter , nat , mangle , raw ou% código%). Então, se você adicionou uma regra para a tabela security , você deve especificar explicitamente essa tabela usando a opção nat , -t :

iptables --table nat --list

Ou usando a forma abreviada das opções:

iptables -t nat -L

Se você não especificar uma tabela específica, a tabela --table será usada como padrão.

Para resultados mais rápidos, pode ser útil incluir também a opção filter , -n para imprimir endereços IP numéricos em vez de nomes de host, evitando assim a necessidade de esperar por pesquisas de DNS reversas.

Você pode obter ainda mais informações incluindo a opção --numeric , -v .

    
por 27.05.2015 / 15:21
101

iptables controla cinco tabelas diferentes: filter , nat , mangle , raw e security . Em uma determinada chamada, iptables exibe ou modifica apenas uma dessas tabelas, especificada pelo argumento para a opção -t (com o padrão filter ). Para ver o estado completo do firewall, você precisa chamar iptables em cada uma das tabelas sucessivamente.

Além disso, para obter uma representação precisa das regras, você precisa passar a opção -v . Caso contrário, alguns critérios importantes são omitidos na saída, como a interface em regras de filtro (por exemplo, uma regra que diz "aceite tudo" e uma regra que diz "aceitar tudo na interface de loopback" só pode ser distinguida com -v ).

Assim, para obter uma apresentação completa das regras do netfilter, você precisa

iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security

Como alternativa, você pode chamar o programa iptables-save , que exibe todas as regras em todas as tabelas em um formato que pode ser analisado por iptables-restore . Este formato também é razoavelmente legível por humanos (é praticamente como uma série de chamadas para o comando iptables para construir a tabela).

    
por 28.05.2015 / 10:38
42

iptables -S faz o truque para mim. Parece listar todas as regras ativas, mesmo quando o serviço está desativado.

Da página do manual:

-S, --list-rules [chain] Print all rules in the selected chain. If no chain is selected, all chains are printed like iptables-save. Like every other iptables command, it applies to the specified table (filter is the default).

    
por 01.04.2016 / 05:32
14

O que eu faço é executar iptables-save > iptables_bckp , isso faria backup de todas as camadas, depois editaria o arquivo e restauraria o iptables iptables-restore < iptables_bckp

# iptables-save > iptables_bckp
# vim iptables_bckp
# iptables-restore < iptables_bckp

Você pode fazer um backup duplo para modificar um deles sem perder seu iptables passado.

Esta é uma prática pessoal, não estou dizendo que esta é a melhor maneira, mas para mim funciona muito bem.

Dê uma chance

    
por 27.05.2015 / 15:35
4

O comando iptables também requer que você especifique a tabela, caso contrário, o padrão é filtrar a tabela. Então tente:

iptables -t nat -L
    
por 27.05.2015 / 15:22
1

Você pode usar:

# lsmod | grep ip_tables
ip_tables              13193  4 iptable_raw,iptable_mangle,iptable_nat,iptable_filter

Para encontrar todas as tabelas e mostrar regra específica na tabela.

    
por 14.12.2017 / 09:12
1

Se isso realmente ajudar, você pode escrever um script bash e colocá-lo em uma pasta que seja referência por seu caminho ou referenciá-lo por meio de um alias no arquivo ~ / .bashrc.

AllRules.sh

#!/bin/bash

 echo "Filter table:"
 iptables -t filter -vL

 echo "Nat table:"
 iptables -t nat -vL

 echo "Mangle table:"
 iptables -t mangle -vL

 echo "Raw table:"
 iptables -t raw -vL

 echo "Security table:"
 iptables -t security -vL

 echo 
 echo "All rules in all tables printed"

Lembre-se de dar ao seu novo script bash permissões de execução com chmod

Se a permissão for um problema, talvez você tenha que adicionar o sudo na frente de todos os comandos iptables .

    
por 22.06.2017 / 20:48

Tags