Firewall (Iptables + Squid) no Debian Squeeze

Publicado por edps em 08/10/2009

[ Hits: 28.518 ]

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

PepperFlash no Debian 32Bits

Fontes para Conky

Debian - Kernel 2.6.33 com patch de Con Kolivas

MOC (Music On Console)

Usando um arquivo como memória SWAP

Leitura recomendada

Travando arquivos

Quebrando senha de root

IPCop Firewall de rede grátis

Utilizando o nmap para descobrir versão dos serviços

Falando sobre Pentesting (teste de invasão)

  

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