Firewall no Ubuntu

Uma questão polêmica em torno do Ubuntu, é o fato do sistema não incluir nenhum script ou utilitário de configuração de firewall por padrão. Segundo os desenvolvedores, o firewall não é necessário, pois na configuração
padrão o sistema não mantém nenhum servidor ativo, fazendo com que a possibilidade de existir qualquer brecha de segurança seja pequena.

Mesmo assim, é sempre interessante manter um firewall ativo em um PC conectado diretamente à Internet. Você pode fazer isso escrevendo um script simples de firewall, que simplesmente bloqueie o acesso a todas as portas.

Um exemplo de firewall manual, que fecha todas as portas, permitindo que você consiga acessar a rede e a Internet, mas, ao mesmo tempo, impedindo que outros micros acessem serviços ativos na sua máquina seria:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP 

Estes são na verdade dois comandos de terminal, que ativam o Iptables (o firewall nativo do sistema, incluído no próprio kernel), permitindo que programas se comuniquem internamente usando a interface de loopback, mas
bloqueando qualquer acesso externo. Para desativar as regras, voltando a aceitar todas as conexões, use o comando:

$ sudo iptables -F

… ele limpa as regras do Iptables, restaurando a configuração inicial.

Para permitir acessos provenientes dos micros da rede local, você inclui mais uma regra (antes das outras duas), especificando a faixa de endereços usada pelos micros dentro da rede local. Substitua o “192.168.0.0” pela
faixa de endereços usada na sua rede:

iptables -A INPUT -p tcp -s 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP 

Se preferir, você pode também especificar a interface de rede usada na rede local no lugar da faixa de endereços, o que é mais adequado em casos em que você utiliza interfaces separadas para acessar a rede local e a
Internet. Um bom exemplo seria o caso de alguém que utiliza a interface eth0 (rede cabeada) para a rede local e um modem 3G (visto pelo sistema como a interface “ppp0”) para acesso à web. Nesse caso, a regra de firewall seria:

iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP 

Este é outro exemplo de configuração, um pouco mais elaborado. Ele utiliza uma regra baseada no parâmetro “-m state” para permitir apenas respostas a conexões iniciadas por você, bloqueando em seguida todas as portas. A
vantagem sobre o exemplo anterior é que ele bloqueia também as portas UDP, oferecendo uma proteção mais completa:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -j DROP
iptables -A INPUT -p udp -j DROP

Você pode também abrir portas específicas, ou intervalos de portas (como no caso das portas usadas pelo bittorrent ou por jogos multiplayer) adicionando a regra a seguir no início do script:

iptables -A INPUT -p tcp --dport 6881:6889 -j ACCEPT

A regra para especificar apenas uma porta é bastante similar:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Você pode também repetir a regra parar abrir várias portas e intervalos de portas, conforme necessário.

Estes comandos podem ser executados diretamente no terminal. Para que a mudança torne-se definitiva, inclua-os no final do arquivo “/etc/init.d/bootmisc.sh“, antes do “exit 0”.

Outro uso comum para o firewall é compartilhar a conexão com a rede local. Este é um exemplo de script que compartilha uma conexão 3G (a interface “ppp0”), aceitando conexões provenientes dos micros da rede local (a
interface “eth0” no exemplo) e bloqueando todas as conexões vindas da Internet, mantendo aberta apenas a porta 5060 UDP (usada para receber chamadas de VoIP no Ekiga):

#!/bin/sh
echo "Ativando o Firewall."
# Limpa as regras anteriores:
iptables -F 
iptables -t nat -F 
# Compartilha a conexão na interface ppp0:
modprobe iptable_nat 
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Abre a porta 5060 UDP (SIP):
iptables -A INPUT -p udp --dport 5060 -j ACCEPT
# Permite pacotes de resposta:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Permite conexões na interface de rede local e na interface lo:
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
# Bloqueia as demais conexões:
iptables -A INPUT -p tcp -j DROP
iptables -A INPUT -p udp -j DROP

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X