segunda-feira, 9 de março de 2009

Usando IpTables

O IPTables é um firewall SPF (Statefull Packet Filter, ou ainda, Filtro de Pacote por Estado), é um dos mais poderosos tipos de firewall, pois ele segue regras dadas pelo Admin, e ainda verifica o estado (Ex: Vê se o pacote foi solicitado).

O IPTables possue três tabelas, a primeira é a "filter", ela é a tabela defaut, controla o tráfego de dados sem ocorrencia de NAT. Aceita as Chains INPUT, OUTOUT e FOWARD. A segunda é a NAT, ela é utilizado quando se tem NAT (Ex: Um pacote sai da rede interna pra interet), aceita as Chains PREROUTING, OUTPOST e POSTROUTING. A terceira, última, e menos usada é a Mangle, ela trabalha basicamente com marcação de pacotes QoS.

Podemos dividir os tipos de firewall basicamente em dois tipos (retirado do foca-linux):

1 - Firewall de Aplicação: Este tipo de firewall analisam o conteúdo do pacote para tomar suas decisões de filtragem. Servidores proxy, como o Squid, são um exemplo deste tipo de firewall.

2) Firewall de Pacotes: Este tipo de firewall toma as decisòes baseadas nos parametros dos pacotes como porta/endereço de origem/destino, estado da conexão e, e outros parametros do pacote. Exemplos são o próprio iptables, ipfw, ipfilter e o Pix.


O iptables trouxe o conceito de arquitetura modular, agora user-code módulos são possíveis. Os modulos são programados no nível do kernel mas podem ser carregados no espaço no usuario com o uso do comando modprobe.

Dois móulos são interessantes pois fazem uma inspeção em todo o payload do pacote e elevam a funcionalidade do iptables para além de uma simples inspeção do modelo TCP/IP: Modulo String e Módulo Pkttype.


1) Modulo String:
Disponivel no Iptables desde a versão 1.2.3 (antes era experimental). O uso deste módulo permite elevar o iptables para filtragem no layer 7 (aplicação) e torna a filtragem muito mais rápida (3 a 10 vezes) em relação a um proxy como squid.

## Bloqueando acesso a pacotes que contem “playboy” e gerando log
iptables -A FORWARD -m string –string “playboy” -j LOG — log-prefix ”
Acesso a Playboy”
iptables -A FORWARD -m string –string “playboy” -j DROP

## Limitando acesso a qualquer dados que contenham no payload “orkut” a 1/m


iptables -A FORWARD -m string –string “orkut” -m limit –limit 1/m -j ACCEPT

## Bloqueando o acesso a mp3 e logando
iptables -A FORWARD -m string –string “.mp3″ -j LOG –log-prefix


“Download: mp3″
iptables -A FORWARD -m string –string “.mp3″ -j DROP


2) Modulo lenght:
Este módulo permite limitar o tamanho dos pacotes que passam pelo firewall. Assim como os outros módulos podem ser usados em conjunto com os módulos mais conhecidos. Pode ser usado para limitar downloads, por exemplo.

## Bloqueia qualquer pacote UDP maior que 10kb
iptables -A FORWARD -p udp -m length –lentgh 10000 -j DROP


## Bloqueia qualquer pacote icmp vindo da eth0 entre 1 e 15kb
iptables -A FORWARD -p icmp -i eth0 -m lenght –length 1000:15000


Outro módulo que trabalha no nível de aplicação:
Modulo Owner: Permite um controle em cima do usuario que inicia a conexão, tomando como paramentros o UID, GID e PID.


Vamos a alguns exemplos práticos:

Vamos definir algumas regras que permitirão que uma rede acesse a internet de forma irrestrita porém segura, não permitindo tráfego vindo da internet.
Sendo a rede local: 192.168.1.0/24 conectada a placa eth0 e a conexão com a internet à placa eth1.

#Definindo a política padrão (-P)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP


#Permitindo acesso a serviços no servidor local
iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

#Permitindo a saida de pacotes da rede local para a internet
iptables -A FORWARD -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT

#Habilitando o mascaramento da rede local na saida para a internet
iptables - t nat -A POSTROUTING -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQUERADE -o eth1


To Be Continuos...

Nenhum comentário:

Postar um comentário