Introducción a iptables


Iptables es una herramienta de firewall y redes disponible para todas las distribuciones de Linux y opera analizando paquetes a nivel kernel a medida que se reciben.


Contenido

//

Introducción

En este artículo explicaré cómo usar Iptables para crear una firewall simple. El enfoque de este artículo le permitirá obtener las nociones básicas necesarias para abrir "brechas" en su firewall para los puertos que sean necesarios.

El conjunto de reglas básico

  • Lista de reglas actuales
$ sudo iptables --list

Si no implementó ningún cambio, obtendrá un resultado similar al que se ve a continuación:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Leer el conjunto de reglas

En una instalación por defecto verá tres cadenas predefinidas que administrarán tres de las actividades más importantes: el tráfico de entrada, el tráfico transmitido y el tráfico de salida. La "política" es, quizás, el elemento más importante para tachar de la tabla anterior. Una política es el conjunto de reglas por defecto para una cadena en particular, donde en una instalación estándar todas las políticas estarán establecidas en "Aceptar".

Políticas

Las políticas y otras opciones disponibles son amplias; si desea obtener más información acerca de este tema consulte la 'man page' de IPtables. En este artículo solo mencionaremos las siguientes políticas que suelen ser las más comunes:

  • Aceptar: se usa para permitir explícitamente la transferencia mientras que no se apliquen las reglas de destino.
  • Rechazar: se usa para enviar un paquete de error en respuesta a un paquete afín, de lo contrario sería equivalente a DESECHAR que también termina en DESTINO, es decir, una regla de finalización transversal.
  • Desechar: esta política interrumpe la conexión a un hospedaje que no tiene comunicación, a menos que se aplique alguna regla de destino.

Opciones disponibles

MAN page de IPtables: http://linux.die.net/man/8/iptables

Las opciones reconocidas por iptables pueden dividirse en diferentes grupos:

  • Comandos: estas opciones especifican una acción que debe ejecutarse.
  • Parámetros: los parámetros especifican un conjunto de reglas para los comandos utilizados.
  • Otras opciones: pueden especificarse otras opciones para los comandos utilizados, según sea necesario.

Firewall simple

Reglas simples

Permitir conexiones que ya están activas en su servidor.

$ sudo iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Permitir conexiones a SSH

En este caso podemos aplicar distintas opciones, dichas opciones pueden usarse con otros puertos o situaciones para lograr diferentes personalizaciones.

Con este comando autorizaremos todos los intentos de conexión tcp a conexiones SSH.

$ sudo iptables -I INPUT 1 -p tcp  --dport 22 -j ACCEPT 

Con este comando, autorizaremos solo las conexiones que provengan de una subred IP determinada usando una notación CIDR. En el siguiente ejemplo vamos a bloquear cualquier dirección IP dentro del rango 192.168.1.0 - 192.168.1.255.

$ sudo iptables -I INPUT 1 -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT

Permitir conexiones a HTTP/HTTPS

Las siguientes reglas de iptables autorizarán las conexiones desde ambos puertos, el puerto 80 (HTTP) y el puerto 443 (HTTPS), desde cualquier conexión.

$ sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
$ sudo iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT

Permitir conexiones a FTP

Las siguientes reglas de iptables permitirán conexiones para servidores FTP en el puerto 21.

$ sudo iptables -I INPUT 1 -p tcp --dport 21 -j ACCEPT

Lista de puertos comunes

Aplique lo que aprendió en este artículo y use la siguiente lista de puertos comunes del enlace para crear reglas para todos los servidores que tenga en funcionamiento.

Cambiar la política por defecto

El único cambio real de política que haremos afectará el tráfico de entrada; como regla general vamos a desechar todas las conexiones y solo permitiremos las que consideremos legítimas.

$ sudo iptables -P INPUT DROP
  • Esta regla debe ejecutarse únicamente después de que haya configurado las reglas de acceso que permitirá la entrada ssh.

Guardar siempre su conjunto de reglas

Si el servidor se reinicia por alguna razón o si usted reinicia IPTables, perderá todos los cambios. Las reglas que ingrese manualmente se almacenarán en la memoria volátil. Asegúrese de guardar las reglas de IPtables. Si desea que los cambios se guarden de forma permanente necesitará alguno de estos comandos:

  • para CentOS y Fedora
# /etc/init.d/iptables save
  • para Ubuntu
# iptables-save > /etc/iptables.rules
  • para las demás distribuciones
# iptables-save > /etc/sysconfig/iptables

Estos comandos crearán un archivo file /etc/sysconfig/iptables, que será un archivo sin formato con sintaxis humana legible que puede ser editaba manualmente en caso de ser necesario. Todas las modificaciones realizadas en este archivo se activarán cada vez que reinicie iptables.

Resumen

Esperamos que gracias a este artículo pueda crear una firewall simple para proteger servidor de los ataques básicos. Tenga en cuenta que IPTables es una potente herramienta por lo que necesitará investigar mucho más para terminar de comprender todas sus capacidades. En mi próximo artículo sobre redes explicaré algunos trucos sencillos como la autenticación de puertos y la traducción de direcciones de red (NATing). Si necesita ayuda para crear más reglas, este enlace lo llevará a Un generador de firewall para IPTables fácil de usar.

Referencias y enlaces

Lista de artículos

Extraído de "/knowledge_center/index.php/Introduction_to_iptables"



¿Este contenido fue útil?




© 2011-2013 Rackspace US, Inc.

Excepto cuando se indique lo contrario, el contenido de este sitio está bajo una licencia Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License


Ver especificaciones de licencia y DESCARGO DE RESPONSABILIDAD