Shorewall, uma excelente opção para firewall Linux

Este artigo é direcionado àqueles que desejam implementar o Shorewall como interface de configuração de regras de Iptables. O Shoreline, mais conhecido como Shorewall, possibilita uma configuração mais organizada e rápida do seu firewall. O servidor utilizado neste artigo é um Linux Debian Etch 4.

[ Hits: 23.189 ]

Por: Leandro Cassorielo de Andrade em 16/10/2008 | Blog: http://andradeti.blogspot.com


Instalação e configuração



Vamos ao que interessa!

Instalar os pacotes:

# apt-get install shorewall shorewall-doc

Copiar os arquivos de exemplo para o diretório de configuração do shorewall:

# cp /usr/share/doc/shorewall/examples/two-interfaces/* /etc/shorewall/

Uma rápida explicação de cada arquivo de configuração, para uma implementação simples de firewall.

Zones

Neste arquivo são definidos os tipos de zonas de sua rede. Os três tipos de zonas mais utilizados são:
  • loc - Define a zona local. Será utilizado para definir regras para a rede local;
  • net - Define a zona de Internet. Será utilizado para definir regras para o link de dados;
  • dmz - Define a zona delimitada.

A variável FW já é uma zona declarada implicitamente. Essa zona corresponde ao firewall e é utilizada para definir regras para o mesmo.

Editar o arquivo /etc/shorewall/zones e inserir a seguinte configuração:

###########################
#ZONE TYPE OPTIONS IN OUT
###########################
net ipv4
loc ipv4

# NUNCA REMOVER ESTA LINHA

Obs.: A zona FW não precisa ser definida, pois como já disse, é implicitamente definida.

Interfaces

Neste arquivo são atribuídas zonas às interfaces de rede. Antes de tudo deverá existir uma estrutura de rede. Neste artigo estou utilizando eth0 para Internet (DHCP) e eth1 para rede local (IP STATIC).

Editar o arquivo /etc/shorewall/interfaces e inserir:

###################################
#ZONE INTERFACE BROADCAST OPTIONS
###################################
net eth0 detect dhcp,tcpflags
loc eth1 detect tcpflags,detectnets,nosmurfs

# NUNCA REMOVA ESTA LINHA

Masq

Mais conhecido como masquerade (mascaramento de rede), o masq define as máscaras de rede e a ordem que elas serão apresentadas. Usado por servidores que servem como gateway para rede local.

Editar o arquivo /etc/shorewall/masq e inserir:

##############################################
#INTERFACE SUBNET ADDRESS PROTO PORT(S) IPSEC
##############################################
eth0 eth1

# NUNCA REMOVER ESTA LINHA

Policy

Toda política da rede é definida nesta zona. Antes de executar qualquer regra de exceção definida na zona rules (próximo tópico), o Shorewall utiliza as regras globais definidas nesta zona para só então dar prosseguimento às exceções.

Editar o arquivo /etc/shorewall/policy e inserir:

#
# Policies for traffic originating from the firewall ($FW)
#
# If you want open access to the Internet from your firewall, change the
# $FW to net policy to ACCEPT and remove the 'info' LOG LEVEL.
# This may be useful if you run a proxy server on the firewall.

$FW net ACCEPT # LINHA 1
$FW loc ACCEPT # LINHA 2
$FW all REJECT info # LINHA 3

# Policies for traffic originating from the local LAN (loc)
#
# If you want to force clients to access the Internet via a proxy server
# on your firewall, change the loc to net policy to REJECT info.

loc net REJECT info
loc $FW REJECT info
loc ipsec ACCEPT
loc all DROP info

#
# Policies for traffic originating from the Internet zone (net)
#

net $FW DROP info
net loc DROP info
net all DROP info

# THE FOLLOWING POLICY MUST BE LAST
all all REJECT info


# ULTIMA LINHA - NUNCA REMOVA

Uma breve explicação de algumas linhas do conf policy:
  • LINHA 1 - Todas as requisições do firewall para a internet serão aceitas;
  • LINHA 2 - Todas as requisições do firewall para a rede local serão aceitas;
  • LINHA 3 - Todas as requisições do firewall para todos os outros lugares serão rejeitados e devidamente catalogado em log. Por isso o "info" ao final da linha.

As opções de ações usadas nas zonas policy e rules são:
  • ACCEPT - Aceita pacotes/requisições;
  • REJECT - Rejeita pacotes/requisições e retorna mensagem de rejeição;
  • DROP - Elimina pacotes/requisições e não retorna mensagem alguma.

Rules

Nesta zona são definidas as regras finais para o destino e origem de cada pacote/requisição. Após terem passados pelas regras da zona policy, o firewall trata os pacotes com essas exceções e direciona-os para o seu destino/origem finais.

Editar o arquivo /etc/shorewall/rules e inserir:

##########################################
#AÇÃO ORIGEM DESTINO PROTO DESTINO ORIGEM
#SOLICITANTE TAXA USUÁRIO
# ZONA ZONA PORTA PORTA(S)
##########################################

# Aceita conexões DNS vindas do firewall para a rede
#

DNS/ACCEPT $FW net

