Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Tutoriales / Guía rápida iptables: cortafuegos Linux - Cómo lo pongo a andar

Guía rápida iptables: cortafuegos Linux - Cómo lo pongo a andar

 ***** (3 opiniones)
Creative Commons Tutorial de gringo - 27 de Octubre de 2005
Temas Relacionados: Linux
4. Cómo lo pongo a andar
ALGUNAS ORDENES BASICAS:

  • iptables -F : borrado de reglas
  • iptables -L : listado de reglas que se están aplicando
  • iptables -A : append, añadir regla
  • iptables -D : borrar una regla

EJEMPLO DE UNA REGLA

#Aceptar conexiones al puerto 80 (www) en la tarjeta eth0

iptables -A INPUT -i eth0 -s 0.0.0.0/0 -p TCP --dport www -j ACCEPT

Nomenclatura:

iptables: comando iptables

-A: append, añadir una regla. OJO, se añade al final!!

INPUT: estado del paquete (al entrar es input).

-i eth0: interfaz de red eth0

-s 0.0.0.0/0: dirección de acceso (cualquiera en este caso)

-p TCP: tipo de puerto

--dport: puerto de destino

-j ACCEPT: destino del paquete (se acepta, podrá ser DROP, LOG, REJECT, ... )

FLAGS MAS COMUNES:

-s : source address. Ej: -s 192.168.1.0/24

-d : destino. Ej: -d 84.56.73.3

-p : tipo de protocolo (TCP, UDP, ICMP). Ej: -p TCP

--sport : puerto de origen

--dport: puerto de destino

-i = -in-interface : el interfaz por el que se entra (eth0,eth1, ppp0, ... )

-o = --out-interface: el interfaz por el que se sale (eth0,eth1, ppp0, ... )

Notas:

-i se usa con reglas INPUT y FORWARD

-o se usa con reglas FORWARD y OUTPUT




Visto esto, y dado que tenemos multitud de conexiones, más aún si estamos ofreciendo servicios, deberemos introducir una multitud de comandos al iptables cada vez que arranque el núcleo, un trabajo ímprobo, de ahí que se opte por la automatización.

Por ello se crea un script, un simple archivo de texto, en el que ponemos todo lo que queramos que ejecute nuestro cortafuegos durante la carga del sistema, y programamos el Linux para que cargue el script durante arranque, olvidándonos de esta tarea tediosa.

Cómo se escribe un script para iptables


No me voy a meter ahora con scripting, al que le interese, hay abundate documentación para shell scrtipting bajo linux.Un script orientado a manejar iptables tiene sus secciones.

SECCIONES DEL SCRIPT

Siempre empiezan invocando al intérprete (un programa que lee y ejecuta el archivo), la primera línea debe ser algo como :

#!/bin/sh -> se llama a sh y éste se encarga de leer línea por línea el archivo.

Tenemos la posibilidad de declarar variables. Un ejemplo:

IPT=/sbin/iptables

EXTIF="eth1" (tarjeta de red que se conecta a internet)

INTIF="eth0" (tarjeta de que se comunica con nuestra propia red)

Así cada vez que queremos hacer mención al ejecutable /sbin/iptables, sólo tendremos que poner $IPT. MUUUUY importante no olvidarse del símbolo $ cada vez que llamemos a una variable.

A continuación insertamos los módulos que necesitamos para que funcione el script, ya que seguramente queramos utilizar el control de estado de la conexión, o usar el log. Habrá que poner algo como esto. Cada uno que lo adecúe a sus necesidades.

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_nat

/sbin/modprobe ipt_LOG

/sbin/modprobe ipt_limit

/sbin/modprobe ipt_MASQUERADE

/sbin/modprobe ipt_state




  • Nos aseguraremos de que las tablas están vacías, borrando su contenido, para que no se mezcle con anteriores configuraciones.

$IPT -F

$IPT -t nat -F

$IPT -t mangle -F$IPT -X

$IPT -t nat -X

$IPT -t mangle -X




  • Ponemos la acción que ejecutará por defecto cada tabla si no se cumple ninguna regla dentro de ella. Aquí que cada uno haga lo que le de la gana, os recomiendo que por defecto se tire con todo:

$IPT -P INPUT DROP

$IPT -P OUTPUT DROP




  • Y ahora empezamos con lo que es el script en sí.




EJEMPLOS. Abriendo los servicios mas corrientes:

* por idoru: Las dos reglas en verde nos hace vulnerables

El localhost (lo = 127.0.0.1) se tiene que dejar pasar ya que por defecto tiramos con todo.

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# Permitir salida al 80, para poder ver páginas web


$IPT -A INPUT -i $EXTIF -p tcp --sport 80 -j ACCEPT
$IPT -A OUTPUT -o $EXTIF -p tcp --dport 80 -j ACCEPT

# Permitirsalida SMTP


$IPT -A INPUT -i $EXTIF -p tcp --sport 25 -j ACCEPT
$IPT -A OUTPUT -o $EXTIF -p tcp --dport 25 -j ACCEPT

SALIDA FTP - Para conectar con FTPs

$IPT -A INPUT -i $EXTIF -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -o $EXTIF -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

# ftp activo

$IPT -A INPUT -i $EXTIF -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -o $EXTIF -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT

# ftp pasivo


$IPT -A INPUT -i $EXTIF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -o $EXTIF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT




Bien, ya tenemos nuestro cortafuegos funcionando. Con esta configuración, podremos navegar, mandar emilios y conectarnos a ftp y todo lo demás simplemente se ignora. NO tenemos ningún puerto abierto.

Ahora queremos que se carguen estas reglas cada vez que se arranque el sistema.

Abrimos una consola y tecleamos:

/etc/init.d/iptables save

Que guardará las reglas que tiene iptables ahora mismo cargadas como las reglas por defecto.
Autor y licencia de 'Guía rápida iptables: cortafuegos Linux - Cómo lo pongo a andar'
gringo Extraído de: http://www.mononeurona.org/index.php?idp=276

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Guía rápida iptables: cortafuegos Linux - Cómo lo pongo a andar'

El objetivo de este documento es enseñar las bases de la instalación de un cortafuegos... Más »
En este documento se presenta la información acerca de la instalación, configuración, ejecución y mantenimiento... Más »
Esta es la primerísima edición del Linux en Castellano COMO. La audiencia a la que... Más »
Este documento pretende ser el punto de entrada de los hispanohablantes al mundo Linux, intentando... Más »
Este documento describe el soporte de sonido para Linux. Enumera el hardware de sonido soportado,... Más »
¿Estás seguro de que deseas eliminar este capítulo?