Resposta de
Douglas Santos em 02/04/2007 - 09:43h:
* Douglas Santos usa Conectiva
* Douglas Santos tem conceito: nenhum voto.
#!/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 ]"
# Proteção contra ping
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
#echo "Setting anti-ping ..................[ 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
#Porta 5005 - Aceita para REDE LOCAL
#iptables -A INPUT -i eth1 -p tcp --dport 5005 -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.0.99 -j ACCEPT
#iptables -A FORWARD -s 192.168.0.12 -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
# Redireciona porta 25 para Servidor Dourado
# Porta 5005 aceita para rede local
#iptables -A FORWARD -i eth1 -p udp --dport 5005 -j ACCEPT
# PORTA 53 - ACEITA PARA A REDE LOCAL
#iptables -A FORWARD -i eth1 -p udp --dport 53 -j ACCEPT
#iptables -A FORWARD -i eth1 -p udp --dport 4889 -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
# Bloqueando Yahoo Messenger
#iptables -A FORWARD -d cs.yahoo.com -j REJECT
# Bloqueando MSN MESSENGER
#iptables -A FORWARD -s 192.168.0.1/24 -p tcp --dport 1863 -j REJECT
#iptables -A FORWARD -s 192.168.0.1/24 -d loginnet.passport.com -j REJECT
#BLOQUEANDO ORKUT
# Bloquando Usuarios.
#iptables -t nat -A PREROUTING -p tcp -s 192.168.0.99 --dport 80 -j DNAT --to-dest 192.168.0.1
# Bloqueando Kazaa
#iptables -A FORWARD -d 213.248.112.0/24 -j REJECT
#iptables -A FORWARD -p TCP --dport 1214 -j REJECT
# Bloqueando IMesh
#iptables -A FORWARD -d 216.35.208.0/24 -j REJECT
# Bloqueando o Ares
#iptables -A FORWARD -s 10.0.0.0/24 -i eth1 -p udp --dport 4662 -j DROP
# Liberação de portas necessarias para REDE IURD-RR
iptables -t nat -A PREROUTING -p tcp -m multiport --dport 20,21,22,23,25,72,80,53,110,443,3128,1863,3456 -j ACCEPT
# Maquinas com portas liberadas "acesso full"
# Maquina Usuarios Liberados
iptables -t nat -A PREROUTING -p tcp -s 192.168.0.99 -j ACCEPT
iptables -t nat -A PREROUTING -p udp -s 192.168.0.99 -j ACCEPT
#iptables -t nat -A PREROUTING -p tcp -s 192.168.0.11 -j ACCEPT
#iptables -t nat -A PREROUTING -p udp -s 192.168.0.11 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -s 192.168.0.12 -j ACCEPT
iptables -t nat -A PREROUTING -p udp -s 192.168.0.12 -j ACCEPT
#iptables -t nat -A PREROUTING -p tcp -s 192.168.0.13 -j ACCEPT
#iptables -t nat -A PREROUTING -p udp -s 192.168.0.13 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -s 192.168.0.14 -j ACCEPT
iptables -t nat -A PREROUTING -p udp -s 192.168.0.14 -j ACCEPT
#
# Bloqueia todas as portas
iptables -t nat -A PREROUTING -p ALL -j DROP
# 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 "Douglas Santos......................[ OK ]"
echo "=========================================="
echo