Este artigo nos mostrará de forma simples a configuração de um firewall iptables trabalhando com Squid transparente e serviço DHCP para ambientes sem políticas rígidas de acesso. A distribuição utilizada foi a openSuSE Linux 10.2.
O iptables atua como uma poderosa ferramenta para confecção de firewalls baseados em GNU/Linux. A grande vantagem em utilizar um firewall iptables é que podemos alcançar uma alta performance na máquina servidor, pois ele trabalha na própria arquitetura do kernel, o que o torna muito superior em relação aos seus concorrentes.
A tabela filter
INPUT: tudo o que entra no firewall;
FORWARD: tudo que chega no firewall mas deve ser redirecionado a um host secundário;
OUTPUT: tudo que sai do firewall.
A tabela NAT
PREROUTING: utilizado quando há a necessidade de se fazer alterações em pacotes antes que os mesmos sejam roteados;
POSTROUTING: utilizado quando há a necessidade de se fazer alterações em pacotes após o tratamento de roteamento.
Criando as pastas necessárias para nosso firewall:
# mkdir /etc/firewall
# mkdir /var/log/firewall
Hora de trabalhar:
# vi /etc/firewall/firewall
#!/bin/sh
#########################################
# IPTABLES
# William Robert Neumann
# williamrn@gmail.com
#########################################
######################################
# PING-MORTE
######################################
#Bloqueio ping da morte
$IPTABLES -N PING-MORTE
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j PING-MORTE
$IPTABLES -A PING-MORTE -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPTABLES -A PING-MORTE -j DROP
echo "Ativado o bloqueio a tentativa de ataque ping da morte"
echo "ON ....................................................... [ OK ]"
####################################
# SYN ACK and FIN
####################################
#Bloqueio de scanners ocultos (Shealt Scan)
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK, FIN, -m limit --limit 1/s -j ACCEPT
echo "Bloqueado scanners ocultos"
echo "ON ....................................................... [ OK ]"
######################################
# SSH-BRUT-FORCE
######################################
#Bloqueio de ataque ssh de força bruta
$IPTABLES -N SSH-BRUT-FORCE
$IPTABLES -A INPUT -i $LAN -p tcp --dport 22 -j SSH-BRUT-FORCE
$IPTABLES -A SSH-BRUT-FORCE -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPTABLES -A SSH-BRUT-FORCE -j DROP
echo "Ativado o bloqueio a tentativa de ataque do tipo SSH-BRUT-FORCE"
echo "ON ....................................................... [ OK ]"
Após a configuração do script é necessário configurar com as permissões de execução, salvar e sair do arquivo, lembrando que todas as configurações foram feitas utilizando o editor de textos "VI".
# chmod +x /etc/firewall/firewall
Ufa, o script está quase pronto para ser utilizado.
Carregando o script durante o boot
Instalando o script com as permissões necessárias:
[4] Comentário enviado por williamrn em 08/10/2008 - 21:48h
É verdade k4mus eu havia feito essa mudança no script para desabilitar respostas a comandos ping da rede inteira e não retirei a regra do PING-MORTE, realmente não haveria necessidade de bloquear lá em cima e criar outra regra para bloqueio contra icmp novamente, acabou se tornando uma redundância, obrigado pelo comentário, abraço!
[6] Comentário enviado por k4mus em 08/10/2008 - 23:19h
Amigo, so mais uma duvida. Quanto a regra : IPTABLES -A FORWARD -s 0/0 -d 0/0 -j ACCEPT , neste caso voce estaria abrindo todas as portas de qualqeur origem pra qualquer destino da tabela FORWARD, né isso ne? Esta correto?
..Desculpe ae as perguntas é pq ainda sou um pouco novato em iptables. :)
[9] Comentário enviado por williamrn em 13/10/2008 - 20:27h
Opa, eae k4mus desculpa a demora para responder, essa regra: 'IPTABLES -A FORWARD -s 0/0 -d 0/0 -j ACCEPT' aceita tanto para rede interna como externa de tudo para tudo, esse tipo de servidor não trabalhar em cima de políticas de bloqueio, como diz na descrição do artigo é para ambiente sem políticas rígidas de acesso, é interessante usar essa solução em lan house que podemos ter um maior aproveitamento da banda de internet devido a forma que o squid trabalha armazenando localmente páginas html, imagens e arquivos da internet, isso melhora a qualidade da banda de internet.
[10] Comentário enviado por williamrn em 13/10/2008 - 21:10h
Boa noite joice, td bem ?
Esse artigo eu procurei escrever e configurar ele da forma mais simples possível o arquivo squid.conf você pode observar que foi modificado apenas dois parâmetros, bom vamos lá, em relação as acl`s poderia ficar da seguinte forma.
#Regra para liberar a Rede 1
http_access allow LAN_INT1
#Regra para liberar a Rede 2
http_access allow LAN_INT2
#Negar o Resto
http_acceess deny all
Bom, como eu disse antes essa é uma configuração apenas funcional para utilizar o cache do squid, muitas outras configurações podem ser feita editando o arquivo squid.conf.
[13] Comentário enviado por williamrn em 14/10/2008 - 23:15h
Boa noite mar.almeida, td bem ?
Você pode instalar o squid da seguinte forma, baixando o código fonte, verifique a versão mais recente no site http://www.squid-cache.org/Versions/v2/
# wget http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE4.tar.gz
# tar xzvf squid-2.7.STABLE4.tar.gz
# groupadd squid
# useradd -g squid -s /dev/null squid >/dev/null 2>&1
# ./configure --prefix=/etc/squid
# make all
# make install