IPTABLES
Preámbulo
Este artículo va dedicado a la seguridad en nuestro sistema operativo, en él voy a explicar una forma muy básica de defenderse de agentes externos, para ello usaremos las iptables, que voy a intentar definir a continuación.
Introducción
Para configurar un firewall en GNU/Linux, podemos hacer uso de las iptables, una potente herramienta que parece olvidada por muchos usuarios.
Existen otros métodos para filtrar tráfico a nivel de enlaces (links html):
- ebtables y
- arptables
Podemos implementar servidores proxy como Squid a nivel de aplicaciones, para por ejemplo llevar la gestión del tráfico y el ancho de banda, desde y hacia Internet.
El caso es que iptables puede resultar útil para todos los casos anteriores, complementando el diseño del sistema de seguridad de la organización, e implementando una buena capa de seguridad a nivel kernel en nuestro sistema, además nos permite controlar varios niveles de la arquitectura TCP/IP.
El kernel Linux Implementa iptables, es una parte del núcleo que se ocupa de filtrar paquetes, iptables identificará mediante reglas qué información entra y salé, desde o hacia nuestra red local, aislando a los sistemas de posibles amenazas, como ataques de fuerza bruta al servidor ssh, mail, web, etc. En este artículo te enseñamos a configurar de una forma muy sencilla iptables en tu sistema.
USO
La forma general de usar iptables para crear una política de filtrado es:
iptables -argumentos i/o acción
Donde
-argumento es el argumento que usaremos, normalmente:
- -P para establecer la política por defecto, aunque existen otros como
- -L para ver las políticas que tenemos configuradas,
- -F para eliminar una política creada,
- -Z para poner a cero los contadores de bytes y paquetes, etc.
- -A para añadir una política,
- -I para insertar una regla en una posición concreta
- -D suprimir una regla.
También habrá otros argumentos para filtrar por
- -p protocolo/s,
- -sport puerto fuente,
- -dport puerto destino,
- -i interfaz entrante,
- -o interfaz saliente,
- -s dirección IP origen y
- -d dirección IP destino.
Vamos a ver a continuación un conjunto de reglas muy concretas: “imagina que tienes un servidor web y por tanto el tráfico por el puerto 80 debe estar permitido”:
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
Y si además de la regla anterior, queremos que un equipo con iptables solo sea visto por los equipos de nuestra subred, y que pase desapercibido para una red externa:
iptables -A INPUT -p tcp -s 192.168.30.0/24 –deport 80 -j ACCES
En la línea anterior, lo que estamos diciendo a iptables es que se
+Añadir una regla -A para que las entradas INPUT, protocolo TCP, puerto 80, sean aceptadas.
Ahora imagina que necesitamos rechazar la navegación web a los sistemas de la red local, que pasen a través de la máquina que ejecuta iptables en nuestra red (firewall). Procederíamos con esta otra regla:
iptables -t filter -A FORWARD -i eth1 -o eth0 -p tcp –dport 80 DROP
Para Iniciar/Parar/reiniciar iptables tenemos los siguientes comandos, que deberemos ejecutar con permisos de administrador:
service iptables start
service iptables stop
service iptables restart
Los comandos de iptables que más terminaremos utilizando son los siguientes:
-A agrega una regla a una cadena
-D borra una regla de una cadena especificada
-R reemplaza una regla
-I inserta una regla en lugar concreto de una determinada cadena
Otras reglas que podemos necesitar en nuestro firewall, para bloquear el tráfico procedente de una determinada DIRECCIÓN|RANGO IP:
iptables -A INPUT -p tcp -m iprange – – src-range 192.168.1.13-192-168.2.19
También podríamos bloquear por dirección física o MAC ADDRESS con la condición -mac-source:
iptables -A INPUT -m mac -mac-source 00:00:00:00:00:01
Una vez ejecutadas las reglas que queremos aplicar, debemos guardarlas ejecutando como admim:
service iptables save
Para borrar toda la configuración del firewall y poder volver a configurarlo de nuevo, el comando a ejecutar sería este:
iptables -F
Para permitir las conexiones entrantes tenemos los siguientes ejemplos de sintaxis, donde podéis variar los datos entre corchetes para adaptarlo a vuestras necesidades:
iptables -A INPUT -i [interface] -p [protocolo] –dport [puerto] -m state –state NEW, ESTABLISHED -j ACCEPT
En el caso de tener el firewall pinchado a dos redes, 2 tarjetas de red, eth0 para la LAN y eth1 para la WAN Internet, podemos configurar el firewall para que reenvíe el tráfico de la red local a través de Internet:
iptables -A FORDWARD -i eth0 -o eth1 -j ACCEPT
Podremos definir si la política se aplica a la entrada INPUT, a la salida OUTPUT o si se redirecciona el tráfico FORDWARD.
- ACCEPT si aceptamos
- REJECT si rechazamos
- DROP si eliminamos
La diferencia entre DROP y REJECT es que cuando se rechaza un paquete con REJECT, la máquina que lo originó sabrá que ha sido rechazado, pero con DROP se actúa con silencio y el atacante u origen no sabrá que ha pasado, y tampoco sabrá si tenemos un cortafuegos o simplemente ha fallado la conexión.
También hay otras como LOG, que mandan un seguimiento del syslog…
Para modificar reglas podemos editar el fichero de iptables con nuestro editor de texto preferido o crear scripts con reglas, mediante la consola con comandos.
La política de bloquear absolutamente todo el tráfico (nos dejará aislados):
iptables -P INPUT DROP
La política de aceptar absolutamente todo el tráfico:
iptables -P INPUT ACCEPT
Si queremos que todo el tráfico saliente desde nuestro equipo sea aceptado:
iptables -P OUTPUT accept
UFW (Uncomplicated Firewall)
Es una herramienta de configuración de firewall para Ubuntu, desarrollado para facilitar la configuración de las iptables.
UFW proporciona una manera fácil de crear un firewall basado en host IPv4 o IPv6. Lo primero que debemos hacer es instalarlo:
aptitude install ufw
Y lo levantaremos con el comando:
ufw enable
Podremos parar el firewall, con este otro comando::
ufw disable
Una vez tengamos el firewall funcionando, podremos configurarlo a base de reglas. Podremos permitir todo el tráfico por defecto con esta regla:
ufw default allow
Podremos bloquear todo el tráfico con esta otra regla:
ufw default deny
Para aplicar reglas a determinados puertos:
ufw allow\deny [puerto]/[protocolo]
Existe un archivo /etc/ufw/before.rules con reglas establecidas, conviene tenerlo en cuenta.
Comentando, poniendo una almohadilla # delante de la línea siguiente, estaremos deshabilitando el ping:
-A ufw-before-input -p icmp -icmp-type echo-request -j ACCEPT
Podemos consultar en todo momento las reglas del firewall ufw:
ufw status
Y esto es todo, iré editando la entrada 😉
También te puede interesar:
- https://sospedia.net/iptables/
- https://sospedia.net/iptables-borrar-una-regla-unban-ip/
- https://sospedia.net/tutorial-basico-de-iptables/
- https://sospedia.net/vps-ubuntu-configuracion-sobre-un-dominio-2018/
- https://sospedia.net/script-php-para-obtener-los-dominios-que-nos-han-atacado/
- https://sospedia.net/fail2ban-iptables/
Pingback: iptables borrar una regla – unban ip – SOSpedia.net
Pingback: Tutorial básico de IPTABLES – SOSpedia.net
Pingback: VPS Ubuntu: Configuración sobre un dominio 2018 – SOSpedia.net
Pingback: Script php para obtener los dominios que nos han atacado – SOSpedia.net
Pingback: Baneos persistentes con Fail2Ban 2018 – SOSpedia.net