GNU/Linux >> Tutoriales Linux >  >> Linux

16 consejos y trucos de iptables para administradores de sistemas

Los kernels de Linux modernos vienen con un marco de filtrado de paquetes llamado Netfilter. Netfilter le permite permitir, descartar y modificar el tráfico que entra y sale de un sistema. Las iptables La herramienta de línea de comandos de espacio de usuario se basa en esta funcionalidad para proporcionar un potente cortafuegos, que puede configurar agregando reglas para formar una política de cortafuegos. iptables puede ser muy desalentador con su rico conjunto de capacidades y su sintaxis de comandos barroca. Exploremos algunos de ellos y desarrollemos un conjunto de consejos y trucos iptables para muchas situaciones que un administrador del sistema puede encontrar.

Evite bloquearse

Escenario:va a realizar cambios en las reglas de la política de iptables en el servidor principal de su empresa. Desea evitar encerrarse a sí mismo, y potencialmente a todos los demás. (Esto cuesta tiempo y dinero y hace que su teléfono suene de la pared).

Consejo #1:Haga un respaldo de su configuración de iptables antes de empieza a trabajar en ello.

Haga una copia de seguridad de su configuración con el comando:

/sbin/iptables-save > /root/iptables-works

Sugerencia n.° 2:incluso mejor, incluya una marca de tiempo en el nombre del archivo.

Agregue la marca de tiempo con el comando:

/sbin/iptables-save > /root/iptables-works-`date +%F`

Obtienes un archivo con un nombre como:

/root/iptables-works-2018-09-11

Si hace algo que impide que su sistema funcione, puede restaurarlo rápidamente:

/sbin/iptables-restore < /root/iptables-works-2018-09-11

Consejo #3:Cada vez que cree una copia de seguridad de la política de iptables, cree un enlace al archivo con 'más reciente' en el nombre.

ln –s /root/iptables-works-`date +%F` /root/iptables-works-latest

Consejo n.º 4:Ponga reglas específicas en la en la parte superior de la política y las reglas genéricas en la parte inferior.

Evite reglas genéricas como esta en la parte superior de las reglas de políticas:

iptables -A INPUT -p tcp --dport 22 -j DROP

Cuantos más criterios especifique en la regla, menos posibilidades tendrá de bloquearse. En lugar de la regla muy genérica anterior, usa algo como esto:

iptables -A INPUT -p tcp --dport 22 –s 10.0.0.0/8 –d 192.168.100.101 -j DROP

Esta regla agrega (-A ) a la ENTRADA encadene una regla que DROP cualquier paquete que se origine en el bloque CIDR 10.0.0.0/8 en TCP (-p tcp ) puerto 22 (--dport 22 ) destinado a la dirección IP 192.168.100.101 (-d 192.168.100.101 ).

Hay muchas formas de ser más específico. Por ejemplo, usando -i eth0 limitará el procesamiento a una sola NIC en su servidor. De esta forma, las acciones de filtrado no aplicarán la regla a eth1 .

Sugerencia n.º 5:Incluya su dirección IP en la lista blanca en la parte superior de sus reglas de política.

Este es un método muy efectivo para no bloquearse. Todos los demás, no tanto.

iptables -I INPUT -s <your IP> -j ACCEPT

Tienes que poner esto como el primero regla para que funcione correctamente. Recuerda, -yo la inserta como primera regla; -A lo agrega al final de la lista.

Consejo n.º 6:Conozca y comprenda todas las reglas de su póliza actual.

No cometer un error en primer lugar es la mitad de la batalla. Si comprende el funcionamiento interno detrás de su política de iptables, le facilitará la vida. Dibuja un diagrama de flujo si es necesario. Recuerde también:lo que hace la política y lo que se supone que debe hacer pueden ser dos cosas diferentes.

Configurar una política de firewall para estaciones de trabajo

Escenario:desea configurar una estación de trabajo con una política de firewall restrictiva.

Sugerencia n.º 1:establezca la política predeterminada como DROP.

# Set a default policy of DROP
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

Consejo n.º 2:Permita a los usuarios la cantidad mínima de servicios necesarios para hacer su trabajo.

