12 septiembre 2010

Manual práctico de IPtables – Linux


Utilizamos IPtables en linux, para limitar el paso de datos no deseados en una red. Cuando deseamos limitar el tráfico (aceptar o denegar paso de datos), lo podemos realizar en nuestro servidor linux (se denomina Firewall) de dos formas:
1) Aplicando la política de ACEPTAR: Aceptar quiere decir, que todo lo que entra y sale por el firewall se acepta y solo se denegará lo que definamos. Como estamos aceptando todo lo que pasa a través del firewall, sólo tenemos que preocupar por proteger o denegar los puertos o las direcciones que nos interesa.

2) Aplicando la política de DENEGAR: Denegar quiere decir, que todo entra y sale por el firewall no se acepta, y solo se permitirá pasar los datos que definamos. Como estamos denegando todo lo que pasa a través del firewall, deber3emos tener un alto conocimiento de la transmisión de datos o de los puertos que utilizan un programa específico, ya que hay que permitir el paso de la información que necesitamos.

Tablas:

  • Nat: La tabla Nat se utiliza para la traducción de direcciones de red, los paquetes que son filtrados por esta tabla, terminan con las IPs modificadas. La tabla consta de tres cadenas: PREROUTING, OUTPUT y POSTROUTING. PREROUTING para modificar los paquetes en cuanto llegan al cortafuegos, OUTPUT para modificar los paquetes generados localmente (es decir, en el cortafuegos) antes de tomar la decisión de enrutado (direccionamiento) y POSTROUTING, para modificar los paquetes que están a punto de abandonar el cortafuegos.
  • Mangle: Esta tabla se emplea para “retocar” paquetes, se puede cambiar el contenido de diferentes paquetes y el de sus cabeceras. Por ejemplo, se pueden cambiar los campos TTL, TOS o MARK. La tabla consta de cinco cadenas: PREROUTING, POSTROUTING, OUTPUT, INPUT y FORWARD.
  • Filter: La tabla filter se debería emplear exclusivamente para filtrar paquetes. Por ejemplo, los paquetes se pueden DROP (desechar), LOG (añadir a un registro de sucesos), ACCEPT (aceptar) o REJECT (rechazar). La tabla tiene tres cadenas: FORWARD, INPUT y OUTPUT. FORWARD se usa para todos los paquetes que no se generan localmente y que no están destinados a nuestra al firewall. INPUT se emplea en todos los paquetes que se destinan al firewall, mientras que OUTPUT se emplea para todos los paquetes generados localmente.

Conceptos básicos:

  • DNAT (Destination Network Address Translation): Se emplea en los casos donde se tiene una IP pública y se quiere redirigir los accesos al firewall hacia algún otro host (en una “zona desmilitarizada”, DMZ, por ejemplo).
  • SNAT (Source Network Address Translation): Es usada para cambiar la dirección de origen de los paquetes. Un ejemplo podría ser cuando queremos sustituir las direcciones IP de la red local que está detrás del firewall, por la dirección IP del firewall.
  • MASQUERADE: se usa como SNAT, pero cada vez que llega un paquete a MASQUERADE, automáticamente chequea qué dirección IP que debe asignarle.

Algunas órdenes básicas:

  • Iptables -A: Añade la regla al final de la cadena.
  • Iptables -D: Borra una regla de la cadena.
  • Iptables -I: Inserta una regla de la cadena.
  • Iptables -L: Genera una lista de todas las entradas.
  • Iptables -F: Elimina todas las reglas de una cadena.
  • -p (ej: iptables -A INPUT -p tcp): Para comprobar la presencia de los siguientes protocolos: TCP, UDP, ICMP
  • -s (ej: iptables -A INPUT -s 192.168.0.1/24): realiza comparaciones con segmentos de redes o direcciones IPs.
  • -d (ej: iptables -A INPUT -d 192.168.1.1): Compara la dirección de origen. También se puede invertir la comparación con el símbolo !, o sea que -d ! 192.168.1.1, buscará todos los paquetes que no vayan destinados a la dirección IP 192.168.1.1.
  • -i (ej: iptables -A INPUT -i eth0): Comparación la emplearemos para reconocer a través de qué interfaz proviene un paquete entrante.

Lo podemos utilizar como complemento del manual Servidor dhcp en Linux Ubuntu (Debian) en el punto del 8-14, en el cual, el archivo iptables.conf lo podremos modificar con:

$c> nano /etc/init.d/iptables.conf

Pegamos la información:

## Borramos las Reglas anteriores
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos las Políticas
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
## recuerda: eth0 es el interfaz conectado al router y eth1 a la LAN

## Activamos el “SNAT”
iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth0 -j MASQUERADE
## Tenemos acceso al firewall desde la red local
iptables -A INPUT -s 192.168.20.0/24 -i eth1 -j ACCEPT

## Aceptamos los puertos 80, https, para el correo, etc
iptables -A FORWARD -s 192.168.20.0/24 -i eth1 -p tcp –dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -i eth1 -p tcp –dport 443 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -i eth1 -p tcp –dport 993 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -i eth1 -p tcp –dport 995 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -i eth1 -p tcp –dport 110 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -i eth1 -p tcp –dport 465 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -i eth1 -p tcp –dport 25 -j ACCEPT

## Aceptar el messenger de hotmail y de yahoo para un equipo
iptables -A FORWARD -s 192.168.20.101 -i eth1 -p tcp –dport 1863 -j ACCEPT
iptables -A FORWARD -s 192.168.20.101 -i eth1 -p tcp –dport 5050 -j ACCEPT
## y restringirlo para los otros usuarios de la red
iptables -A FORWARD -s 192.168.20.0/24 -i eth1 -p tcp –dport 5050 -j DROP
iptables -A FORWARD -s 192.168.20.0/24 -i eth1 -p tcp –dport 1863 -j DROP

## limitamos el internet a una IP
iptables -A FORWARD -d 192.168.20.11 -j DROP

## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red

# rechazamos los puertos tcp y udp del 1 al 1024
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP

# Con esto permitimos hacer forward de paquetes en el firewall, es decir,
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

Arkanda es una empresa de soluciones tecnológicas dedicada al soporte técnico, reparación, mantenimiento preventivo y Correctivo de computadores, realizamos formateo, reinstalación de sistema operativo e instalación de programas; revisión de virus y limpieza general del Equipo.
Te gustó la información, comparte su contenido

Compartir


Publicaciones relacionadas:

  1. Servidor dhcp en Linux Ubuntu (Debian)
  2. Servidor DHCP Centos 6.3
  3. Cambiar la direccion IP de Linux por consola
  4. Implementaciones de Firewall en Linux
  5. Ya probaste Android?? (Una versión de Linux)

Deja un comentario