| Subcribe via RSS

Configurando um Firewall de A a Z. Parte 2

April 30th, 2008 Posted in Dicas


Estamos de volta com a segunda parte da nossa série. Nesta etapa vamos configurar um firewall básico de forma que nossa rede esteja protegia e os usuários possam utilizar Internet.

Antes de iniciarmos temos que levantar as redes e os serviços que serão disponibilizados. Primeiro, em relação as redes, nosso servidor tem três interfaces, uma para a rede interna, outra para a Internet e mais uma para uma DMZ que iremos criar. Se você não tem três interfaces de rede em seu computador não se preocupe, a DMZ que iremos criar será apenas para ilustrar um cenário que, um dia, você pode enfrentar.

Nossa rede está disposta da seguinte maneira:

Rede Local (192.168.0.0/255.255.255.0)————DMZ com WWW, Email (172.16.0.0)

———————-(192.168.0.254, 172.16.0.1) Servidor -> Internet

Os serviços disponíveis para os usuários da rede serão WWW, FTP, EMail, Messenger e Skype.

Existem duas formas de atuarmos, uma é bloquear tudo e liberarmos apenas a utilização destes serviços. Neste caso surge um problema, caso o usuário queira utilizar o serviço de câmeras do Messenger, pois este utiliza uma variedade muito grande de portas de forma aleatória. A outra maneira é liberar tudo, e bloquearmos apenas aquilo que não pode ser utilizado.

Bom, eu sempre gosto de bloquear tudo e liberar o resto depois. Mesmo que libere a rede toda!

A tabela de ip´s que vamos utilizar para filtrar tudo com o comando iptables é formada por três tabelas, cada uma com suas respectivas cadeias. As tabelas e cadeias são:

filter – Esta é a tabela padrão, contém 3 chains:

  • INPUT – Dados que chegam a máquina
  • OUTPUT – Dados que saem da máquina
  • FORWARD – Dados que são redirecionados para outra interface de rede ou outra máquina

nat – Dados mascarados como masquerading, source nat, destination nat, port forwarding, proxy transparente. Possui 3 chains:

  • PREROUTING – Pacotes precisam ser modificados logo que chegam. É o chain ideal para realização de DNAT e redirecionamento de portas.
  • OUTPUT – Pacotes gerados localmente precisam ser modificados antes de serem roteados. Este chain somente é consultado para conexões que se originam de IPs de interfaces locais.
  • POSTROUTING – Pacotes que precisam ser modificados após o tratamento de roteamento. É o chain ideal para realização de SNAT e IP Masquerading.

mangle – Utilizada para alterações especiais de pacotes. Possui 2 chains padrões:

  • INPUT – Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain INPUT da tabela filter.
  • FORWARD – Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain FORWARD da tabela filter.
  • PREROUTING – Consultado quando os pacotes precisam ser modificados antes de ser enviados para o chain PREROUTING da tabela nat.
  • POSTROUTING – Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain POSTROUTING da tabela nat.
  • OUTPUT – Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain OUTPUT da tabela nat.

Vamos começar limpando qualquer regra e definindo as políticas a serem utilizadas no nosso firewall. Caso não seja indicada qual tabela você está utilizando, o iptables assume que será utilizada a tabela filter.

# iptables -F
# iptables -t nat -F
# iptables -t mangle -F
# iptables
-P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT

Agora vamos liberar o acesso da rede interna ao nosso firewall. A interface de rede que responde a internet é a eth0, a da rede interna é a eth1, e a interface da DMZ é a eth2.

# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -i eth2 -s 172.16.0.0/24 -j ACCEPT

Desta forma os pacotes vindos da minha rede, e que entram exclusivamente pela interface correta serão aceitos.

Temos que liberar, também, a entrada de conexões geradas internamente. Ou seja, aceite os pacotes de conexões que eu inicie, como “me entregue o site do google!”.

# iptables -A INPUT -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT

Como ainda estamos na parte básica do firewall, nosso forward será, também básico, e seguirá as regras do INPUT.

# iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -j ACCEPT
# iptables -A FORWARD -i eth2 -s 172.16.0.0/24 -j ACCEPT
# iptables -A FORWARD -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT

Agora nossos usuários precisam ter acesso a Internet, então teremos que mascarar a rede e ativar o roteamento.

# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
# iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward

Finalmente vamos configurar o acesso a DMZ. São dois serviços rodando no IP 172.16.0.2. Os serviços são WWW (porta 80), POP3 (porta 110) e SMTP (porta 25).

# iptables -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp –dport 25 -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp –dport 110 -j ACCEPT
# iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to 172.16.0.2:80
# iptables -t nat -A PREROUTING -p tcp –dport 25 -j DNAT –to 172.16.0.2:25
# iptables -t nat -A PREROUTING -p tcp –dport 110 -j DNAT –to 172.16.0.2:110

Agora todos já devem ter condições de acessar a Internet através do nosso firewall. Vamos resumir os comandos do iptables.

(preparando as regras)
# iptables -F
# iptables -t nat -F
# iptables -t mangle -F

# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT

(Aceitando os pacotes da rede interna e os gerados internamente)
# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -i eth2 -s 172.16.0.0/24 -j ACCEPT

# iptables -A INPUT -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT

(Habilitando a passagem de pacotes entre as redes e a internet)
# iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -j ACCEPT
# iptables -A FORWARD -i eth2 -s 172.16.0.0/24 -j ACCEPT
# iptables -A FORWARD -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT

(mascarando as redes e habilitando o acesso a internet)
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
# iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward

(Liberando o acesso aos serviços da DMZ)
# iptables -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp –dport 25 -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp –dport 110 -j ACCEPT
# iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to 172.16.0.2:80
# iptables -t nat -A PREROUTING -p tcp –dport 25 -j DNAT –to 172.16.0.2:25
# iptables -t nat -A PREROUTING -p tcp –dport 110 -j DNAT –to 172.16.0.2:110

Por hoje vamos ficar com esses comandos. No próximo artigo da série vamos ver algumas opções avançadas para deixar nosso sistema mais seguro.

Até a próxima.

Índice de Configurando um Firewall de A a Z

  1. Configurando um Firewall de A a Z. Parte 1
  2. Configurando um Firewall de A a Z. Parte 2
  3. Configurando um Firewall de A a Z. Parte 3
  4. Configurando um Firewall de A a Z. Parte 5

Leave a Reply