viernes, 25 de marzo de 2011

IPTABLES, usando diferentes cadenas.

#!/bin/sh
# Establecemos politicas por defecto
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT
#
/sbin/iptables -N input_wlan0
/sbin/iptables -N input_eth0
#
# Empezamos a introducir reglas para el trafico entrante.
# Evitamos scanners de puertos limitando los paquetes icmp y flags.
#
/sbin/iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP
/sbin/iptables -A INPUT -m pkttype --pkt-type multicast -j DROP
/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 REJECT --reject-with icmp-proto-unreachable
/sbin/iptables -I INPUT -d localhost -j ACCEPT
#
# Reglas que impiden el spoofing.
#
/sbin/iptables -A INPUT -s 172.0.0.0/8 -j DROP
/sbin/iptables -A INPUT -s 169.254.0.0/16 -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
#
# Ahora introducimos las cadenas para machear el trafico en base a la interface. En este 


# caso usaremos input_wlan0 e input_eth0.
#
/sbin/iptables -A INPUT -i wlan0 -j input_wlan0
/sbin/iptables -A INPUT -i eth0 -j input_eth0
#
# Permitimos el acceso solo ha ciertos puertos y siempre que estén relacionados con una conexion ya existente. Primero las reglas para la interface wlan0.
#
/sbin/iptables -A input_wlan0 -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_wlan0 -p tcp -m tcp --sport 8080 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_wlan0 -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_wlan0 -p udp -m udp --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_wlan0 -p tcp -m tcp --sport 22:23 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_wlan0 -p tcp -m tcp --sport 5222 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_wlan0 -p tcp -m tcp --sport 995 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_wlan0 -p tcp -m tcp --sport 465 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_wlan0 -j DROP
#
#  Ahora introducimos aquellas reglas que afectarán unicamente al trafico entrante por la     

#  interface eth0.
#
/sbin/iptables -A input_eth0 -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_eth0 -p tcp -m tcp --sport 8080 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_eth0 -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_eth0 -p udp -m udp --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_eth0 -p tcp -m tcp --sport 22:23 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_eth0 -p tcp -m tcp --sport 5222 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_eth0 -p tcp -m tcp --sport 995 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_eth0 -p tcp -m tcp --sport 465 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A input_eth0 -j DROP

No hay comentarios:

Publicar un comentario