# Permite Ping vindos da "zone loc" para rede
#

Ping/ACCEPT loc $FW
Ping/ACCEPT loc loc

# Rejeita ping vindo da "zone net" batizados como "maus"...
#
Ping/ACCEPT net:200.200.200.00 $FW
Ping/DROP net $FW

ACCEPT $FW loc icmp
ACCEPT $FW net icmp

# Abrindo portas
#
ACCEPT net $FW tcp 22 # SSH
ACCEPT net $FW tcp 9000 # SSH
ACCEPT net $FW tcp 8080 # Tomcat6
ACCEPT net $FW tcp 9100 # Apache2
ACCEPT net $FW tcp 80 # Apache2
ACCEPT net $FW tcp 1521 # Oracle_Listener
ACCEPT net $FW tcp 10000 # Webmin
ACCEPT net $FW tcp 1158 # OEM

# Redirecionando conexões
# Neste exemplo estou direcionando uma requisição vinda da internet
# e direcionando-a para a rede local no IP 192.168.27.2 na porta 4899
#
DNAT $FW loc:192.168.27.2:4899 tcp 1158

# ULTIMA LINHA - NUNCA REMOVA

Esta foi uma breve explicação de como utilizar o Shorewall como firewall. Para quem deseja aprofundar-se neste software e implementar as outras diversas funcionalidades dele, visite o site oficial do Shorewall.

Este artigo foi originalmente publicado em meu blog, o blog do Leandro Andrade - Oracle e Linux.

   

Páginas do artigo
   1. Instalação e configuração
Outros artigos deste autor

Instalação do Oracle Database 10g R2 no Debian Etch 4

Leitura recomendada

Entendendo TCP/IP (Parte 5) - Portas TCP/UDP

Firewall rápido e seguro com iptables

Como construir um firewall de baixo custo para sua empresa (parte 2)

Bloqueando o UltraSurf e o WebMessenger do Hotmail com Proxy Transparente

Criando firewalls dinâmicos com Iptables Recent

  
Comentários
[1] Comentário enviado por fabio em 16/10/2008 - 10:21h

Para quem nunca usou, eu recomendo o uso do Shorewall. Já usei e posso afirmar que, depois que compreende-se a sintaxe de seus arquivos de configuração, ele realmente é uma mão na roda.

Parabéns pelo tutorial!

Um abraço.

[2] Comentário enviado por removido em 17/10/2008 - 10:58h

Olha, o seu artigo ficou legal. o Shorewall, é uma boa opção para quem está iniciando em Firewalls.

Acredito que você possa dá uma melhorada nos conceitos, por exemplo, quando você se referiu a MASQ, e fez relação com Mascara de Rede. São duas coisas distintas, e para quem não trabalha com Redes, pode se confundir um pouco.

Um grande abraço

Bruno Lima

[3] Comentário enviado por madtrek em 17/10/2008 - 11:47h

Bom dia .
O tutorial abrange apenas as funções básicas do Shorewall, mas serve com apresentação ...
O Shorewall é a mais poderosa ferramenta de configuração do iptables que eu conheço, eu o utilizo a mais de 5 anos e ainda não encontrei um único caso em que ele não tivesse as funções que eu necessitava !
Ele tem por exemplo uma série de "macros" para alguns casos mais complexos, por exemplo abrir todas as portas necessárias para que o Samba funcione, e muitos outros ...
E todo o gerenciamento pode ser feito via webmin, o módulo Shorewall do webmin já está incorporado no "core" a mais de 3 anos, e simplifica muito a configuração, principalmente em firewalls complexos, com vários serviços rodando, ou várias placas de rede ( tenho por exemplo em um cliente um servidor de DNS com 5 placas de rede, 3 para a rede interna, que são recursivos, e mais duas para a Internet que não são recursivos, configurar algo assim com iptable "na unha" seria um verdadeiro martírio, com o shorewall foi trabalho de uma tarde !!! )
Mas não se preocupe, todo o conhecimento adquirido sobre iptables não será perdido, a estrutura do arquivo "rules" por exemplo usa praticamente a mesma estrutura do iptables, apenas um pouco simplificado ..
Bom proveito !!

Fábio Rabelo

[4] Comentário enviado por andrade.ti em 17/10/2008 - 12:32h

Respostas:

Bruno, obrigado crítica construtiva! Realmente pode confundir um o pouco o Masq.

Fábio Rabelo, realmente tratei este tuttorial como uma apresentação do Shorewall. Pra mim também este é o mais robusto middleware de Iptables que conheço. Acredito que com essa breve apresentação, o usuário conseguirá implementar um firewall básico, porém seguro.

Obrigado aos colegas pela ajuda!

[5] Comentário enviado por removido em 18/10/2008 - 17:28h

Muito bem bolado o Artigo, parabens!

Recomendo o Shorewall


[6] Comentário enviado por bilufe em 20/10/2008 - 07:06h

O Mandriva já usa o Shorewall por padrão, e o melhor: tudo pode ser controlado por meio do Centro de Controle do Mandriva! Não precisa editar nenhum arquivo...


Contribuir com comentário