Un ordenador protegido

Hoy vamos a activar y configurar el firewall ufw en un Ubuntu Server donde se ejecutan solo los servicios imprescindibles para servir páginas web dinámicas.

ufw (Uncomplicated Firewall) es el firewall predeterminado de Ubuntu. Se trata de un sistema frontend de iptables que facilita mucho las cosas a los que quieren configurar rápidamente un firewall y no quieren complicarse programando reglas de filtrado de paquetes con iptables. ufw proporciona una capa de abstracción amigable que permite a los administradores tomar decisiones de filtrado más fácilmente que con iptables.

ufw ya viene instalado en Ubuntu, pero está desactivado de forma predeterminada. Para ver el estado del firewall:

ufw status

Si no lo activaste antes tiene que salirte un mensaje que indica que el firewall no está activo. Para activarlo:

ufw enable

Si activas ufw de forma remota, con ssh, te saldrá este mensaje:

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

Dile que sí, pero no antes de asegurarte que dispones de una copia de seguridad de lo que consideres importante en tu servidor.

Nada más activar ufw cerraremos todos los puertos:

ufw default deny

De este modo adoptamos una política de denegación por defecto para las comunicaciones entrantes, o sea, nuestro Ubuntu Server no aceptará ningún paquete que le entre.

Como alternativa, podemos elegir una política que acepte por defecto todo el tráfico entrante, de modo que el administrador tenga que establecer reglas para denegar comunicaciones determinadas.

En la política deny por defecto el administrador prefiere abrir a mano los puertos imprescindibles. Esto tiene la ventaja de que el servidor es más seguro, pero presenta el inconveniente de que exige al administrador un conocimiento de los servicios que maneja, y también puede resultar un poco más complicada de mantener.

Recuerda esta norma general en seguridad informática:

A más seguridad, menos usabilidad del sistema y algo más de trabajo en el mantenimiento de dicha política de seguridad.

Antes hemos cerrado todas las conexiones entrantes. Ahora vamos a abrir solo los puertos que necesita nuestro Ubuntu Server que, como decimos, solo sirve páginas web dinámicas.

Suponiendo que hemos cambiado el puerto del servicio ssh a 981, abrimos el puerto 981 para que acepte conexiones TCP:

ufw allow 981/tcp

Luego abrimos http:

ufw allow 80/tcp

Y abrimos https:

ufw allow 443/tcp

Por cierto, si en algún momento te equivocas con alguna regla, que sepas que así como las hemos puesto con los comandos de arriba, en cualquier momento también puedes quitarlas a mano así:

ufw delete allow 443/tcp

Una vez hecho todo esto tendrías que comprobar el nuevo estado de ufw y comprobar que todo está ok:

ufw status verbose

La salida es esta:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere
981/tcp                    ALLOW IN    Anywhere
80/tcp (v6)                ALLOW IN    Anywhere (v6)
443/tcp (v6)               ALLOW IN    Anywhere (v6)
981/tcp (v6)               ALLOW IN    Anywhere (v6)

Es muy importante asegurarse de dejar abierto el puerto del servicio ssh (981 en nuestro caso porque lo cambiamos cuando hicimos el hardening correspondiente) porque si no lo haces no podrás entrar a administrar tu servidor de forma remota.

Luego, no está de más que te asegures que tu archivo /etc/ufw/ufw.conf tiene puesta a yes la entrada ENABLED:

# Set to yes to start on boot. If setting this remotely, be sure to add a rule
# to allow your remote connection before starting ufw. Eg: 'ufw allow 22/tcp'
ENABLED=yes

La configuración anterior ejecutará ufw al iniciar el sistema.

Algunos recursos recomendados sobre lo que hemos hecho hoy:

También te puede interesar leer esto...

Previous Post Next Post