Sunteți pe pagina 1din 5

Firewall rpido e seguro com iptables

Autor: Ricardo Jacomel <ricardo at jacomel.com.br>


Data: 27/07/2004
Introduo
Neste artigo mostrarei um script de firewall utilizando iptables com regras que julgo necessrias para a
segurana da sua rede, alm de opes de NATs, proxy transparente, logs, etc.
A configurao do meu servidor a seguinte:
Ambiente testado:
Distro: Fedora Core 2

A mquina possui 2 interfaces de rede:


Intranet: eth1 - 10.0.0.0/24
ADSL: eth0 - 192.168.200.1/24 - GW: 192.168.200.254

Neste exemplo todo o trfego da minha rede sai para a internet atravs do gateway (roteador)
192.168.200.254, passando antes pelo meu firewall.
Abaixo segue o script detalhado e comentado. Provavelmente voc s precisar alterar o contedo das
variveis IF_EXTERNA e IF_INTERNA, correspondente s interfaces do seu firewall e mais no final do
script as regras que tratam de possveis NATs, proxy transparente, etc. Estas regras esto comentadas:
#!/bin/sh
# Variveis
# ------------------------------------------------------iptables=/sbin/iptables
IF_EXTERNA=eth0
IF_INTERNA=eth1

# Ativa mdulos
# ------------------------------------------------------/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp

/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE

# Ativa roteamento no kernel


# ------------------------------------------------------echo "1" > /proc/sys/net/ipv4/ip_forward

# Proteo contra IP spoofing


# ------------------------------------------------------echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

# Zera regras
# ------------------------------------------------------$iptables -F
$iptables -X
$iptables -F -t nat
$iptables -X -t nat
$iptables -F -t mangle
$iptables -X -t mangle

# Determina a poltica padro


# ------------------------------------------------------$iptables -P INPUT DROP
$iptables -P OUTPUT DROP
$iptables -P FORWARD DROP

#################################################
# Tabela FILTER
#################################################

# Dropa pacotes TCP indesejveis


# ------------------------------------------------------$iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-level 6 --log-prefix
"FIREWALL: NEW sem syn: "
$iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

# Dropa pacotes mal formados


# ------------------------------------------------------$iptables -A INPUT -i $IF_EXTERNA -m unclean -j LOG --log-level 6 --log-prefix "FIREWALL: pacote
mal formado: "
$iptables -A INPUT -i $IF_EXTERNA -m unclean -j DROP

# Aceita os pacotes que realmente devem entrar


# ------------------------------------------------------$iptables -A INPUT -i ! $IF_EXTERNA -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

# Proteo contra trinoo


# ------------------------------------------------------$iptables -N TRINOO
$iptables -A TRINOO -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trinoo: "
$iptables -A TRINOO -j DROP
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27444 -j TRINOO
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27665 -j TRINOO
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 31335 -j TRINOO
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 34555 -j TRINOO
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 35555 -j TRINOO

# Proteo contra tronjans


# ------------------------------------------------------$iptables -N TROJAN
$iptables -A TROJAN -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trojan: "
$iptables -A TROJAN -j DROP
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 4000 -j TROJAN
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6000 -j TROJAN
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6006 -j TROJAN
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 16660 -j TROJAN

# Proteo contra worms


# ------------------------------------------------------$iptables -A FORWARD -p tcp --dport 135 -i $IF_INTERNA -j REJECT

# Proteo contra syn-flood


# ------------------------------------------------------$iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT

# Proteo contra ping da morte


# ------------------------------------------------------$iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Proteo contra port scanners

# ------------------------------------------------------$iptables -N SCANNER
$iptables -A SCANNER -m limit --limit 15/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 $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags ALL NONE -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags ALL ALL -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $IF_EXTERNA -j SCANNER

# Loga tentativa de acesso a determinadas portas


# ------------------------------------------------------$iptables -A INPUT -p tcp --dport 21 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL:
ftp: "
$iptables -A INPUT -p tcp --dport 23 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL:
telnet: "
$iptables -A INPUT -p tcp --dport 25 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL:
smtp: "
$iptables -A INPUT -p tcp --dport 80 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL:
http: "
$iptables -A INPUT -p tcp --dport 110 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL:
pop3: "
$iptables -A INPUT -p udp --dport 111 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL:
rpc: "
$iptables -A INPUT -p tcp --dport 113 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL:
identd: "
$iptables -A INPUT -p tcp --dport 137:139 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix
"FIREWALL: samba: "
$iptables -A INPUT -p udp --dport 137:139 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix
"FIREWALL: samba: "
$iptables -A INPUT -p tcp --dport 161:162 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix
"FIREWALL: snmp: "
$iptables -A INPUT -p tcp --dport 6667:6668 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix
"FIREWALL: irc: "
$iptables -A INPUT -p tcp --dport 3128 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix
"FIREWALL: squid: "

# Libera acesso externo a determinadas portas


# ------------------------------------------------------$iptables -A INPUT -p tcp --dport 22 -i $IF_EXTERNA -j ACCEPT

# Libera acesso de smtp para fora apenas para o IP XXX.XXX.XXX.XXX


# ------------------------------------------------------#$iptables -A FORWARD -p tcp -d ! XXX.XXX.XXX.XXX --dport 25 -j LOG --log-level 6 --log-prefix

"FIREWALL: SMTP proibido: "


#$iptables -A FORWARD -p tcp -d ! XXX.XXX.XXX.XXX --dport 25 -j REJECT

#################################################
# Tabela NAT
#################################################

# Ativa mascaramento de sada


# ------------------------------------------------------$iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE

# Proxy transparente
# ------------------------------------------------------#$iptables -t nat -A PREROUTING -i $IF_INTERNA -p tcp --dport 80 -j REDIRECT --to-port 3128
#$iptables -t nat -A PREROUTING -i $IF_INTERNA -p tcp --dport 8080 -j REDIRECT --to-port 3128

# Redireciona portas para outros servidores


# ------------------------------------------------------#$iptables -t nat -A PREROUTING -d 192.168.200.1 -p tcp --dport 22 -j DNAT --to-destination 10.0.0.1

# Redireciona portas na prpria mquina


# ------------------------------------------------------#$iptables -A PREROUTING -t nat -d 192.168.200.1 -p tcp --dport 5922 -j REDIRECT --to-ports 22
Links relacionados e consultados:
http://www.altoriopreto.com.br/
http://www.linuxgrill.com/iproute2-toc.html

Dvidas, mail me: ricardo@jacomel.com.br


Ricardo Jacomel
http://www.jacomel.com.br
ricardo@jacomel.com.br

http://www.vivaolinux.com.br/artigo/Firewall-rapido-e-seguro-com-iptables
Voltar para o site

S-ar putea să vă placă și