Diede
(usa Debian)
Enviado em 06/11/2009 - 13:13h
Vamos lá, seu firewall está com regras meio que excludentes:
$IPTABLES -P FORWARD DROP
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
Sua política padrão na FORWARD é DROP, mas na regra seguinte você permite tudo (as possibilidades de state são RELATED, ESTABLISHED, NEW e INVALID, ou seja, exceto um pacote mal formado, todo o resto será permitido)
Se você já permitiu tudo pelo state, não precisa destas regras abaixo:
# Regras para liberar o outlook
$IPTABLES -A FORWARD -p udp -s 10.1.1.0/8 -d 200.175.182.139 --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -p udp -s 200.175.182.139 --sport 53 -d 10.1.1.0/8 -j ACCEPT
$IPTABLES -A FORWARD -p udp -s 10.1.1.0/8 -d 200.175.5.139 --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -p udp -s 200.175.5.139 --sport 53 -d 10.1.1.0/8 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -s 10.1.1.0/8 --dport 25 -j ACCEPT # SMTP
$IPTABLES -A FORWARD -p tcp -s 10.1.1.0/8 --dport 110 -j ACCEPT # POP3
$IPTABLES -A FORWARD -p tcp -s 10.1.1.0/8 --sport 25 -j ACCEPT # SMTP
$IPTABLES -A FORWARD -p tcp -s 10.1.1.0/8 --sport 110 -j ACCEPT # POP3
Bem, seu firewall não tem uma proteção muito boa para spoofing. Nada impede alguém da web de lançar um DoS spoofando o IP para 10.x.x.x.
E... por questões de segurança, é melhor que a regra MASQUERADE seja a última...
Eu recomendo algo assim:
#! /bin/bash
iniciar () {
# Compatilhamento da conexao
IPTABLES=/usr/sbin/iptables
echo 1 > /proc/sys/net/ipv4/ip_forward
# Carregamento de Modulos
modprobe ip_nat_ftp
modprobe iptable_nat
modprobe ip_tables
modprobe ip_conntrack
modprobe ipt_MASQUERADE
modprobe ip_conntrack_ftp
# Limpando as regras
$IPTABLES -F
$IPTABLES -Z
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
echo "Ativando compatilhamento!"
# Politicas de acesso geral
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
# Aceita todo o trafego vindo do loopback e indo pro loopback
$IPTABLES -t filter -A INPUT -i lo -j ACCEPT
########################################################
################ Protecoes contra ataques ##############
########################################################
# Protecao contra o ping da morte
#PS: Ping da morte não é bloqueado pelo tempo entre um e outro. Essa regra seria uma regra fuleira contra um DoS (mas, não funcionaria corretamente). Ping da morte não afeta mais máquinas há pelo menos uns 10 anos
#$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 20/m -j ACCEPT
#$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 20/m -j ACCEPT
#PS: Seu INPUT já é DROP... não precisa desta regra...
# Bloqueando tracertroute
#$IPTABLES -A INPUT -p udp -s 0/0 -i eth0 --dport 33435:33525 -j REJECT
#PS: Invalid não é necessariamente um ataque... e REJECT não ajuda se for, pois a cada pacote sua máquina responderá com um ICMP, o que não ajuda em nada. DROP é melhor neste caso
# Protecao contra ataques
#$IPTABLES -A INPUT -m state --state INVALID -j REJECT
$IPTABLES -A INPUT -m state --state INVALID -j DROP
##########################################################
# Redirecionando o trafego para a porta 3128
$IPTABLES -t nat -A PREROUTING -i eth1 -p tcp -d ! 200.201.174.207 --dport 80 -j REDIRECT --to-port 3128
# Manter conexoes ja estabelecidas para nao parar
#Não entendi. Afinal eth1 é a interface da web ou rede interna??? Na regra acima (da caixa federal), presumi que eth1 fosse a rede interna, mas se o é, por que aceitar tudo menos ela na regra abaixo?
$IPTABLES -A INPUT -i! eth1 -j ACCEPT
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#Habilitar o NEW habilita tudo...
#$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# Regras para liberar o outlook
$IPTABLES -A FORWARD -p udp -s 10.1.1.0/8 -d 200.175.182.139 --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -p udp -s 200.175.182.139 --sport 53 -d 10.1.1.0/8 -j ACCEPT
$IPTABLES -A FORWARD -p udp -s 10.1.1.0/8 -d 200.175.5.139 --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -p udp -s 200.175.5.139 --sport 53 -d 10.1.1.0/8 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -s 10.1.1.0/8 --dport 25 -j ACCEPT # SMTP
$IPTABLES -A FORWARD -p tcp -s 10.1.1.0/8 --dport 110 -j ACCEPT # POP3
#Quem responde com sport 25/110 é o servidor (SMTP ou POP3). Você só precisa desta regra se houver um servidor SMTP/POP na faixa 10.1.1.0/8
#$IPTABLES -A FORWARD -p tcp -s 10.1.1.0/8 --sport 25 -j ACCEPT # SMTP
#$IPTABLES -A FORWARD -p tcp -s 10.1.1.0/8 --sport 110 -j ACCEPT # POP3
# Regras para liberar o FTP
$IPTABLES -A INPUT -p tcp -s 10.1.1.0/8 --dport 20 -j ACCEPT # FTP
$IPTABLES -A INPUT -p tcp -s 10.1.1.0/8 --dport 21 -j ACCEPT # FTP
#Quem responde com sport 20/21 é só o servidor... você não precisa destas regras se não tiver um servidor FTP na faixa 10.1.1.0/8
#$IPTABLES -A INPUT -p tcp -s 10.1.1.0/8 --sport 20 -j ACCEPT # FTP
#$IPTABLES -A INPUT -p tcp -s 10.1.1.0/8 --sport 21 -j ACCEPT # FTP
# INPUT # Pacotes que entram na rede
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT # SSH
$IPTABLES -A INPUT -p tcp --dport 3128 -j ACCEPT # SQUID
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP
$IPTABLES -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS
#$IPTABLES -A INPUT -p tcp --dport 500 -j ACCEPT # HTTP OPOPULAR
# FORWARD # Pacotes que circulam na rede
$IPTABLES -A FORWARD -p tcp --dport 22 -j ACCEPT # SSH
$IPTABLES -A FORWARD -p tcp --dport 8333 -j ACCEPT # HTTP
$IPTABLES -A FORWARD -p tcp --dport 443 -j ACCEPT # HTTPS
$IPTABLES -A FORWARD -s 10.1.1.0/8 -j ACCEPT
#$IPTABLES -t nat -A POSTROUTING -j MASQUERADE
# Mascaramento da rede para acesso externo
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#--------------------------------------------------------------------------------------
echo "Firewall Ativado"
}
parar(){
echo "Regras de firewall e compartilhamento desativados"
iptables -F
iptables -t nat -F
iptables -t mangle -F
}
case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar;;
*)echo "Use os paramentros start ou stop"
esac
PS: eth1 é a interface da rede interna ou da web?
A resposta para esta pergunta pode, eventualmente implicar em mudanças na estrutura do firewall