Regras
As regras são como filtros aplicados ao iptables para que o mesmo implemente o que chamamos de filtro de pacote de acordo com o endereço IP/porta de origem/destino, interface de origem/destino, etc. As regras são armazenadas dentro dos chamados chains e processadas na ordem que são inseridas. Estas mesmas regras são armazenadas no kernel, o que significa que quando o sistema é reinicializado as mesmas são perdidas.
A sintaxe de uma regra é a seguinte:
iptables comando parâmetros extensões
Algo similar a isto na prática:
# iptables -A INPUT p- tcp -s 10.0.0.1 -j DROP
Comandos principais
Basicamente o IPTABLES tem as seguintes regras:
- DROP - Nega pacote sem envio de um flag Reset - R
- ACCEPT - Aceita pacote..
- REJECT - Nega pacote mas envia um flag Reset - R
O envio de um flag reset pode facilitar a detecção por um scanner de uma porta aberta em um sistema, por isso utilizamos normalmente a política DROP.
Tabelas (tables)
As Tabelas são os áreas na memória usados para armazenar os chains em conjunção come conjunto de regras. (Parece enrolado, mas é muito simples). As tabelas podem utilizar a seguinte sintaxe para referencia:
iptables -opções -t tabela
iptables -A INPUT
Existem 3 tabelas disponíveis no iptables:
a) Tabela filter - Considerada a tabela padrão, contém 3 chains básicos:
- INPUT - Consultado para pacotes que chegam na própria máquina;
- OUTPUT - Consultado para pacotes que saem da própria máquina;
- FORWARD - Consultado para pacotes que são redirecionados para outra interface de rede ou outra estação. Utilizada em mascaramento.
b) Tabela nat - Usada para passagem de pacotes que pode gerar outra conexão. Um exemplo clássico é o mascaramento (masquerading), nat, port forwarding e proxy transparente são alguns. Possui 3 chains básicas:
- PREROUTING - Consultado quando os pacotes precisam ser redirecionados logo que chegam. Por exemplo, um pacote smtp que vai ser direcionado parar um endereço interno da rede (chain ideal para realização do chamado Destination NAT (DNAT));
- OUTPUT - Consultado quando os pacotes gerados localmente precisam ser redirecionados antes de serem roteados. Este chain somente é utilizada para conexões que se originam de IPs de interfaces de rede locais;
- POSTROUTING - Consultado quando os pacotes precisam ser modificados após o tratamento de roteamento. É o chain utilizado para realização de SNAT e mascaramento(IP Masquerading).
c) Tabela mangle - Utilizada para alterações especiais de pacotes como por exemplo modificar o tipo de serviço (TOS) de um pacote. Ideal para produzir informações falsas para scanners Possui 2 chains padrões:
- PREROUTING - Consultado quando os pacotes precisam ser redirecionados logo que chegam;
- OUTPUT - Consultado quando os pacotes gerados localmente precisam ser redirecionados antes de serem roteados.