Las reglas de iptables deben permitir que la estación de trabajo obtenga una dirección IP, máscara de red y otra información importante a través de DHCP (-p udp --dport 67:68 --sport 67:68 ). Para la administración remota, las reglas deben permitir SSH entrante (--dport 22 ), correo saliente (--dport 25 ), DNS (--dport 53 ), ping saliente (-p icmp ), protocolo de tiempo de red (--dport 123 --sport 123 ) y HTTP saliente (--dport 80 ) y HTTPS (--dport 443 ).

# Set a default policy of DROP
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

# Accept any related or established connections
-I INPUT  1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow all traffic on the loopback interface
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

# Allow outbound DHCP request
-A OUTPUT –o eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT

# Allow inbound SSH
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW  -j ACCEPT

# Allow outbound email
-A OUTPUT -i eth0 -p tcp -m tcp --dport 25 -m state --state NEW  -j ACCEPT

# Outbound DNS lookups
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT

# Outbound PING requests
-A OUTPUT –o eth0 -p icmp -j ACCEPT

# Outbound Network Time Protocol (NTP) requests
-A OUTPUT –o eth0 -p udp --dport 123 --sport 123 -j ACCEPT

# Outbound HTTP
-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT

COMMIT

Restringir un rango de direcciones IP

Escenario:el director ejecutivo de su empresa cree que los empleados pasan demasiado tiempo en Facebook y no realizan ningún trabajo. El CEO le dice al CIO que haga algo con respecto a que los empleados pierdan el tiempo en Facebook. El CIO le dice al CISO que haga algo con respecto a los empleados que pierden el tiempo en Facebook. Eventualmente, se les dice que los empleados están perdiendo demasiado tiempo en Facebook y que hay que hacer algo al respecto. Decides bloquear todos los accesos a Facebook. Primero, averigüe la dirección IP de Facebook usando el host y whois comandos.

host -t a www.facebook.com
www.facebook.com is an alias for star.c10r.facebook.com.
star.c10r.facebook.com has address 31.13.65.17
whois 31.13.65.17 | grep inetnum
inetnum:        31.13.64.0 - 31.13.127.255

Luego convierta ese rango a notación CIDR usando la página de conversión de CIDR a IPv4. Obtienes 31.13.64.0/18 . Para evitar el acceso saliente a www.facebook.com, ingrese:

iptables -A OUTPUT -p tcp -i eth0 –o eth1 –d 31.13.64.0/18 -j DROP

Regular por tiempo

Escenario:La reacción violenta de los empleados de la empresa por negar el acceso a Facebook hace que el CEO ceda un poco (eso y su asistente administrativo le recuerda que ella mantiene SU página de Facebook actualizada). El CEO decide permitir el acceso a Facebook.com solo a la hora del almuerzo (12 p. m. a 1 p. m.). Suponiendo que la política predeterminada es DROP, use las funciones de tiempo de iptables para abrir el acceso.

iptables –A OUTPUT -p tcp -m multiport --dport http,https -i eth0 -o eth1 -m time --timestart 12:00 --timestart 12:00 –timestop 13:00 –d 
31.13.64.0/18  -j ACCEPT

Este comando establece la política para permitir (-j ACCEPT ) http y https (-m multipuerto --dport http,https ) entre el mediodía (--timestart 12:00 ) y 13:00 (--hora de parada 13:00 ) a Facebook.com (–d 31.13.64.0/18 ).

Regular por tiempo—Toma 2

Escenario:durante el tiempo de inactividad planificado para el mantenimiento del sistema, debe denegar todo el tráfico TCP y UDP entre las 2 a. m. y las 3 a. m. para que las tareas de mantenimiento no se vean interrumpidas por el tráfico entrante. Esto requerirá dos reglas de iptables:

iptables -A INPUT -p tcp -m time --timestart 02:00 --timestop 03:00 -j DROP 
iptables -A INPUT -p udp -m time --timestart 02:00 --timestop 03:00 -j DROP

Con estas reglas, el tráfico TCP y UDP (-p tcp y -p udp ) son denegadas (-j DROP ) entre las 02:00 (--timestart 02:00 ) y 3 a. m. (--hora de parada 03:00 ) en la entrada (-A INPUT ).

Limitar conexiones con iptables

Escenario:sus servidores web conectados a Internet están siendo atacados por malos actores de todo el mundo que intentan DoS (denegación de servicio). Para mitigar estos ataques, restringe la cantidad de conexiones que una sola dirección IP puede tener con su servidor web:

iptables –A INPUT –p tcp –syn -m multiport -–dport http,https –m connlimit -–connlimit-above 20 –j REJECT -–reject-with-tcp-reset

Veamos qué hace esta regla. Si un host genera más de 20 (-–connlimit-above 20 ) nuevas conexiones (–p tcp –syn ) en un minuto a los servidores web (-–dport http,https ), rechazar la nueva conexión (–j REJECT ) y dígale al host de conexión que está rechazando la conexión (-–reject-with-tcp-reset ).

Supervisar las reglas de iptables

Escenario:dado que iptables opera sobre la base de que "la primera coincidencia gana" a medida que los paquetes atraviesan las reglas en una cadena, las reglas que coinciden con frecuencia deben estar en la parte superior de la política y las reglas que coinciden con menos frecuencia deben estar en la parte inferior. ¿Cómo sabe qué reglas se recorren más o menos para que puedan ordenarse más cerca de la parte superior o inferior?

Consejo n.º 1:vea cuántas veces se ha acertado cada regla.

Usa este comando:

iptables -L -v -n –line-numbers

El comando listará todas las reglas en la cadena (-L ). Dado que no se especificó ninguna cadena, todas las cadenas se enumerarán con una salida detallada (-v ) mostrando contadores de bytes y paquetes en formato numérico (-n ) con números de línea al comienzo de cada regla correspondiente a la posición de esa regla en la cadena.

Utilizando los conteos de paquetes y bytes, puede ordenar las reglas que se usan con más frecuencia en la parte superior y las reglas que se usan con menos frecuencia en la parte inferior.

Sugerencia n.º 2:elimine las reglas innecesarias.

¿Qué reglas no obtienen ninguna coincidencia en absoluto? Estos serían buenos candidatos para la eliminación de la política. Puedes averiguarlo con este comando:

iptables -nvL | grep -v "0     0"

Nota:eso no es una pestaña entre ceros; hay cinco espacios entre los ceros.

Consejo n.º 3:Supervise lo que está pasando.

Le gustaría monitorear lo que sucede con iptables en tiempo real, como con top . Use este comando para monitorear dinámicamente la actividad de iptables y mostrar solo las reglas que se están atravesando activamente:

watch --interval=5 'iptables -nvL | grep -v "0     0"'

ver ejecuta 'iptables -nvL | grep -v "0     0"' cada cinco segundos y muestra la primera pantalla de su salida. Esto le permite ver cómo cambian los recuentos de paquetes y bytes con el tiempo.

Informe sobre iptables

Escenario:Su gerente piensa que este firewall de iptables es simplemente genial, pero un informe de actividad diario sería aún mejor. A veces es más importante escribir un informe que hacer el trabajo.

Utilice el filtro de paquetes/cortafuegos/analizador de registro de IDS FWLogwatch para crear informes basados ​​en los registros del cortafuegos de iptables. FWLogwatch admite muchos formatos de registro y ofrece muchas opciones de análisis. Genera resúmenes diarios y mensuales de los archivos de registro, lo que permite al administrador de seguridad liberar una cantidad considerable de tiempo, mantener un mejor control sobre la seguridad de la red y reducir los ataques inadvertidos.

Aquí hay una salida de muestra de FWLogwatch:

Más que solo ACEPTAR y ABANDONAR

Hemos cubierto muchas facetas de iptables, desde asegurarse de que no se bloquee cuando trabaja con iptables hasta monitorear iptables y visualizar la actividad de un firewall de iptables. Esto lo ayudará a comenzar el camino para obtener aún más consejos y trucos de iptables.


Linux
  1. 5 consejos avanzados de rsync para administradores de sistemas Linux

  2. 3 sólidos consejos de autoevaluación para administradores de sistemas

  3. Comandos de Linux que debe conocer, ejecute Podman en Windows y más consejos para administradores de sistemas

  4. Construya un laboratorio en 36 segundos, ejecute Podman en una Mac y más consejos para administradores de sistemas

  5. Comandos principales de Linux de una línea, personalizar imágenes de VM y más consejos para administradores de sistemas

Consejos/trucos útiles de Meld para usuarios intermedios

Consejos y trucos para asegurar su servidor web Nginx

Trucos y tratos para administradores de sistemas y operaciones

19 consejos y trucos útiles para la línea de comandos de Linux

Consejos y trucos de la línea de comandos de Netstat

Consejos y trucos de rsync favoritos