¿Es este un buen punto de partida para iptables en Linux?

¿Es este un buen punto de partida para iptables en Linux?

Soy nuevo en iptables y he estado intentando crear un firewall cuyo propósito es proteger un servidor web. Las siguientes reglas son las que he elaborado hasta ahora y me gustaría saber si tienen sentido y si he omitido algo esencial.

Además del puerto 80, también necesito tener abiertos el puerto 3306 (mysql) y 22 (ssh) para conexiones externas.

¡Cualquier comentario es muy apreciado!

#!/bin/sh

# Clear all existing rules.
iptables -F

# ACCEPT connections for loopback network connection, 127.0.0.1.
iptables -A INPUT -i lo -j ACCEPT

# ALLOW established traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# DROP packets that are NEW but does not have the SYN but set.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# DROP fragmented packets, as there is no way to tell the source and destination ports of such a packet.
iptables -A INPUT -f -j DROP

# DROP packets with all tcp flags set (XMAS packets).
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# DROP packets with no tcp flags set (NULL packets).
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# ALLOW ssh traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport ssh -m limit --limit 1/s  -j ACCEPT

# ALLOW http traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport http -m limit --limit 5/s -j ACCEPT

# ALLOW mysql traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport mysql -m limit --limit 25/s -j ACCEPT

# DROP any other traffic.
iptables -A INPUT -j DROP

Respuesta1

Pruebe Shorewall, que proporciona un firewall razonable listo para usar. Habilite el acceso desde la red para los servicios que desee. Hay conjuntos de reglas de ejemplo para una, dos y tres interfaces. La documentación es buena y se mantiene activamente.

Supongo que querrás limitar las direcciones que pueden acceder a MySQL, lo cual se hace fácilmente. También puede proteger SSH llamando al puerto donde el puerto está cerrado, a menos que haya sondeado el otro puerto recientemente.

Respuesta2

  1. Realmente quieres permitir ICMP.
  2. 5/s probablemente no sea suficiente para HTTP
  3. No veo ningún sentido en las reglas para paquetes XMAS/NULL
  4. Tampoco veo ningún motivo para la regla especial de paquetes NUEVOS.

ETA: 5. Tener este tipo de límites de velocidad hace que los ataques DoS sean realmente simples. Solo necesito enviar 1 paquete SYN por segundo a su servidor para negarle el acceso ssh.

Respuesta3

Pensaría en usar algo como NARC para configurar las reglas de iptables:

http://www.knowplace.org/pages/howtos/firewalling_with_netfilter_iptables/netfilter_automatic_rule_configurator.php

Ya existen algunos valores predeterminados sensatos en este paquete en los que debería poder confiar.

Respuesta4

También es importante filtrar las comunicaciones salientes desde el servidor a Internet. Se recomienda especialmente que SMTP permita solo un servidor.

Administro firewalls Mikrotik y suelo hacer, por ejemplo:

  • Eliminar paquetes entrantes desde Internet con dirección de destino desde rango privado
  • Eliminar escaneos de puertos (más de 5 controles de puertos por segundo)
  • SSH a otro puerto (oscuridad, lo sé, ¡pero funciona! :-)) y limita las IP de origen
  • Eliminar transmisiones para enrutador
  • Eliminar TCP primero

Y pocos más. Recomendaría leer esto:http://wiki.mikrotik.com/wiki/Dmitry_on_firewallingLa sintaxis de Mikrotik es sencilla y contiene buenas indicaciones para principiantes.

información relacionada