Cómo consultar el estado del cortafuegos ufw de Linux Ubuntu Server y cómo habilitarlo y deshabilitarlo. Cómo mostrar las reglas aplicadas actualmente. Cómo aplicar y eliminar reglas de acceso y bloqueo. Cómo desactivar el soporte para el protocolo IPv6 y cómo añadir reglas para apertura de puertos y bloqueo de ping (ICMP). Sirve para distribuciones de Linux derivadas de Debian como la propia Debian, Ubuntu, Mint, PureOS, Kali Linux, etc.
- Comprobar estado del cortafuegos ufw en Linux Ubuntu Server y listar las reglas.
- Activar cortafuegos ufw en Linux Ubuntu.
- Desactivar cortafuegos ufw en Linux Ubuntu.
- Desactivar IPv6 en cortafuegos ufw.
- Bloquear el ping (ICMP).
- Añadir una regla para permitir acceso por el puerto 80 a cualquier IP.
- Eliminar una regla en ufw por su número de orden.
Comprobar estado del cortafuegos ufw en Linux Ubuntu Server y listar las reglas
Para comprobar el estado general del cortafuegos ufw en un equipo con Linux Ubuntu Server, desde el shell de comandos, ejecutaremos el siguiente comando:
1 |
ufw status verbose |
Nos devolverá si el cortafuegos está activo y las reglas básicas aplicadas:
1 2 3 4 5 6 7 8 9 10 |
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN 192.168.1.4 22/tcp ALLOW IN 192.168.1.20 3306 ALLOW IN Anywhere (v6) |
Como podemos comprobar, el comando anterior devuelve el estado del cortafuegos «active» indicando que está activo. Y, al final, devuelve las reglas aplicadas actualmente. Para ver las reglas con el número de orden podemos ejecutar el comando:
1 |
ufw status numbered |
Que devolverá las reglas con su número de orden. Este número es útil para eliminar o modificar una regla por número de orden:
1 2 3 4 5 6 |
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN 192.168.1.4 [ 2] 22/tcp ALLOW IN 192.168.1.20 [ 3] 3306 ALLOW IN Anywhere (v6) |
Activar cortafuegos ufw en Linux Ubuntu
Si el cortafuegos ufw está inactivo y queremos activarlo, antes de hacerlo, es recomendable añadir una regla para permitir la conexión SSH (si es la que estamos usando para la administración). Dado que cuando se active el cortafuegos, si no hay regla para el SSH, nos denegará el acceso.
Por ello, si estamos conectados al equipo Linux por SSH, añadiremos una regla para permitir el tráfico SSH desde nuestra IP, con el siguiente comando:
1 |
ufw allow from 192.168.1.10 to any port 22 proto tcp |
Con la regla anterior estamos permitiendo el acceso por el puerto 22 (SSH) desde un equipo con IP 192.168.1.10. Como es lógico, cambiaremos el puerto y la IP por el que tengamos en nuestra organización.
Ahora podremos activar el cortafuegos con el comando:
1 |
ufw enable |
Nos pedirá confirmación con un mensaje indicando que las conexiones actuales podrían interrumpirse. Puesto que hemos habilitado el acceso SSH, no perderemos la conexión. Responderemos «s» e INTRO. Si todo es correcto, nos mostrará el mensaje:
El cortafuegos está activo y habilitado en el arranque del sistema
Comprobaremos que está activo con el comando:
1 |
ufw status verbose |
Nos devolverá en estado «activo»:
En el resultado del comando anterior, por defecto, ufw bloquea todo el tráfico de entrada y permite todo el tráfico de salida. Este comportamiento se podría modificar. Para dejar los valores de defecto (permitir el tráfico de salida y denegar todo el de entrada), ejecutaremos los comandos:
1 2 |
ufw default deny incoming ufw default allow outgoing |
Desactivar cortafuegos ufw en Linux Ubuntu
Para desactivar el cortafuegos ufw, es suficiente con ejecutar el siguiente comando:
1 |
ufw disable |
Nos mostrará el mensaje:
El cortafuegos está detenido y deshabilitado en el arranque del sistema
Teniendo en cuenta que una vez desactivado, la seguridad en el equipo disminuirá dado que se permitirán todos los accesos de entrada y salida.
Desactivar IPv6 en cortafuegos ufw
Si no vamos a usar IPv6 en el equipo Linux con el cortafuegos, podremos desactivarlo editando el fichero /etc/default/ufw:
1 |
nano /etc/default/ufw |
Y modificando la línea;
IPV6=yes
Por:
IPV6=no
Guardaremos los cambios pulsando Control + O y cerraremos la edición pulsando Control + X.
Para aplicar el cambio deberemos reiniciar el servicio del cortafuegos, con:
1 |
ufw reload |
Al desactivar el IPv6, si teníamos alguna regla para IPv6, indicada con un (V6) al final, desaparecerán. Podemos comprobarlo con:
1 |
ufw status verbose |
Bloquear el ping (ICMP)
Para bloquear el ping (ICMP) en un equipo, para que no envíe respuesta (por seguridad) a un ping (ICMP), se puede editar el fichero /etc/ufw/before.rule con:
1 |
nano /etc/ufw/before.rule |
Y comentar todas estas líneas (añadiendo un # delante):
1 2 3 4 5 6 |
# ok icmp codes -A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT -A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT -A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT -A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT |
Quedando:
1 2 3 4 5 6 |
# ok icmp codes #-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT #-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT #-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT #-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT #-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT |
Guardaremos los cambios pulsando Control + O y cerraremos la edición pulsando en Control + X.
Recargaremos las reglas con el comando:
1 |
ufw reload |
Y ya no se podrá hacer ping al equipo, devolverá un error, como si no lo encontrara:
Añadir una regla para permitir acceso por el puerto 80 a cualquier IP
Si en el equipo Linux tenemos un servicio web como Apache o Nginx y estamos usando el puerto 80 (el de defecto), cuando activamos el cortafuegos ufw, se bloquearán estos accesos. Para permitir el acceso por el puerto 80 desde cualquier equipo de la red, ejecutaremos el siguiente comando:
1 |
ufw allow from any to any port 80 proto tcp |
De la misma forma, si estamos usando SSL (HTTPS) con su puerto por defecto 443, podremos permitir estas conexiones con:
1 |
ufw allow from any to any port 443 proto tcp |
Eliminar una regla en ufw por su número de orden
Si queremos eliminar una regla existente en el cortafuegos ufw, en primer lugar listaremos las reglas existentes con su número de orden correspondiente, con el comando:
1 |
ufw status numbered |
Una vez identificada la regla que queremos eliminar, anotaremos su número, por ejemplo la regla 2:
Y ejecutaremos el siguiente comando para eliminarla:
1 |
ufw delete 2 |
Tras eliminar la regla, si volvemos a mostrar las reglas, ya no aparecerá: