Iptables (rc.firewall)
Este script libera apenas as portas mais comuns para os usuários da rede interna (80, 21, 22, 25, 110, 443, 53 e 3128). O proxy transparente está ativo, redirecionando toda requisição da porta 80 para a 3128. Todos os demais pacotes serão rejeitados!
#!/bin/bash echo echo "==========================================" echo "| :: SETTING IPTABLES'S CONFIGURATION :: |" echo "==========================================" ### Passo 1: Limpando as regras ### iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD echo "Cleaning all rules .................[ OK ]" # Definindo a Politica Default das Cadeias iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT echo "Setting default rules ..............[ OK ]" ### Passo 2: Desabilitar o trafego IP entre as placas de rede ### echo "0" > /proc/sys/net/ipv4/ip_forward echo "Setting ip_forward: OFF ............[ OK ]" # Configurando a Protecao anti-spoofing for spoofing in /proc/sys/net/ipv4/conf/*/rp_filter; do echo "1" > $spoofing done echo "Setting anti-spoofing protection ...[ OK ]" # Impedimos que um atacante possa maliciosamente alterar alguma rota echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects echo "Setting anti-redirects .............[ OK ]" # Utilizado em diversos ataques, isso possibilita que o atacante determine o "caminho" que seu # pacote vai percorrer (roteadores) ate seu destino. Junto com spoof, isso se torna muito perigoso. echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route echo "Setting anti-source_route ..........[ OK ]" # Protecao contra responses bogus echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses echo "Setting anti-bugus_response ........[ OK ]" # Protecao contra ataques de syn flood (inicio da conexao TCP). Tenta conter ataques de DoS. echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo "Setting anti-synflood protection ...[ OK ]" ### Passo 3: Carregando os modulos do iptables ### modprobe ip_tables modprobe iptable_filter modprobe iptable_mangle modprobe iptable_nat modprobe ipt_MASQUERADE echo "Loading iptables's modules .........[ OK ]" ### Passo 4: Agora, vamos definir o que pode passar e o que nao ### #################### # Cadeia de Entrada # LOCALHOST - ACEITA TODOS OS PACOTES iptables -A INPUT -i lo -j ACCEPT # PORTA 80 - ACEITA PARA A REDE LOCAL iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT # PORTA 22 - ACEITA PARA A REDE LOCAL iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT # No iptables, temos de dizer quais sockets sao validos em uma conexao iptables -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT echo "Setting rules for INPUT ............[ OK ]" ################################ # Cadeia de Reenvio (FORWARD). # Primeiro, ativar o mascaramento (nat). iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo "Activating IP Mask .................[ OK ]" # Agora dizemos quem e o que podem acessar externamente # No iptables, o controle do acesso a rede externa e feito na cadeia "FORWARD" # COMPUTADOR DO CHEFE - ACEITA TODOS OS PACOTES iptables -A FORWARD -s 192.168.3.50 -j ACCEPT # PORTA 3128 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth1 -p tcp --dport 3128 -j ACCEPT # Redireciona porta 80 para 3128 (squid) iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 # PORTA 53 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth1 -p udp --dport 53 -j ACCEPT # PORTA 110 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth1 -p tcp --dport 110 -j ACCEPT # PORTA 25 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth1 -p tcp --dport 25 -j ACCEPT # PORTA 443 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth1 -p tcp --dport 443 -j ACCEPT # PORTA 21 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth1 -p tcp --dport 21 -j ACCEPT # No iptables, temos de dizer quais sockets sao validos em uma conexao iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT echo "Setting rules for FORWARD ..........[ OK ]" # Finalmente: Habilitando o trafego IP, entre as Interfaces de rede echo "1" > /proc/sys/net/ipv4/ip_forward echo "Setting ip_forward: ON .............[ OK ]" echo "Finished!! Firewall: OK! ...........[ OK ]" echo "==========================================" echo