Presentación: Filtrado de paquetes con IPTABLES. Ejercicio: Configurar el filtrado de paquetes en el servidor. Francisco Javier Cervigon Ruckauer

Presentación: Filtrado de paquetes con IPTABLES

Ejercicio: Configurar el filtrado de paquetes en el servidor

Desde el punto de vista de la seguridad del servidor, el objetivo principal es limitar el tráfico entrante al estrictamente necesario. Para ello, se propone la siguiente configuración:
  • Cambiar la política de las cadenas INPUT y FORWARD para que por defecto dejen caer los paquetes.
  • Dejar la política de OUTPUT para que permita pasar todos los paquetes.
  • Permitir el tráfico entrante a través de la interfaz de loopback.
  • Permitir el tráfico entrante correspondiente a conexiones establecidas y/o relacionadas.
  • Permitir conexiones entrantes de SSH desde base (la IP de base en la red DMZ es 10.5.1.1).
  • Permitir consultas entrantes de tipo ICMP ECHO REQUEST.

Lógicamente, aunque esta configuración resulta apropiada como ejemplo, debe ser adaptada para permitir todos los servicios que el servidor ofrezca (ej: HTTP, HTTPS, DNS, FTP...). Además, restringir el tráfico saliente permitiría reducir el daño que podría realizar el servidor a otros sistemas en caso de ser comprometido, o detectar las intrusiones si se registran los paquetes salientes denegados. Sin embargo, habría que tener en cuenta que en caso de que el atacante consiguiera acceso como root, podría cambiar fácilmente la configuración del filtrado de paquetes.
De cara a comprobar la efectividad del filtrado de paquetes, conviene poner en marcha algunos servicios adicionales que no deberían ser accesibles una vez en marcha el filtrado. (En un caso real, la recomendación es no conectar el sistema a la red hasta que no esté configurado el filtrado de paquetes y, desde luego, no ejecutar ningún servicio que no sea estrictamente necesario).
Acciones a realizar:
  1. En dmzc, poner en marcha los servicios portmap y apache2.
  2. Desde base, comprobar que:
    • Es posible conectarse por SSH.
    • Responde a ping (por defecto envía ICMP ECHO REQUEST).
    • Es posible obtener un listado de los servicios basados en RPC registrados en dmzc. (Sugerencia: usar la orden "rpcinfo -p dmzc").
    • Es posible acceder al servidor HTTP. (Sugerencia: usar "wget dmzc").
  3. Desde base, como rootrealizar un barrido de puertos sobre dmzc para corroborar la información previa.

Una vez comprobado que dmzc está expuesta, es el momento de aplicar el filtrado de paquetes y observar la diferencia.
Acciones a realizar:
  1. Configurar dmzc de forma limite el tráfico según la configuración anterior.
  2. Desde base, comprobar que:
    • Responde a ping (por defecto envía ICMP ECHO REQUEST).
    • Es posible conectarse por SSH.
    • No es posible obtener un listado de los servicios basados en RPC registrados en dmzc. (Sugerencia: usar la orden "rpcinfo -p dmzc").
    • No es posible acceder al servidor HTTP. (Sugerencia: usar "wget dmzc").
  3. Desde base, como root, realizar un barrido de puertos sobre dmzc para corroborar la información previa.
  4. Desde dmzc, comprobar que los servicios portmap y apache2 siguen activos. (Sugerencia: usar rpcinfo wget usando como nombre de nodo localhost).
  5. Arrancar dmzd.
  6. Desde dmzd, comprobar que:
    • dmzc responde a ping .
    • No es posible conectarse por SSH a dmzc.
    • No es posible obtener un listado de los servicios basados en RPC registrados en dmzc. (Sugerencia: usar la orden "rpcinfo -p dmzc").
    • No es posible acceder al servidor HTTP de dmzc. (Sugerencia: usar "wget dmzc").
  7. Desde dmzd, como root, realizar un barrido de puertos sobre dmzc para corroborar la información previa.

Finalmente, una vez comprobada la configuración, debe hacerse permanente. En Debian, la forma más sencilla de hacerlo es instalar el paquete iptables-persistent, que se encarga de hacerlo. Una vez instalado el paquete, lo único que hace falta es rellenar el fichero "/etc/iptables/rules" con la configuración adecuada para IPTABLES (obtenida, por ejemplo, con iptables-save).
Acciones a realizar:
  1. Instalar en dmzc el paquete iptables-persistent.
  2. Guardar la configuración de IPTABLES en "/etc/iptables/rules".
  3. Rearrancar dmzc.
  4. Comprobar que la configuración sigue aplicada tras rearrancar.
Francisco Javier Cervigon Ruckauer

No hay comentarios:

Publicar un comentario