Bem, o meu problema é o seguinte: Fiz ( através de pesquisa ) algumas regras em iptables. O meu problema está quando tenho que liberar as conexões já estabelecidas.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
Com isso, se eu retirar a última linha, NADA funciona. Ninguém consegue navegar, mas se eu deixar, TODAS as portas ficam aberta. Neste caso, nenhuma das minhas regras irá funcioná. Alguém tem alguma dica ?
Caso tenham alguma dica para melhorar o script, eu agradeço também!
Parte do firewall
# -----------------------------------------------------------------
# Ativa modulos
# -----------------------------------------------------------------
echo "Ativando modulos"
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ipt_state
modprobe iptable_mangle
modprobe ipt_limit
modprobe ipt_mark
modprobe ipt_MARK
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Limpa TODAS as regras
# -----------------------------------------------------------------
echo "Limpando regras"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Fechar TODAS as portas
# -----------------------------------------------------------------
echo "Fechando todas as portas"
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Politicas de segurança #
# -----------------------------------------------------------------
echo "Implementação de politicas de segurança"
c=/proc/sys/net/ipv4
echo 1 > $c/tcp_syncookies
echo 1 > $c/icmp_echo_ignore_broadcasts
echo 1 > $c/icmp_ignore_bogus_error_responses
echo 1 > $c/ip_dynaddr
for c in /proc/sys/net/ipv4/conf/*; do
echo 0 > $c/accept_redirects
echo 0 > $c/accept_source_route
echo 1 > $c/log_martians
echo 1 > $c/rp_filter
done
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Habilita roteamento
# -----------------------------------------------------------------
echo "Habilitando roteamento"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Habilita PROXY TRANSPARENTE
# -----------------------------------------------------------------
echo "Ativando PROXY Transparent"
iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Ativar o mascaramento
# -----------------------------------------------------------------
echo "Ativando Mascaramento"
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Habilitando o fluxo interno entre os processos
# -----------------------------------------------------------------
echo "Ativando fluxo interno (lo)"
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Liberando conexoes estabelecidas
# -----------------------------------------------------------------
echo "Liberando conexoes estabelecidas"
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Libera o acesso via SSH com limite de 2 tentativas por minuto
# -----------------------------------------------------------------
echo "Liberando SSH com limite de tentativas"
iptables -I INPUT -p tcp --dport 2222 -m state --state NEW -m recent --update --seconds 300 --hitcount 2 -j DROP
iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
iptables -A INPUT -p udp --dport 2222 -j ACCEPT
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Libera o APACHE
# -----------------------------------------------------------------
echo "Liberando o APACHE"
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Libera o SQUID
# -----------------------------------------------------------------
echo "Liberando o SQUID"
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Libera as portas do aquido PORTAS_IN_OUTPUT
# -----------------------------------------------------------------
echo "Liberando Portas IN/OUTPUT"
for i in `cat $PORTASIN`; do
iptables -A INPUT -p tcp --dport $i -j ACCEPT
done
for o in `cat $PORTASOUT`; do
iptables -A OUTPUT -p tcp --sport $o -j ACCEPT
done
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Libera as portas do aquido PORTAS_FORWARD
# -----------------------------------------------------------------
echo "Liberando Portas FORWARD"
for z in `cat $PORTASFOR`; do
iptables -A FORWARD -p tcp --dport $z -j ACCEPT
iptables -A FORWARD -p tcp --sport $z -j ACCEPT
done
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Liberando no-ip (8245)
# -----------------------------------------------------------------
echo "Liberando NO-IP"
iptables -A INPUT -p tcp --dport 8245 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 8245 -j ACCEPT
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Bloqueio de scanners ocultos (Shealt Scan)
# -----------------------------------------------------------------
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
echo "Bloqueando SCANNERS ocultos"
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Bloqueio Anti-Spoofings
# -----------------------------------------------------------------
echo "Ativando bloqueio Anti-spoofings"
iptables -A INPUT -s 10.0.0.0/8 -i $LAN -j DROP
iptables -A INPUT -s 127.0.0.0/8 -i $LAN -j DROP
iptables -A INPUT -s 172.16.0.0/12 -i $LAN -j DROP
iptables -A INPUT -s 192.168.1.0/16 -i $LAN -j DROP
iptables -A INPUT -s 192.168.2.0/16 -i $LAN -j DROP
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Liberando ping
# -----------------------------------------------------------------
echo "Ativando ping"
iptables -A FORWARD -p icmp -j ACCEPT
echo "Carregando .............................. [OK]"
# -----------------------------------------------------------------
# Liberando ping vindo dos clientes internos
# -----------------------------------------------------------------
echo "Ativando ping entre clientes"
iptables -A INPUT -s 192.168.2.0/24 -i $LAN -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -d 192.168.2.0/24 -o $LAN -p icmp --icmp-type echo-reply -j ACCEPT
echo "Carregando .............................. [OK]"
Desde já agradeço!