sexta-feira, 16 de maio de 2008

IPTABLES

FIREWALL COM IPTABLES

1. IP FORWARD

Considerações iniciais

O IP FORWARD é um tipo de roteamento. É estabelecido quando colocamos uma máquina entre dois ou mais segmentos de rede, permitindo a livre passagem de pacotes entre estes sempre que for necessário. É importante ressaltar que o roteamento só irá funcionar quando for feito entre REDES DIFERENTES. Não se pode colocar um roteador entre dois segmentos de rede iguais. Esse procedimentonão serve apenas para estabelecer a comutação de segmentos. Ele também é útil para diminuir o tráfego na rede como um todo, pois só deixa o pacote mudar de segmento se isso for realmente necessário.

Veja a figura a seguir:

Para fazer o IP FORWARD, o micro roteador deverá possuir uma placa de rede com endereço IP pertencente a cada segmento. Também deveremos informar, em cada máquina de cada seguimento, quem será o micro responsável pelo roteamento. O nome técnico desse micro é gateway.

No caso do esquema anterior, temos as seguintes situações:

* Gateway para 10.0.0.1, 10.0.0.2 e 10.0.0.3: a máquina 10.0.0.10

* Gateway para 172.20.0.1, 172.20.0.2 e 172.20.0.3: a máquina 172.20.0.10

É importante que, nos dois lados, todos os micros saibam quem é o seu gateway pois, do contrário, os hosts não saberão para onde enviar os pacotes destinados à rede oposta. Exemplo:

A máquina 10.0.0.1 sabe que 10.0.0.10 é o seu gateway. A máquina 172.20.0.1 não sabe quem é o seu gateway. Um ping de 10.0.0.1 para 172.20.0.1 sairá de 10.0.0.1, passará por 10.0.0.10, seguirá por 172.20.0.10 e chegará em 172.20.0.1. Como 172.20.0.1 não sabe quem é o seu gateway para a rede 10.0.0.0, não conseguirá responder. O ping vai morrer por timeout. Houve o icmp echo request mas será impossível gerar o icmp echo reply.

Fazendo o IP FORWARD

Para estabelecermos o IP FORWARD entre dois segmentos de rede, basta:

* inserir um micro com duas placas de rede entre os segmentos de rede, configurando-as corretamente;

* definir, em cada máquina, de cada segmento, quem é o seu gateway;

* ativar o IP FORWARD via kernel.

O estabelecimento de IP FORWARD entre mais de dois segmentos de rede segue o mesmo princípio, bastando acrescer quantas placas de rede forem necessárias no gateway. Também é possível utilizar placas de fax-modem em conjunto com placas de rede.

Definindo o gateway

Para definirmos o gateway em cada cliente, devemos:

--> No Linux Red Hat/Fedora

Editar o arquivo /etc/sysconfig/network e inserir a linha:

GATEWAY=ip_do_gateway

Em seguida, devemos reiniciar a rede:

#/etc/rc.d/init.d/network restart

--> No Linux Slackware

Editar o arquivo /etc/rc.d/rc.inet1.conf e configurar a linha:

GATEWAY="ip_do_gateway"

Em seguida, devemos reiniciar a rede:

#/etc/rc.d/rc.inet1 restart

--> No Linux Debian

Editar o arquivo /etc/network/interfaces e inserir a linha:

gateway ip_do_gateway

Em seguida, devemos reiniciar a rede:

#/etc/init.d/networking restart

--> No Windows 9x

Nas Propriedades do protocolo TCP/IP, há uma seção gateway. Basta inserir o IP do gateway nessa seção. Exemplo:

--> No Windows XP

Nas Propriedades do protocolo TCP/IP, há uma entrada gateway. Basta inserir o IP do gateway. Exemplo:

--> Outras versões de Windows

Em outras versões de Windows, o procedimento é similar.

Ativando o roteamento via kernel no Linux

O roteamento via kernel será ativado com o comando:

#echo 1 > /proc/sys/net/ipv4/ip_forward

Esse roteamento será perdido se a rede (e, em conseqüência, a máquina) for reinicializada (#/etc/rc.d/init.d/network restart).

Poderíamos inserir a regra no fim do arquivo /etc/rc.d/rc.local, para que a mesma seja ativada a cada reinicialização do sistema. No entanto, um reinício da rede mataria o roteamento novamente.

No Red Hat, uma forma de deixar a regra de roteamento permanentemente ativada, resistindo a qualquer tipo de reinicialização, seria a alteração do arquivo /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Já no Debian, a linha a seguir deve ser inserida no arquivo /etc/sysctl.conf:

net/ipv4/ip_forward=1

Teste do roteamento

O teste do roteamento pode ser feito por intermédio do comando ping. Basta "pingar" uma máquina que esteja após o roteador.

Caso não haja resposta, faça um teste progressivo para tentar deduzir o problema:

--> pingue a placa do roteador que esteja dentro do seu segmento de rede;

--> pingue a placa do roteador que esteja no outro segmento;

--> pingue outra máquina do outro segmento.

O programa IPTRAF poderá ajudar a debugar a conexão. Execute a opção "IP traffic monitor" do citado programa na máquina roteadora e verifique se o ICMP echo request está saindo e se o ICMP echo reply está voltando. Se não voltar, o problema estará no segmento de destino do ping.



Créditos:
João Eriberto Mota Filho
http://www.eriberto.pro.br/iptables/

Nenhum comentário: