jueves, 16 de agosto de 2012

Una configuración para iptables

Una configuración para iptables

Buenas, les dejo una configuración que me va de lujo con iptables, como bien saben, iptables es un firewall o cortafuegos que te asegura la protección contra esas molestias que pueden dañar tu maquina.


Palabras más palabras menos, no soy un experto para explicar las cosas, simplemente dejo un ejemplo que tengo trabajando, y va genial en mi pc.

Bueno, después de un rato buscando y mirando algunas soluciones, encontre una que finalmente me funciono

dejo la configuración enterita por si hay gente que necesita dejar un blindaje completo con iptables, dejando funcionando el thunderbird, que usa sendmail, POP3/POP3S, IMAP/IMAP2/IMAPS, SMTP, y hasta le deje funcionando el ICMP para hacer pings a otras maquinas, y con un bonito seguro para los ataques DDoS, ahora todo funciona perfecto y me siento bien segurito.


________________________________________________________________________________


#!/bin/sh
## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina con DROP por defecto
## Pello Xabier Altadill Izura
## www.pello.info - pello@pello.info
## MODIFICADO POR dato000

echo -n Aplicando Reglas de Firewall...

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto: DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

## Empezamos a filtrar? no! empezamos a abrir! porque ahora esta TODO denegado.
## Debemos decir de manera explicita qué es lo que queremos abrir

# Operar en localhost sin limitaciones
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s 195.168.0.5 -j ACCEPT
iptables -A OUTPUT -d 195.168.0.5 -j ACCEPT

# Este es el servicio que DA la maquina a internet, por tanto todo paquete entrante se acepta para
# ese puerto y los salientes vinculados se aceptan.
/sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Permitimos que la maquina pueda salir a la web
/sbin/iptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

# Ya tambien a webs seguras
/sbin/iptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

# Reglas necesarias para FTP pasivo y activo. Se permiten conexiones entrantes YA establecidas
/sbin/iptables -A INPUT -p tcp -m tcp --sport 20:21 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 20:21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 1024:65535 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# Permitimos la consulta a un primer DNS
/sbin/iptables -A INPUT -s 200.75.51.132 -p udp -m udp --sport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -d 200.75.51.132 -p udp -m udp --dport 53 -j ACCEPT

# Permitimos la consulta a un segundo DNS
/sbin/iptables -A INPUT -s 200.75.51.133 -p udp -m udp --sport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -d 200.75.51.133 -p udp -m udp --dport 53 -j ACCEPT

#Permitimos que nos hagan ping y responder a este:
/sbin/iptables -A INPUT -p ICMP --icmp-type 8 -m limit --limit 1/s -j ACCEPT
/sbin/iptables -A OUTPUT -p ICMP --icmp-type 0 -m limit --limit 1/s -j ACCEPT

#Permitimos hacer ping a otras maquinas
/sbin/iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
/sbin/iptables -A OUTPUT -o eth0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT -i wlan0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
/sbin/iptables -A OUTPUT -o wlan0 -p icmp -m icmp --icmp-type 8 -j ACCEPT

/sbin/iptables -A OUTPUT -o wlan0 -p ICMP --icmp-type 0 -j ACCEPT
/sbin/iptables -A OUTPUT -o eth0 -p ICMP --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT -i wlan0 -p ICMP --icmp-type 0 -m limit --limit 10/s -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p ICMP --icmp-type 8 -m limit --limit 1/s -j ACCEPT

##Permitir SSH
#para eth0, conexión cableada
/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -p tcp -d 195.168.0.5 --dport 422 -j DNAT --to 195.168.0.5:22
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT

#para wlan0, conexión inalambrica
/sbin/iptables -A OUTPUT -o wlan0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -i wlan0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -p tcp -d 195.168.0.5 --dport 422 -j DNAT --to 195.168.0.5:22
/sbin/iptables -A INPUT -i wlan0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -o wlan0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT

##Configuración para thunderbird
##Configuración de SMTP
#Hotmail
/sbin/iptables -A OUTPUT -p tcp --sport 1024:65535 -d 0/0 --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 25 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 1024:65535 -d 0/0 --dport 587 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 587 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

#Gmail
/sbin/iptables -A OUTPUT -p tcp --sport 1024:65535 -d 0/0 --dport 465 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 465 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

##Configuración Recepción de Correos
#Hotmail - POP3/POP3S
/sbin/iptables -A INPUT -p tcp --sport 995 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 1024:65535 -d 0/0 --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 110 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 1024:65535 -d 0/0 --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT

#Gmail - IMAP/IMAP2/IMAPS
/sbin/iptables -A INPUT -p tcp --sport 993 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 1024:65535 -d 0/0 --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 143 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 1024:65535 -d 0/0 --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT

#Sendmail
/sbin/iptables -A INPUT -p tcp --sport 25 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 1024:65535 -d 0/0 --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT


##DDoS
#The following iptables rule will help you prevent the Denial of Service (DoS) attack on your webserver.
#La siguiente regla de iptables ayudara a prevenir el ataque de denegación de servicio en tu servidor.
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

# Barrera de backup por si cambiamos a modo ACCEPT temporalmente
# Con esto protegemos los puertos reservados y otros well-known
#/sbin/iptables -A INPUT -p tcp -m tcp --dport 1:1024 -j DROP
#/sbin/iptables -A INPUT -p udp -m udp --dport 1:1024 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --dport 1723 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --dport 3306 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -L -n"

# Fin del script


________________________________________________________________________________




Creo que la clave era abrir un número determinado de puertos para la entrada de paquetes tcp, en lo que vi, se abrian desde el 1024 hasta el puerto 65535 (1024:65535), no se que tan bien estara, pero creo que va bien la cosa. Asignando un Input y un Output determinando hacia donde tenia que salir, con un parametro dport y sport que hacian el filtrado, o así es como lo veo, aún sigo investigando.

Que bien se siente que uno sea capaz de hacer estas cosas, se siente muy bien, capto un bonito olor, huele a victoria.

No hay comentarios:

Publicar un comentario