sábado, 12 de febrero de 2011

Iptables

#!/bin/sh
# Establecemos politicas por defecto
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT
# /sbin/iptables -t nat -P PREROUTING DROP
# /sbin/iptables -t nat -P POSTROUTING DROP
#
# Empezamos a introducir reglas para el trafico entrante.
# Evitamos scanners de puertos limitando los paquetes icmp y flags.
#
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN -m limit --limit 1/sec -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN -j DROP
/sbin/iptables -A INPUT -p icmp -m limit --limit 2/sec -j ACCEPT
/sbin/iptables -A INPUT -p icmp -j DROP
/sbin/iptables -I INPUT -d localhost -j ACCEPT
#
# Reglas que impiden el spoofing.
#


/sbin/iptables -A INPUT -s 172.0.0.0/24 -j DROP
/sbin/iptables -A INPUT -s 169.254.0.0/16 -j DROP
/sbin/iptables -A INPUT -s 192.0.0.0/8 -j DROP
/sbin/iptables -A INPUT -s 10.0.0.0/8 -j DROP
/sbin/iptables -A INPUT -s 224.0.0.0/3 -j DROP
/sbin/iptables -A INPUT -s 240.0.0.0/5 -j DROP
/sbin/iptables -A INPUT -s 0.0.0.0/8 -j DROP
#
# Evitamos paquetes invalidos
#
/sbin/iptables -A INPUT -m state --state INVALID -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
#
# Permitimos el acceso solo ha ciertos puertos y siempre que esten relacionados con una conexion ya existente.
#
/sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
 /sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p tcp -m tcp --sport 8080 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p udp -m udp --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p tcp -m tcp --sport 22:23 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p tcp -m tcp --sport 5222 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p tcp -m tcp --sport 995 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p tcp -m tcp --sport 465 -m state --state RELATED,ESTABLISHED -j ACCEPT
#
# Abrimos el puerto para SAMBA
#
# /sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p tcp -m tcp --sport 139 -m state --state RELATED,ESTABLISHED -j ACCEPT
# /sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p udp -m udp --sport 137 -m state --state RELATED,ESTABLISHED -j ACCEPT
# /sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p tcp -m tcp --sport 445 -m state --state RELATED,ESTABLISHED -j ACCEPT
# /sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/32 -p udp -m udp --sport 138 -m state --state RELATED,ESTABLISHED -j ACCEPT
################################
# Reglas de filtrado OUTPUT #
################################
/sbin/iptables -A OUTPUT -d 127.0.0.1/32 -j ACCEPT
/sbin/iptables -A OUTPUT -d 174.129.0.0/16 -j DROP
/sbin/iptables -A OUTPUT -m state --state INVALID -j LOG --log-prefix "Packet Invalid:"
/sbin/iptables -A OUTPUT -m state --state INVALID -j DROP
# Limitamos las conexiones salientes por puerto
/sbin/iptables -A OUTPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 1 -j REJECT
# /sbin/iptables -A OUTPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT
# Permitir chat gmail
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 5222 -j ACCEPT
# Bloquear puertos superiores a 1024 que no se usan.
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 1024:65535 -j LOG --log-prefix "Output Drop:"
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 1024:65535 -j DROP
#
# Evitamos problemas de MTU/MSS
#
/sbin/iptables -A OUTPUT -o wlan0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
/sbin/iptables -A OUTPUT -o eth0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#
# Portscan detect
#
# Ahora introducimos las reglas ip version 6. De momento dropamos todo.
#
/sbin/ip6tables -P INPUT DROP
/sbin/ip6tables -P FORWARD DROP
/sbin/ip6tables -P OUTPUT DROP

No hay comentarios:

Publicar un comentario