Firewall (Iptables + Squid) no Debian Squeeze

Publicado por edps em 08/10/2009

[ Hits: 28.390 ]

Blog: https://edpsblog.wordpress.com/

 


Firewall (Iptables + Squid) no Debian Squeeze



Olá pessoal, hoje venho apresentar a configuração do firewall que uso em meu Debian Squeeze.

A construção do mesmo segue várias dicas do mestre Carlos Morimoto, as quais soma-se algumas coletadas aqui mesmo no VOL.

Perdoem-me pela falta de referência quanto aos autores, mas a base do script é o kurumin-firewall, apenas adaptei-o às minhas necessidades.
Para utilizar o Squid, presumo que aquele que utilizar este script saiba como configurá-lo, senão os artigos abaixo oferecem uma boa base de como fazê-lo:
No script há as regras para as portas usadas pelo aMule e Transmission e BitTorrent, para aqueles que não usam, basta desativá-las ou removê-las.

O script é chamado ip-guardian, salve-o como quiser, depois siga os seguintes passos. Substitua <script> pelo nome correspondente:

sudo mv <script> /etc/init.d/
$ sudo chmod +x /etc/init.d/<script>
$ sudo /etc/init.d/<script> start


Rode o comando abaixo para verificar o status:

sudo /etc/init.d/<script> status

Outra dica interessante é instalar o pacote rcconf, para que o mesmo configure o script para rodar em todos os runlevels:

sudo apt-get install rcconf & sudo rcconf

Ao abrir o programa, selecione o script que o rcconf se encarrega do resto, se quiserem fazer na unha, basta:

sudo ln -sf /etc/init.d/<script> /etc/rc1.d/S20<script>
$ sudo ln -sf /etc/init.d/<script> /etc/rc2.d/S20<script>
$ sudo ln -sf /etc/init.d/<script> /etc/rc3.d/S20<script>
$ sudo ln -sf /etc/init.d/<script> /etc/rc4.d/S20<script>
$ sudo ln -sf /etc/init.d/<script> /etc/rc5.d/S20<script>
$ sudo ln -sf /etc/init.d/<script> /etc/rc6.d/K20<script>


Agora vamos testar a eficácia do mesmo acessando o site:
Na primeira tela clique em "Proceed", depois em "Enviar" e na tela que abrir clique "All Service Ports".

Ao término, todo o gráfico deve ficar verde, sinal que todas as portas estão fechadas (stealth).

Segue abaixo o conteúdo do script:

#!/bin/sh
#ip-guardian

echo ""
uname -s -r -m -o
echo ""
echo " Script de configuração do Firewall Iptables"
echo ""

echo " ========================================================="
echo " Para testar a funcionalidade do firewall, acesse: https://www.grc.com/x/ne.dll?bh0bkyd2 "
echo ""
echo " Clique em Proceed > Enviar > All Service Ports."
echo ""
echo " Ao término, todo o gráfico deve ficar verde, sinal que todas as portas estão fechadas"
echo " ========================================================="
echo ""

firewall_start(){

echo ""
echo " Iniciando as Regras do Firewall ..............."
echo ""

echo " Definindo Política Padrão ..............."
echo ""

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

echo " Limpando as Regras Anteriores .......... [ OK ]"
echo ""

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F

echo " Ativando o Proxy Transparente SQUID .......... [ OK ]"
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

echo " Ativando o IP forward .......... [ OK ]"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo " Protegendo contra Pings ( ignorando ) .......... [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo " Protegendo contra IP spoofing .......... [ OK ]"
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo " Protegendo contra diversos ataques .......... [ OK ]"
echo 1 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo " Protegendo contra bogus responses .......... [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo " Protegendo contra IP synflood .......... [ OK ]"
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

echo " Protegendo contra ICMP Broadcasting .......... [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo " Protegendo contra alteração de rota .......... [ OK ]"
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

echo " Protegendo contra Pings da Morte .......... [ OK ]"
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

echo " Protegendo contra traceroute .......... [ OK ]"
iptables -A INPUT -p udp --dport 33435:33525 -j LOG --log-prefix "_BLOCKED_: "
iptables -A INPUT -p udp --dport 33435:33525 -j DROP

echo " Protegendo contra portscanners, ping of death, ataques DoS, etc. .......... [ OK ]"
iptables -A INPUT -m state --state INVALID -j LOG --log-prefix "_BLOCKED_: "
iptables -A INPUT -m state --state INVALID -j DROP

echo " Redirecionando portas DNS e NTP para o SQUID .......... [ OK ]"
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 53 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 123 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

echo " Liberando portas para aMule e Transmission ( p2p ) .......... [ OK ]"
iptables -A INPUT -m multiport -p tcp --dport 4661,4662,51413 -j ACCEPT
iptables -A INPUT -m multiport -p udp --dport 4665,4672 -j ACCEPT

echo " Fechando portas UDP 1:1024 .......... [ OK ]"
iptables -A INPUT -p udp --dport 1:1024 -j LOG --log-prefix "_BLOCKED_UDP_: "
iptables -A INPUT -p udp --dport 1:1024 -j DROP

echo " Permitindo apenas respostas a conexões iniciadas pela máquina .......... [ OK ]"
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

echo " Liberando a interface de loopback .......... [ OK ]"
iptables -A INPUT -i lo -j ACCEPT

echo " Bloqueando qualquer conexão que não tenha sido permitida acima .......... [ OK ]"
iptables -A INPUT -p tcp --syn -j LOG --log-prefix "_BLOCKED_: "
iptables -A INPUT -p tcp --syn -j DROP

echo " Firewall em operação .......... [ OK ]"
sleep 1

}

firewall_stop(){

iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

}

case "$1" in

"start")
firewall_start
;;

"stop")
firewall_stop
echo " Desativando todas as Regras do Firewall .......... [ OK ]"
sleep 1
;;

status)
echo -e " ============================== Table Filter ============================ ";
iptables -t filter -L -n
echo -e " ============================== Table Nat ============================= ";
iptables -t nat -L -n
echo -e " ============================== Table Mangle =========================== ";
iptables -t mangle -L -n
echo -e " ============================== Table Raw ============================ ";
iptables -t raw -L -n
;;

"restart")
echo " Reativando todas as Regras do Firewall .......... [ OK ]"
sleep 1
firewall_stop; firewall_start
;;

*)
iptables -L -n

esac

Outras dicas deste autor

Archey, Bash Info Tool

Convertendo arquivos PDF para TXT

Wallpapers para Arch Linux

Pesquisa de arquivos e executáveis em pacotes .deb

Obtendo os sources do kernel estável 'automagicamente'

Leitura recomendada

Debian 12 - IPTABLES - removendo NFTABLES

Série de Webinars - Auditoria de Segurança em Aplicações WEB

Criador de perfil falso

Ncat com SSL

fwbuilder - interface gráfica para iptables

  

Comentários
[1] Comentário enviado por carlaodopao em 14/10/2009 - 22:21h

Grande cara.
Meu primeiro firewall.
Concordo com qqer um q diga q era vergonhoso usar o linux e não ter um firewall.
Ficarei com o teu pois ainda não tenho a menor noção de como eles funcionam...
Beleza?
Beleza.
Valeu.

[2] Comentário enviado por removido em 17/10/2009 - 22:39h

Firewall preparado para enfrentar ataques.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts