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:
- Código: Selecionar todos
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:
... 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:
- Código: Selecionar todos
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:
- Código: Selecionar todos
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:
- Código: Selecionar todos
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:
- Código: Selecionar todos
iptables -A INPUT -p tcp --dport 6881:6889 -j ACCEPT
A regra para especificar apenas uma porta é bastante similar:
- Código: Selecionar todos
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):
- Código: Selecionar todos
#!/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
Usando o Firestarter e o GUFW
Naturalmente, configurar as regras manualmente só é necessário se você realmente gosta da linha de comando e quer ter um melhor controle sobre a configuração. Uma opção mais simples de usar e, ao mesmo tempo, bastante poderosa é o Firestarter, disponível via apt:
Você pode executá-lo usando o comando "sudo firestarter" ou usando o ícone no "Aplicações > Ferramentas de Sistema > Firestarter". Ele precisa ser sempre executado através do sudo, pois precisa de permissões de root para modificar as regras do Iptables e criar o serviço de sistema onde salva sua configuração.
Ao abrir o Firestarter pela primeira vez, é aberto um assistente que pede algumas informações básicas sobre a configuração da rede e oferece opções para compartilhar a conexão e ativar o firewall sob demanda, ao conectar usando uma conexão 3G (ou discada) ou via ADSL PPPoE.
Por padrão, uma vez aberto, o Firestarter bloqueia todas as portas e loga todas as tentativas de conexão, uma configuração bastante segura.
Sempre que alguém tenta abrir alguma conexão, seja a partir de outro micro da rede local ou via Internet, o ícone ao lado do relógio fica vermelho. Clicando sobre ele, a Interface do Firestarter é aberta, mostrando detalhes sobre a tentativa de acesso. Digo tentativa, pois por padrão o Firestarter vai bloquear a conexão, fazendo com que a outra pessoa dê com a cara na porta. Entretanto, clicando sobre a entrada, você tem a opção de autorizar futuros acessos:
Usando a opção "Permitir serviço de entrada para a origem" faz com que, daí em diante, o endereço possa acessar a porta (o SSH no exemplo), sem disparar novamente o alarme. Como a regra fica vinculada ao IP, esta opção é útil apenas para micros dentro da rede local que estejam configurados para usar IP fixo.
A opção "Permitir conexões a partir da origem" faz com que o endereço em questão possa acessar qualquer serviço disponível na sua máquina, em qualquer porta, sem disparar o alarme; uma opção interessante para micros da rede local. Finalmente, a opção "Permitir serviço de entrada para todos" abre a porta para todo mundo, incluindo hosts da Internet.
Essa natureza "interativa" é justamente o grande diferencial do Firestarter, que faz com que ele seja atualmente a melhor opção de firewall para desktops em geral. Todas as regras adicionadas entram em vigor imediatamente e ficam acessíveis para modificação ou consulta na aba "Política".
Uma vez ativado o firewall, as regras ficam ativas, mesmo que você feche a interface principal, mas você perde a possibilidade de monitorar as tentativas de acesso e aceitar conexões. O Firestarter fica residente na forma do serviço de sistema "firestarter".
Para desabilitar o firewall, não basta fechar a janela, nem mesmo o ícone ao lado do relógio. Fazendo isso você fecha a interface, mas o serviço continua ativo, com as regras ativas. Para realmente desativar as regras, você precisa clicar no "Parar Firewall" dentro da janela principal:
Outra opção de configurador gráfico é o Gufw (http://gufw.tuxfamily.org/pt/), um firewall voltado para a facilidade de uso, baseado no UFW (o "Uncomplicated Firewall", que pode ser usado via linha de comando). Por oferecer menos opções, ele acaba sendo mais adequado que o Firestarter para o uso de pessoas não-técnicas, como em casos em que você instala o Ubuntu em PCs de familiares e amigos. Ele também pode ser instalado usando o apt:
Uma vez instalado o pacote, será criado um atalho para ele no "Sistema > Administração > Configuração de Firewall". Assim como no caso do Firestarter, a interface é usada apenas para alterar a configuração do firewall. Uma vez ativado, ele continua ativo mesmo que a interface seja fechada.
O primeiro passo é marcar o "Firewall habilitado", o que ativa o Gufw em modo restritivo, bloqueando todo o tráfego de entrada, mas permitindo o tráfego de saída; a clássica receita para firewalls destinados a micros desktop. A ideia é justamente oferecer um bom nível de segurança por padrão, a partir da qual você possa criar exceções usando as opções da interface.
A aba "Simples" permite especificar diretamente portas de entrada que devem ser liberadas. Você pode tanto especificar as portas pelos números, como em "22" ou "6889", quanto pelo protocolo, como em "ssh" ou "ftp". Usando o terceiro campo, você pode especificar se deve ser aberta a porta TCP, UDP ou ambas:
A maioria dos protocolos utiliza portas TCP, mas existem casos como o do SIP, que usa a porta 5060 UDP para receber chamadas. No caso dele, por exemplo, não adiantaria abrir apenas a porta 5060 TCP, já que não é ela a usada.
A aba "Pré-configurado" inclui algumas regras prontas para autorizar ou bloquear protocolos ou aplicativos específicos. No Ubuntu 9.04 o conjunto de regras disponíveis é ainda bastante incompleto, por isso a utilidade é questionável, mas ele deve melhorar nas versões seguintes.
Concluindo, a aba "Avançado" permite definir regras com um pouco mais de liberdade, especificando endereços de origem e faixas de portas. Ela é um pouco contra-intuitiva, o que gera confusão.
O campo "De" permite especificar o endereço de origem das conexões, o que permite que você abra portas apenas para endereços específicos. Se um amigo precisa se conectar à sua máquina via SSH, por exemplo, você pode criar uma regra específica para ele, especificando o endereço no campo "De" e a porta 22 TCP no segundo campo do "Para":
O primeiro campo do "Para" permite especificar o endereço da sua máquina onde o pacote será aceito. Ele é usado apenas em casos em que o PC possui duas ou mais interfaces de rede, como no clássico caso em que você usa uma placa para a rede local e outra para a Internet. Deixando o campo em branco, você permite conexões em qualquer uma das interfaces, mas ao especificar seu endereço de rede local, a regra passa a permitir apenas conexões a partir de outros PCs da rede, descartando as conexões vindas da Internet.
Existem dois campos para especificar a porta, pois o segundo é usado quando você precisa especificar um intervalo de portas. Um caso clássico é o bittorrent, que utiliza as portas da 6881 à 6889. Usando os dois campos, você pode abrir todo o intervalo de uma vez, sem precisar criar uma regra para cada porta:
Concluindo, os menus incluem também opções para salvar as regras em um arquivo de texto (útil caso precise usar a mesma configuração em várias máquinas) e também para exibir o ícone ao lado do relógio, que serve como um atalho rápido para a interface.
Você está de acordo com as REGRAS do Fórum?! Já tirou suas dúvidas sobre o Fórum no FAQ!?
Caso tenha gostado do post, por favor, prestigie a fonte para este e outros assuntos afins o agradece sua preferência, volte sempre!
CREATION SOURCE: Hardware (Carlos Eduardo Morimoto)