miércoles, 11 de abril de 2012

iptables: firewall de linux

¿Qué son las iptables?

Existen módulos para el kernel que permiten definir un sistema de reglas para aceptar o rechazar los paquetes o las comunicaciones que pasan por el sistema. Estos sistemas de reglas conforman lo que se conoce como firewall o cortafuegos; en otros sistemas los firewall pueden estar implementados en software y estar desvinculados del sistema operativo, pero en el caso de linux, el firewall se puede montar a nivel de kernel y no es necesario instalar un software adicional que a veces tiene agujeros.

Podemos crear un script que se ejecute al inicio en /bin/nombre.sh, para que lo podamos ejecutar desde cualquier punto de la consola (es posible que haya que darle permisos al fichero: chmod 750 nombre.sh).

Lo principal de este script es que primero ejecutamos líneas de comando para que el firewall lo cierre todo y luego empezamos a dar permisos:
#!/bin/sh
## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina
echo -n Aplicando Reglas de Firewall...

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

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar
# El localhost se deja (por ejemplo conexiones locales)
iptables -A INPUT -i lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s ?.?.?.? -j ACCEPT <- modificar IP

# A un compañero le dejamos entrar al servidor de internet
iptables -A INPUT -s ?.?.?.? -p tcp --dport 80 -j ACCEPT <- modificar IP

# A otro compañero le dejamos usar el ssh
iptables -A INPUT -s ?.?.?.? -p tcp --dport 22 -j ACCEPT<- modificar IP

# El puerto 443 de www debe estar abierto, es un servidor web seguo.
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# El puerto 80 de www debe estar cerado, es un servidor web seguo.
iptables -A INPUT -p tcp --dport 80 -j DROP

# Y el resto, lo cerramos
iptables -A INPUT -p tcp --dport  20:21 -j DROP
iptables -A INPUT -p tcp --dport  3306 -j DROP
iptables -A INPUT -p tcp --dport  22 -j DROP
iptables -A INPUT -p tcp --dport  10000 -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -L -n"
# Fin del script
Para comprobar el estado de las iptables:
iptables -L
Para comprobar el estado de las iptables después de aplicar el script:
iptables -L -n

Para comprobar el estado de los puertos del sistema con netstat:
netstat -ln

Para borrar una cadena:


iptables -D INPUT 3

...siendo 3 el número de la cadena.


Comandos iptables
Ejemplos prácticos
http://www.pello.info/filez/IPTABLES_en_21_segundos.html

No hay comentarios:

Publicar un comentario