Pessoal, encontrei esse script de firewall na internet e gostaria de saber se ele irá funcionar de acordo, tem algumas linhas que nao entendi, meio complicado.Aparenta que ele parte do presuposto de bloquear tudo e depois de liberar os serviços.
Quem puder dar uma olhada eu agradeço...
Abraços
André
=== meu script para montar meu firewall ===
#!/bin/bash
# PAREDAO - Script simples para habilitar firewall para computador
# com acesso via PPP a internet.
# de Pedro, 25-12-2003 18:23
. /etc/cores.conf
# Minha rede interna...
REDE="10.0.0.0/8"
# Interface (Placa de rede) da minha rede interna...
IFACE="eth0"
msg(){
if [ "$1" == "LOG" ]; then
logger -p auth.debug -t paredao "$2"
echo -e $VERDE"$2"$SEMCOR
else
echo -e $CIANO"$2"$SEMCOR
fi
}
carregar() {
AUX=`lsmod | grep $1`
if [ "$AUX" = "" ]; then
echo -e $CIANO"Carregando modulo $1..."$SEMCOR
$MODPROBE $1
fi
}
# Definir o PATH de busca padrao para o script...
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin
AUX=`type -p modprobe`
if [ "$AUX" == "" ]; then
msg "LOG" "ERRO: modprobe nao foi encontrado."
exit 0
else
MODPROBE=$AUX
fi
# Carregar modulo do kernel para suportar coneccoes FTP...
carregar "ip_conntrack_ftp"
# Verificar se o iptables se encontra no recinto...
AUX=`type -p iptables`
if [ "$AUX" == "" ]; then
msg "LOG" "ERRO: iptables nao foi encontrado."
exit 1
else
IPTABLES=$AUX
fi
# Comecar com uma mensagem para informar que estamos vivos !
msg "LOG" "Inicializando o firewal..."
# Iniciando o servico sujo, inicializado o firewall...
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -t nat -X
# Definindo politica padrão de DITADURA ! ninguém passa !
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
# Informar mais coisas...
msg "LOG" "Ajustando opcoes do kernel..."
# Ligando protecao do kernel para IP spoof...
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null
# Ajustando configuracao de TCP timestamps...
echo 1 > /proc/sys/net/ipv4/tcp_timestamps 2> /dev/null
# Habilitando protecao TCP SYN Cookie...
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route 2> /dev/null
# Habilitar log de marcianos...
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians 2> /dev/null
echo 1 > /proc/sys/net/ipv4/conf/default/log_martians 2> /dev/null
# Habilitando IP Dinamico...
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
# Habilitando trabalho normal do Loopback...
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# Relatar os progressos...
msg "LOG" "Definindo as regras do firewall, se segurem !"
# Criar chains para lidar com o trabalho sujo...
# Regra para os pacotes descartados...
$IPTABLES -N descartado2
$IPTABLES -A descartado2 -j LOG --log-prefix "DESCARTADO " --log-level debug
--log-ip-options --log-tcp-options --log-tcp-sequence
$IPTABLES -A descartado2 -j DROP
$IPTABLES -N descartado
$IPTABLES -A descartado -j descartado2
# Regra para pacotes rejeitados oficialmente...
$IPTABLES -N rejeitado2
$IPTABLES -A rejeitado2 -p tcp -j REJECT --reject-with tcp-reset
$IPTABLES -A rejeitado2 -p udp -j REJECT --reject-with icmp-port-unreachable
$IPTABLES -A rejeitado2 -j DROP
$IPTABLES -N rejeitado
$IPTABLES -A rejeitado -j rejeitado2
# Regra para pacotes abortados...
$IPTABLES -N abortado2
$IPTABLES -A abortado2 -j LOG --log-prefix "ABORTADO " --log-level debug
--log-ip-options --log-tcp-options --log-tcp-sequence
$IPTABLES -A abortado2 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -N abortado
$IPTABLES -A abortado -m limit --limit 1/second --limit-burst 10 -j abortado2
$IPTABLES -A abortado -m limit --limit 2/minute --limit-burst 1 -j LOG
--log-prefix "LIMITADO " --log-level debug
# Criar chains para trabalhar com diferentes protocolos...
$IPTABLES -N PACOTES_TCP
$IPTABLES -N PACOTES_TCP_ENTRADA
$IPTABLES -N PACOTES_TCP_SAIDA
$IPTABLES -N PACOTES_UDP
$IPTABLES -N PACOTES_UDP_ENTRADA
$IPTABLES -N PACOTES_UDP_SAIDA
$IPTABLES -N PACOTES_ICMP
#################################################
# Criar conteudo das regras do filtro PACOTES_TCP
# Relatar coneccoes abortadas...
$IPTABLES -A PACOTES_TCP -m state --state ESTABLISHED,RELATED -p tcp
--tcp-flags RST RST -j abortado
# Permitir o transito de pacotes de coneccoes estabelecidas primeiro pelo meu
computador...
$IPTABLES -A PACOTES_TCP -m state --state ESTABLISHED,RELATED -p tcp -j ACCEPT
#########################################################
# Criar conteudo das regras do filtro PACOTES_TCP_ENTRADA
# Chama a regra basica, oque não passar vai pro inferno... (DROP)
# Permitir comunicação com a rede interna na rede ip definida em REDE...
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp -s $REDE -i $IFACE -j ACCEPT
# POP3: Permitir handshaking com o servidor POP remoto...
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --sport 1024:65535 --dport 110:110 -m
state --state NEW -j ACCEPT
# ICQ: Permitir comunicação TCP com servidor/cliente de ICQ...
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --sport 1024:65535 --dport 4000:4000
-m state --state NEW -j ACCEPT
# eMULE: Permitir comunicação de servidor eMULE...
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --sport 1024:65535 --dport 4010:4010
-m state --state NEW -j ACCEPT
# MSNMESSENGER: Permitir pacotes para iniciar comunicação com
cliente/servidor MsnMessenger...
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --sport 1024:65535 --dport 1863:1863
-m state --state NEW -j ACCEPT
# Mandar pro inferno portscans em tcp...
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-flags ALL FIN,URG,PSH -j
abortado
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-flags SYN,RST SYN,RST -j
abortado
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-flags SYN,FIN SYN,FIN -j
abortado
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-option 64 -j abortado
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-option 128 -j abortado
# Evitar portscanners ocultos...
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-flags SYN,ACK,FIN,RST
SYN,ACK,FIN -m limit --limit 1/s -j ACCEPT
# Evitar ataques SYN-FLOOD
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp -m limit --limit 1/s -j ACCEPT
# Regras adicionais para entrads TCP devem vir aqui...
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp -j PACOTES_TCP
# Por fim qualquer pacote que nao se encaixa na regras previas é mandado pro
inferno...
$IPTABLES -A PACOTES_TCP_ENTRADA -p tcp -j descartado
#######################################################
# Criar conteudo das regras do filtro PACOTES_TCP_SAIDA
# Permitir comunicação com a rede interna na rede ip definida em REDE...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp -d $REDE -o $IFACE -j ACCEPT
# POP3: Permitir coneccao da maquina atual para a porta 110 de um servidor
remoto...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 110:110 -m
state --state NEW -j ACCEPT
# SMTP: Permitir coneccao da maquina atual para a porta 25 de um servidor
remoto...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 25:25 -m state
--state NEW -j ACCEPT
# DNS: Permitir a troca de informacoes entre a maquina atual e o servidor de
DNS...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 53:53 -m state
--state NEW -j ACCEPT
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 53:53 -j ACCEPT
# HTTP: Permitir que a maquina local se comunique com um servidor remoto na
porta tcp:80...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 1024:65535 --dport 80:8085 -m
state --state NEW -j ACCEPT
# HTTPS: Permitir que a maquina local se comunique com um servidor remoto
SEGURO na porta tcp:443...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 443:443 -m
state --state NEW -j ACCEPT
# FTP: Permitir que a maquina local se comunique com um servidor remoto na
porta tcp:21...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 21:21 -m state
--state NEW -j ACCEPT
# ICQ: Permitir saida de dados via TCP para comunicação com cliente/servidor
de ICQ...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 1024:65535 --dport 5190:5190 -m
state --state NEW -j ACCEPT
# eMULE: Permitir comunicação/saida para cliente/servidor eMULE...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 4010:4010 --dport 4000:4900 -m
state --state NEW -j ACCEPT
# MSGMESSENGER:
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 1024:65535 --dport 1863:1863 -m
state --state NEW -j ACCEPT
# Aplicar regra generica para pacotes TCP que saem...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp -j PACOTES_TCP
# Por fim qualquer pacote que nao se encaixa na regras previas é mandado pro
inferno...
$IPTABLES -A PACOTES_TCP_SAIDA -p tcp -j descartado
#################################################
# Criar conteudo das regras do filtro PACOTES_UDP
# Permitir o transito de pacotes de coneccoes estabelecidas primeiro pelo meu
computador...
$IPTABLES -A PACOTES_UDP -m state --state ESTABLISHED,RELATED -p udp -j ACCEPT
#########################################################
# Criar conteudo das regras do filtro PACOTES_UDP_ENTRADA
# Chama a regra basica, oque não passar vai pro inferno... (DROP)
# Regras adicionais para entrads UPD devem vir aqui...
# Permitir comunicação com a rede interna na rede ip definida em REDE...
$IPTABLES -A PACOTES_UDP_ENTRADA -p udp -s $REDE -i $IFACE -j ACCEPT
# ICQ: Permitir inicio de comunicação com servidor remoto ICQ...
$IPTABLES -A PACOTES_UDP_ENTRADA -p udp --sport 0:65535 --dport 4000:4000 -j
ACCEPT
# eMULE: Permitir comunicação UDP com servidor/cliente eMULE...
$IPTABLES -A PACOTES_UDP_ENTRADA -p udp --sport 1024:65535 --dport 4020:4020
-j ACCEPT
# Aplicacao de regras genericas para pacotes UDP...
$IPTABLES -A PACOTES_UDP_ENTRADA -p udp -j PACOTES_UDP
# Por fim qualquer pacote que nao se encaixa na regras previas é mandado pro
inferno...
$IPTABLES -A PACOTES_UDP_ENTRADA -p udp -j descartado
#######################################################
# Criar conteudo das regras do filtro PACOTES_UDP_SAIDA
# Permitir comunicação com a rede interna na rede ip definida em REDE...
$IPTABLES -A PACOTES_UDP_SAIDA -p udp -d $REDE -o $IFACE -j ACCEPT
$IPTABLES -A PACOTES_UDP_SAIDA -p udp -j PACOTES_UDP
# DNS: Permitir a troca de informacoes entre a maquina atual e o servidor de
DNS...
$IPTABLES -A PACOTES_UDP_SAIDA -p udp --sport 0:65535 --dport 53:53 -j ACCEPT
# eMULE: Permitir comunicação de saida via UDP para protocolo eMULE...
$IPTABLES -A PACOTES_UDP_SAIDA -p udp --sport 4020:4020 --dport 1024:65535 -m
state --state NEW -j ACCEPT
# HTTPS: Permitir que a maquina local se comunique com um servidor remoto
SEGURO na porta udp:443...
$IPTABLES -A PACOTES_UDP_SAIDA -p udp --sport 0:65535 --dport 443:443 -m
state --state NEW -j ACCEPT
# Por fim qualquer pacote que nao se encaixa na regras previas é mandado pro
inferno...
$IPTABLES -A PACOTES_UDP_SAIDA -p udp -j descartado
#####################################################
# Criar conteudo das regras do filtro PACOTES_ICMP...
$IPTABLES -A PACOTES_ICMP -p icmp --icmp-type destination-unreachable -j
ACCEPT
$IPTABLES -A PACOTES_ICMP -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A PACOTES_ICMP -p icmp --icmp-type parameter-problem -j ACCEPT
# Evitar os pings da morte...
$IPTABLES -A PACOTES_ICMP -p icmp --icmp-type echo-request -m limit --limit
1/s -j ACCEPT
$IPTABLES -A PACOTES_ICMP -p icmp -s $REDE -j ACCEPT
# MASQUERADE: Destino para pacotes descartados na tabela NAT...
$IPTABLES -t nat -N descart-nat
$IPTABLES -t nat -A descart-nat -j LOG --log-prefix "DESCARTADO-NAT "
--log-level debug --log-ip-options --log-tcp-options --log-tcp-sequence
$IPTABLES -t nat -A descart-nat -j DROP
# Todos pacotes da rede 10.0.0.* que não forem de nossa interface
# de rede, configurada para 10.0.0.1, serão enviados pro inferno...
$IPTABLES -t nat -A PREROUTING -s $REDE -i ! $IFACE -j descart-nat
# Teste para o funcionamento do proxy transparente com squid...
$IPTABLES -t nat -A PREROUTING -s $REDE -i $IFACE -p tcp --dport 80 -j
REDIRECT --to-port 3128
# Tentar o mesmo para comunicação via FTP...
$IPTABLES -t nat -A PREROUTING -s $REDE -i $IFACE -p tcp --dport 21 -j
REDIRECT --to-port 3128
# MASQUERADE: Permitir que a rede 10.0.0.* acesse a internet sempre
# passando por todas regras do firewall antes...
$IPTABLES -t nat -A POSTROUTING -s $REDE -o ppp0 -j MASQUERADE
# Habilitando o Masquerade SNAT...
echo "1" > /proc/sys/net/ipv4/ip_forward
# Classificar as entradas entre os chains principais...
# Classificar pelos pacotes TCP...
$IPTABLES -A INPUT -p tcp -j PACOTES_TCP_ENTRADA
$IPTABLES -A OUTPUT -p tcp -j PACOTES_TCP_SAIDA
$IPTABLES -A FORWARD -i $IFACE -j ACCEPT
$IPTABLES -A FORWARD -p tcp -j PACOTES_TCP
# Classificar pelos pacotes UDP...
$IPTABLES -A INPUT -p udp -j PACOTES_UDP_ENTRADA
$IPTABLES -A OUTPUT -p udp -j PACOTES_UDP_SAIDA
$IPTABLES -A FORWARD -p udp -j PACOTES_UDP
# Classificar pelos pacotes ICMP...
$IPTABLES -A INPUT -p icmp -j PACOTES_ICMP
$IPTABLES -A OUTPUT -p icmp -j PACOTES_ICMP
$IPTABLES -A FORWARD -p icmp -j PACOTES_ICMP
# TOS: Ajusta o TOS do pacote IP para Minimizar retardo no transporte...
$IPTABLES -t mangle -A POSTROUTING -p tcp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A POSTROUTING -p udp -j TOS --set-tos Minimize-Delay
# Relatar o fim do servico sujo...
msg "LOG" "Configuracao do firewall finalizada..."
=== fim do meu script para montar meu firewall ===