Bom galera gostaria que vcs criticassem meu script
de firewall.
Vou explicar o que eu quis fazer:
Nesse servidor roda
qmail(+acessorios)+apache+squid. Quis fazê-lo o mais restritivo possível e ir
liberando somente o necessário (25, 110, 80 para entrantes e mascarar somente
algumas para a rede)
Segue o script:
------------ INICIO DO SCRIPT
##### POLICY #####
# Tabela filter iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT ACCEPT iptables -t filter -P FORWARD DROP # Tabela nat iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t nat -P POSTROUTING ACCEPT ##### Ativamos o redirecionamento de pacotes
(requerido para NAT) #####
echo "1" >/proc/sys/net/ipv4/ip_forward ##### Abaixar o limite de conexoes
simultaneas
echo "2048" > /proc/sys/net/ipv4/ip_conntrack_max ###############################################################
# Tabela filter # ############################################################### ##### Chain INPUT ##### # Criamos um chain que será usado para tratar o tráfego vindo da Internet iptables -N int-input # Aceita todo o tráfego vindo do loopback e indo pro loopback iptables -A INPUT -i lo -j ACCEPT # Todo tráfego vindo da rede interna também é aceito iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT # Conexões vindas da interface eth1 são tratadas pelo chain int-input iptables -A INPUT -i eth1 -j int-input # Outras conex sao bloqueadas
iptables -A INPUT -j DROP ##### Chain FORWARD ####
# Permite redirecionamento de conexões entre as interfaces locais # especificadas abaixo. Qualquer tráfego vindo/indo para outras # interfaces será bloqueado neste passo. iptables -A FORWARD -d 192.168.0.0/24 -i eth1 -o eth0 -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o eth1 -j ACCEPT iptables -A FORWARD -j DROP ##### Chain int-input ####
# Aceitamos todas as mensagens icmp vindas de eth1 com certa limitação # O tráfego de pacotes icmp que superar este limite será bloqueado # pela regra "...! ESTABLISHED,RELATED -j DROP" no final do # chain int-input iptables -A int-input -p icmp -j ACCEPT # Primeiro aceitamos o tráfego vindo da Internet para as portas 80, 110, 25 iptables -A int-input -p tcp --dport 80 -j ACCEPT iptables -A int-input -p tcp --dport 110 -j ACCEPT iptables -A int-input -p tcp --dport 25 -j ACCEPT # Bloqueia qualquer tentativa de nova conexão de
fora para esta máquina
iptables -A int-input -m state --state ! ESTABLISHED,RELATED -j DROP # Aceita outros tipos de trafego
iptables -A int-input -j ACCEPT ####################################################### # Tabela nat # ####################################################### # Redir do SQUID iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 # Ativando mascaramento para determinadas portas
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p icmp -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 110 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 25 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 80 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 3128 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p udp --dport 53 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p udp --dport 53 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport https -j MASQUERADE ------------------ FIM DO SCRIPT
Minhas dúvidas:
1) A policy [iptables -t nat -P POSTROUTING ACCEPT ] deixa o firewall
muito peneira? tentei deixar em DROP e liberar somente algumas coisas mas
parecia que dava conflitos de regras.
2) Por que, se eu liberei somente algumas portas para masquerade, o msn
continua funcionando? (pensei que talvez o maldito funcione em porta 80, caso
nao encontre sua porta específica)
3) O firewall está realmente restritivo? Ou está uma merda? hehe
Não tenho muita experiência em segurança, mas li muito a respeito pra
tentar fazer o melhor possível (guia foca - iptables, google com vários exemplos
de scripts) porém, precisava da opinião de vocês e de uma ajuda pra dar uma
melhorada já que muitos têm uma experiência grande nisso.
Obrigado!!
|