quinta-feira, 4 de fevereiro de 2010

Iptables detalhado

Por: Ricardo Vasconcellos

Fonte: http://www.vivaolinux.com.br/artigo/Iptables-detalhado/?pagina=1

Vantagens e fluxo de pacote

A partir da família 2.4.x do kernel, o controle de pacotes passou a ser implementado peloNetfilter e através do módulo Iptables. O Ipchains era muito utilizado na família de kernel 2.2.x e não é recomendado para utilização nos kernel 2.4.x e superior. 

Vamos ver algumas vantagens em utilizar o Iptables. 

Filtro de pacotes por estado (Statefull): agora podemos definir regras baseadas em status de conexão: nova (NEW), estabelecida (ESTABLISHED), reincidente (RELATED) e inválida (INVALID). 

Extremamente modular: possui módulos que permitem tratar a conexão por MAC, múltiplas portas, pacotes com má formação. 

Fluxo de pacotes: INPUT: pacotes onde o DESTINO é o FIREWALL.
             --------------
----------> | FIREWALL |
INPUT --------------

- OUTPUT: Pacotes onde a ORIGEM é o FIREWALL

--------------
| FIREWALL | ----------->
-------------- OUTPUT

FORWARD: Pacotes de origem 0/0 com destino 0/0 que passam pelo FIREWALL.
          --------------
| FIREWALL |
--------------
---------> FORWARD --------->

PREROUTING: Trata roteamento de pacotes que chegam no FIREWALL. 

POSTROUTING: Trata roteamento de pacotes que deixam o FIREWALL. 

Praticamente para todas as regras temos que definir uma TARGET.

  • ACCEPT: Aceita o pacote

  • DROP: Bloqueia um pacote sem resposta

  • REJECT: Bloqueia um pacote com resposta

  • LOG: Gera log de acordo com a regra definida

  • SNAT, DNAT, MASQUERADE: Realiza NAT sobre os pacotes


Política de segurança

Política de segurança é configurada através do parâmetro "-P". Vamos bloquear qualquer tráfego com destino ao FIREWALL: 


iptables -P INPUT DROP

Bloquear todo tráfego que irá passar pelo FIREWALL: 


iptables -P FORWARD DROP

Liberar qualquer acesso partindo do FIREWALL: 


iptables -P OUTPUT ACCEPT

Para qualquer regra teremos que adicionar uma regra ou indexar uma regra para isso usaremos os parâmetros abaixo:

  • APPEND (-A): A regra será adicionada uma após a outra.

  • INSERT (-I): Regra será adicionada acima de todas as regras APPEND.

Meu primeiro firewall



Temos que ter um objetivo para poder começar a configurar um firewall, seguem abaixo algumas dicas:


  1. Escolher qual tabela iremos usar (filter, nat, mangle)

  2. Quais regras iremos configurar (INPUT, FORWARD)

  3. Será necessário configurar a interface de entrada (-i para INPUT) ou de saída (-o para OUTPUT)

  4. Será necessário definir uma porta de acesso

  5. Escolher uma TARGET (ACCEPT, DROP, REJECT)

Seguem abaixo alguns dos principais parâmetros:

  • -A: Faz um Append de uma chain

  • -I: Faz um Index de uma chain

  • -N: Cria uma nova chain

  • -F: Elimina todas as regras

  • -s: Define origem do pacote

  • -d: Define um destino para o pacote

  • -i: Define interface de entrada

  • -o: Define interface de saída

  • -p: Define um protocolo

  • --dport: Define porta de destino

  • --sport: Define porta de origem

  • -j: O que será feito com o pacote


Regras de firewall - diversos

Para listar as regras de firewall criadas podemos utilizar as seguintes regras: 


iptables -L
iptables -t nat -L
iptables -t mangle

Removendo regras de acesso: 


iptables -A INPUT -i eth0 -s 192.168.100.100 -p tcp --dport 22 -j ACCEPT

Para remover a regra acima iremos usar a seguinte linha: 


iptables -D INPUT -i eth0 -s 192.168.100.100 -p tcp --dport 22 -j ACCEPT

ou localize a linha que você queira deletar através do comando: 


iptables -L INPUT

e aplique a regra abaixo para deletá-la: 


iptables -D INPUT <número da linha>

Para direcionar a saída padrão de internet para o Squid utilize a linha abaixo: 


iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080

Zerando as regras de firewall: 


iptables -F
iptables -t nat -F
iptables -t mangle -F

Até pessoal... Espero ter ajudado! 

0 comentários :

Enviar um comentário