Página siguiente Página anterior Índice general

11. Consejos sobre el diseño del filtrado de paquetes

El sentido común en el campo de la seguridad informática es bloquearlo todo, y después abrir agujeros donde sea necesario. Normalmente se dice que «aquello que no está explícitamente permitido, está prohibido». Recomiendo este enfoque si la seguridad es de su máximo interés.

No ejecute servicios que no necesite, incluso si cree que ha bloqueado el acceso a ellos.

Si está creando un cortafuegos dedicado, empiece por no ejecutar nada, y bloquear todos los paquetes, para después añadir servicios y dejar pasar los paquetes según sea necesario.

Recomiendo asegurar en profundidad: combinar tcp-wrappers (para conexiónes con el propio filtro de paquetes), proxies (para conexiones que pasen a través del filtro de paquetes), verificación de rutas y filtro de paquetes. Es durante la verificación de rutas cuando es descartado un paquete que viene de una interfaz inesperada: por ejemplo, si su red interna tiene direcciones 10.1.1.0/24, y un paquete con esa dirección de origen llega por la interfaz externa, será descartado. Esto se puede activar para una interfaz (ppp0) de esta manera:

# echo 1 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
#

O para todas las interfaces existentes y futuras con:

# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
#     echo 1 > $f
# done
# 

Debian hace esto por defecto donde sea posible. Si tiene un encaminamiento asimétrico (espera que los paquetes lleguen de direcciones extrañas), puede que desee desactivar este filtro en esas interfaces.

Hacer un registro es útil cuando se está configurando un cortafuegos si algo no está funcionando, pero en un cortafuegos en producción, combínelo siempre con la coincidencia «limit», para evitar que puedan sobrecargar sus registros.

Recomiendo sobre todo el seguimiento de conexiones para los sistemas seguros: crea algo de sobrecarga, ya que se siguen todas las conexiones, pero es muy útil para controlar el acceso a sus redes. Puede que necesite cargar el módulo «ip_conntrack.o» si su núcleo no carga los módulos de forma automática, y no está ya incluido en el núcleo. Si quiere hacer un seguimiento preciso a protocolos complejos, necesitará cargar el módulo de ayuda apropiado (p.ej: «ip_conntrack_ftp.o»).

# iptables -N no-conns-from-ppp0
# iptables -A no-conns-from-ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A no-conns-from-ppp0 -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A no-conns-from-ppp0 -i ppp0 -m limit -j LOG --log-prefix "Paquete malo de ppp0:"
# iptables -A no-conns-from-ppp0 -i ! ppp0 -m limit -j LOG --log-prefix "Paquete malo que no viene de ppp0:"
# iptables -A no-conns-from-ppp0 -j DROP

# iptables -A INPUT -j no-conns-from-ppp0
# iptables -A FORWARD -j no-conns-from-ppp0

La construcción de un buen cortafuegos está más allá del propósito de este COMO, pero mi consejo es «sea siempre minimalista». Vea el Seguridad COMO si desea más información sobre cómo probar su máquina.


Página siguiente Página anterior Índice general