Dominando o Iptables (parte 2)
Entendendo os parâmetros de filtragem
Endereços
Usamos dois parâmetros diferentes para especificar o endereço origem e o endereço destino. São eles:
- -s, –source, –src: Origem;
- -d, –destination, –dst: Destino.
É muito importante conhecer as características de manipulação de valores aceitos pra estes parâmetros. Veja abaixo:
# iptables -A FORWARD -s 10.38.11.10 -d 10.38.5.100 -j DROP
Os pacotes de origem em 10.38.11.10 destinados a 10.38.5.100 serão descartados.
# iptables -A FORWARD -s 10.38.11.0/24 -d 10.38.5.100 -j DROP
Os pacotes de origem em 10.38.11.0 ate 10.38.11.255 destinados a 10.38.5.100 serão descartados. Podemos usar valores também como www.microsoft.com, localhost e etc nas nossas regras, veja abaixo.
# iptables -A FORWARD -d ! www.microsoft.com.br -j ACCEPT
Nesta regra usamos o “!” para realizar uma inversão desta forma todos os endereços estão liberados apenas o site da Microsoft estará proibido.
Protocolos
Usamos o parâmetro ‘-p’ (ou `–protocol’) para especificar o protocolo envolvido. Como exemplo temos: `TCP’, `UDP’ ou `ICMP’, neste caso não faz diferença digitar ‘UDP’ ou ‘udp’. Os protocolos podem ser especificados também pelo seu número, que você encontra em /etc/protocols. Vejamos:
# iptables -A FORWARD -p tcp –dport 80 -j DROP
Nesta regra temos que os pacotes relacionados com o protocolo ‘tcp’ e destinados à porta 80 devem ser descartados. Não se preocupe com o parâmetro ‘–dport’. No futuro iremos tratar dele com mais detalhes. Esta regra é muito útil quando usamos um Squid, por exemplo, para impedir que usuário acesse websites sem a configuração de proxy, obrigando ele ir pela porta 3128 (padrão) do Squid para ter acesso a websites. Veja minha dica em relação a isso com mais detalhes neste link:
Interfaces
Usamos dois parâmetros para manipular o fluxo dos dados pelas interfaces (eth0, eth1, etc) são eles:
- -i, –in-interface: interface por onde os pacotes vieram;
- -o, –out-interface: interface por onde os pacotes estão saindo.
O -i não pode ser utilizado com a chain OUTPUT, assim como -o não pode ser utilizado com a chain INPUT. Apenas pacotes passando pela chain FORWARD têm interfaces de entrada e saída. Vejamos:
# iptables -A FORWARD -i ! eth0 -j DROP
Nesta regra temos que os pacotes que entram pela interface eth0 serão aceitos, o mesmo não vai acontecer com todas as outras interfaces. Fiquem atentos à inversão “!”. Quando queremos criar regras do Iptables para interfaces que ainda não existem, como a ppp0, fazemos da mesma forma como para as existentes, sendo que as regras só começarão a funcionar quando a interface existir. Podemos também usar a opção eth+ para aplicar as regras em todas as interfaces com uma única linha de código:
# iptables -A FORWARD -i eth+ -j DROP
Nesta regra todos os pacotes que entram pelas interfaces, eth0, eth1, eth2 e etc serão negados.
http://www.vivaolinux.com.br/artigo/Dominando-o-Iptables-(parte-2)?pagina=2
http://www.vivaolinux.com.br/artigo/Dominando-o-Iptables-(parte-2)