rodrigoh79
(usa Debian)
Enviado em 14/10/2010 - 22:42h
Galera, parece que vai funcionar agora. Esta noite dei uma enxugada no firewall, e ficou funcionando. Vou ver como se comportará amanhã. O script ficou assim:
echo "----------------------------------"
echo "iniciando configuração do Firewall"
echo "----------------------------------"
sleep 3
# --------------Ativa Modulos-----------------------------------------
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
modprobe ipt_LOG
modprobe ipt_limit
modprobe ipt_state
modprobe ipt_REDIRECT
modprobe ipt_owner
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# ------------Zera regras-------------------------------------------
iptables -F
iptables -Z
iptables -X
iptables -t nat -F
# -------------Determina a politica padrao------------------------------------------
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# --------------Ativa roteamento no kernel-----------------------------------------
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# --------------Abre para a interface de loopback.--------------------
iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
# --------------Libera o HTTP-----------------------------------------
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# --------------DNS - Libera a resolucao de nomes----------------------
iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT
# --------------Mascaramento de rede para acesso externo---------------
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# --------------Redirencionar portas 80 para 3128----------------------
iptables -A INPUT -p tcp -i eth1 --dport 3128 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
## Liberando porta 443 do Squid (sem isso não funciona orkut, hotmail, etc)
## não adianta redirecionar a porta 443 para a 3128, pois https não funciona
## com Squid transparente.
# -------------------------------------------------------
iptables -A FORWARD -i eth1 -p tcp --dport 443 -j ACCEPT
# -------------Libera a conexao para a rede interna----------------------
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# --------------Abre para uma faixa de endereco da rede local--------------
iptables -A INPUT -p tcp --syn -i eth1 -j ACCEPT
# --------------Abre rede-----------------------------------------------
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A INPUT -i ppp0 -j ACCEPT
iptables -A OUTPUT -o ppp0 -j ACCEPT
# -------------Libera o MSN---------------------------------------------
iptables -A INPUT -p tcp --dport 1863 -j ACCEPT
# -------------Terminal Server------------------------------------------
iptables -A INPUT -p tcp --dport 3389 -j ACCEPT
iptables -A FORWARD -i eth1 -p tcp --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 3389 -j DNAT --to 10.1.1.150
#iptables -t nat -A POSTROUTING -d 10.1.1.150 -j SNAT --to 10.1.1.1
# -------------VNC------------------------------------------
#iptables -A INPUT -p tcp --dport 5900 -j ACCEPT
#iptables -A INPUT -p tcp --dport 5800 -j ACCEPT
# -------------Liberando SSH------------------------------------------
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
## Libera o POP SMTP
# -------------------------------------------------------
#iptables -A INPUT -p tcp --dport 25 -j ACCEPT #SMTP
#iptables -A INPUT -p tcp --dport 110 -j ACCEPT #POP
#iptables -A INPUT -p tcp --dport 465 -j ACCEPT #SMTP
#iptables -A INPUT -p tcp --dport 587 -j ACCEPT #SMTP
#iptables -A INPUT -p tcp --dport 995 -j ACCEPT #POP
# Protecao contra port scanners
# -------------------------------------------------------
iptables -N SCANNER
iptables -A SCANNER -m limit --limit 5/m -j LOG --log-level 6 --log-prefix "FIREWALL: port scanner: "
iptables -A SCANNER -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -i ppp0 -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL NONE -i ppp0 -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL ALL -i ppp0 -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i ppp0 -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i ppp0 -j SCANNER
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i ppp0 -j SCANNER
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i ppp0 -j SCANNER
# ----------------Protecao contra tronjans-----------------------------------
iptables -N TROJAN
iptables -A TROJAN -m limit --limit 5/m -j LOG --log-level 6 --log-prefix "FIREWALL: trojan: "
iptables -A TROJAN -j DROP
iptables -A INPUT -p tcp -i ppp0 --dport 666 -j TROJAN
iptables -A INPUT -p tcp -i ppp0 --dport 666 -j TROJAN
iptables -A INPUT -p tcp -i ppp0 --dport 4000 -j TROJAN
iptables -A INPUT -p tcp -i ppp0 --dport 6000 -j TROJAN
iptables -A INPUT -p tcp -i ppp0 --dport 6006 -j TROJAN
iptables -A INPUT -p tcp -i ppp0 --dport 16660 -j TROJAN
# Protecao contra trinoo
# -------------------------------------------------------
iptables -N TRINOO
iptables -A TRINOO -m limit --limit 5/m -j LOG --log-level 6 --log-prefix "FIREWALL: trinoo: "
iptables -A TRINOO -j DROP
iptables -A INPUT -p tcp -i ppp0 --dport 1524 -j TRINOO
iptables -A INPUT -p tcp -i ppp0 --dport 27444 -j TRINOO
iptables -A INPUT -p tcp -i ppp0 --dport 27665 -j TRINOO
iptables -A INPUT -p tcp -i ppp0 --dport 31335 -j TRINOO
iptables -A INPUT -p tcp -i ppp0 --dport 34555 -j TRINOO
iptables -A INPUT -p tcp -i ppp0 --dport 35555 -j TRINOO
##Negar Ident
# -------------------------------------------------------
iptables -A INPUT -p tcp -m tcp --dport 113 -j REJECT --reject-with tcp-reset
## Reset em conexoes para portas desconhecidas
# ---------------------------------------------------------
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
## Esta regra e coracao do firewall
# -------------------------------------------------------
iptables -A INPUT -p tcp --syn -j DROP
echo "----------------------------------"
echo "Firewall configurado com sucesso!"
echo "----------------------------------"
sleep 1
Mas ainda fiquei com uma dúvida. Alguns de vcs me alertaram que as linhas abaixo estavam deixando meu INPUT e FORWARD como ACCEPT. Removi essas linhas mas aí as estações ficam sem acesso à internet.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
Tem alguma outra forma de modificar de forma que fique mais seguro? Ainda vou ver amanhã como se comporta o firewall. E ainda tenho que ajustar para acesso à alguns bancos, tenho que configurar para acessar o conectividade social. Grato a todos que ajudaram. Vamos ver se segue funcionando.