Aplicando iptables a los puertos 80,22 y 21

By 7 de agosto de 2006 Debian, Linux No Comments

Mediante el siguiente 'como' se pretende dejar SOLO abiertos los puertos 80 (web), 21 (ftp) y 22 (ssh).tux_topic_clean.png

# iptables -A INPUT -p tcp -m multiport --dports 21,22,80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

La explicación vendría siendo esta:

-A INPUT, añade una regla que afecta al trafico entrante. Podria ser -A OUTPUT, y afectaria al saliente, pero nos centramos en el entrante.

Luego hay 2 maneras de establecer las reglas a los puertos: puerto a puerto, o en grupos.

Puerto a puerto seria: --dport 21 -o --dport 80 -o tambien --dport 21:80 (del 21 al 80, osea, consecutivos)

Por el contrario si deseamos puertos salteados, usaremos -m multiport --dports 21,22,80

-m state --state NEW...

NEW son conexiones nuevas, established son las ya establecidas.

RELATED lo que hace es guardar en una tabla el paquete que ha dejado pasar y si vuelve, te lo deja pasar, si no: no


puedes definir interfaces de red:

-i eth0 --> interface de entrada
-o eth0 --> interface de salida
-s ip/host/dominio --> fuente d ela conexion, desde donde se establece.

Con esto podriamos hacer, por ejemplo, permitir conectar al puerto 22 solo a la ip 85.251.98.36 y a las demas denegarlas Luego establecería mos las políticas por defecto para que no pasara nada de lo que no hemos definido:

#Establecemos las politicas por defecto
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

El script que acontinuación detallo es para aplicar las reglas que queramos y establezca las políticas por defecto. También nos permite iniciar/parar/reiniciar eiptables como si fuera un servicio más.Este script deberemos ponerlo en /etc/init.d/ para que se ejecute nada más iniciar el sistema.

#!/bin/bash
### BEGIN INIT INFO
# Provides: cortafuegos iptables
# X-UnitedLinux-Should-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Cortafuegos basado en iptables
# Description: Arranca un cortafuegos basado en iptables
### END INIT INFOcase "$1" in
start)
echo "Arrancando iptables..."
echo "Generando reglas..."
echo "Reglas generadas con exito y listo para funcionar."
# Borramos las reglas de las cadenas y los contadores
iptables -F
iptables -X
iptables -Z
#Cargamos modulos necesarios
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
#Permitimos trafico en localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#Aqui las reglas (por ejemplo las que hemos establecido antes.
iptables -A INPUT -p tcp -m multiport --dports 21,22,80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#Establecemos las politicas por defecto
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
;;

stop)
echo "Parando iptables..."
echo "Borrando reglas de iptables..."
echo "Las reglas se han eliminado satisfactoriamente."

echo "Su red actualmente esta expuesta a internet sin protección."

# Borramos las reglas de las cadenas y los contadores
iptables -F
iptables -X
iptables -Z

iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

;;

restart)
$0 stop
$0 start
;;

status)
iptables -nL
;;

*)
echo "Uso: $0 {start|stop|restart|status}"
;;
esac

exit 02543

Gura

Leave a Reply

Your email address will not be published.