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.
POSTROUTING: Trata roteamento de pacotes que deixam o FIREWALL.
Praticamente para todas as regras temos que definir uma TARGET.
Bloquear todo tráfego que irá passar pelo FIREWALL:
Liberar qualquer acesso partindo do FIREWALL:
Para qualquer regra teremos que adicionar uma regra ou indexar uma regra para isso usaremos os parâmetros abaixo:
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.
--------------FORWARD: Pacotes de origem 0/0 com destino 0/0 que passam pelo FIREWALL.
----------> | FIREWALL |
INPUT --------------
- OUTPUT: Pacotes onde a ORIGEM é o FIREWALL
--------------
| FIREWALL | ----------->
-------------- OUTPUT
--------------PREROUTING: Trata roteamento de pacotes que chegam no FIREWALL.
| FIREWALL |
--------------
---------> FORWARD --------->
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:
- Escolher qual tabela iremos usar (filter, nat, mangle)
- Quais regras iremos configurar (INPUT, FORWARD)
- Será necessário configurar a interface de entrada (-i para INPUT) ou de saída (-o para OUTPUT)
- Será necessário definir uma porta de acesso
- 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
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
iptables -t nat -F
iptables -t mangle -F
Até pessoal... Espero ter ajudado!
0 comentários :
Enviar um comentário