Cómo instalar y configurar UFW: un FireWall sencillo en Debian / Ubuntu


Dado que las computadoras están conectadas entre sí, los servicios están creciendo rápidamente. El correo electrónico, las redes sociales, la tienda en línea, el chat hasta la conferencia web son servicios que utiliza el usuario. Pero, por otro lado, a esta conectividad solo le gusta un cuchillo de doble cara. También es posible enviar mensajes maliciosos a esas computadoras como virus, malware, aplicaciones de troyanos son uno de ellos.

Internet, como la red informática más grande, no siempre está llena de gente buena. Para asegurarnos de que nuestras computadoras/servidores estén seguros, debemos protegerlos.

Uno de los componentes imprescindibles en su computadora/servidores es Firewall. De Wikipedia, una definición es:

En informática, un cortafuegos es un sistema de seguridad de red basado en software o hardware que controla el tráfico de red entrante y saliente mediante el análisis de los paquetes de datos y la determinación de si se deben permitir o no, según el conjunto de reglas aplicadas.

Iptables es uno de los cortafuegos más utilizado por los servidores. Es un programa que se utiliza para administrar el tráfico entrante y saliente en el servidor en función de un conjunto de reglas. Generalmente, solo se permite la entrada al servidor de una conexión confiable. Pero IPTables se ejecuta en modo consola y es complicado. Aquellos que estén familiarizados con las reglas y comandos de iptables, pueden leer el siguiente artículo que describe cómo usar el firewall de iptables.

  1. Basic IPTables (Linux Firewall) Guide

Instalación de UFW Firewall en Debian / Ubuntu

Para reducir la complejidad de cómo configurar IPTables, hay muchos archivos. Si está ejecutando Ubuntu Linux, encontrará ufw como una herramienta de firewall predeterminada. Comencemos a explorar sobre el firewall ufw.

El ufw (cortafuegos sin complicaciones) es una interfaz para el cortafuegos de iptables más utilizado y es muy cómodo para los cortafuegos basados u200bu200ben host. ufw proporciona un marco para administrar netfilter, así como una interfaz de línea de comandos para controlar el firewall. Proporciona una interfaz amigable y fácil de usar para los principiantes de Linux que no están muy familiarizados con los conceptos de firewall.

Mientras que, por otro lado, los mismos comandos complicados ayudan a los administradores a establecer reglas complicadas utilizando la interfaz de línea de comandos. El ufw es un upstream para otras distribuciones como Debian, Ubuntu y Linux Mint.

Primero, verifique si ufw está instalado usando el siguiente comando.

$ sudo dpkg --get-selections | grep ufw

ufw 		install

Si no está instalado, puede instalarlo usando el comando apt como se muestra a continuación.

$ sudo apt-get install ufw

Antes de usar, debe verificar si ufw se está ejecutando o no. Use el siguiente comando para verificarlo.

$ sudo ufw status

Si encontró Estado: inactivo, significa que no está activo o inhabilitado.

Para habilitarlo, solo necesita escribir el siguiente comando en la terminal.

$ sudo ufw enable

Firewall is active and enabled on system startup

Para deshabilitarlo, simplemente escriba.

$ sudo ufw disable

Una vez activado el cortafuegos, puede agregar sus reglas. Si desea ver cuáles son las reglas predeterminadas, puede escribir.

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
$

Como puede ver, de forma predeterminada se niegan todas las conexiones entrantes. Si desea controlar su máquina de forma remota, debe permitir el puerto adecuado. Por ejemplo, desea permitir la conexión ssh. Aquí está el comando para permitirlo.

$ sudo ufw allow ssh

[sudo] password for pungki :
Rule added
Rule added (v6)
$

Si vuelve a comprobar el estado, verá un resultado como este.

$ sudo ufw status

To 		Action 			From
-- 		----------- 		------
22 		ALLOW 			Anywhere
22 		ALLOW 			Anywhere (v6)

Si tiene muchas reglas y desea poner números en todas las reglas sobre la marcha, use el parámetro numerado.

$ sudo ufw status numbered

To 		Action 			From
------ 		----------- 		------
[1] 22 		ALLOW 			Anywhere
[2] 22 		ALLOW 			Anywhere (v6)

La primera regla dice que se permite la conexión entrante al puerto 22 desde cualquier lugar, tanto los paquetes tcp como los udp. ¿Qué sucede si solo desea permitir el paquete tcp? Luego, puede agregar el parámetro tcp después del número de puerto. A continuación, se muestra un ejemplo con un resultado de muestra.

$ sudo ufw allow ssh/tcp

To 		Action 			From
------ 		----------- 		------
22/tcp 		ALLOW 			Anywhere
22/tcp 		ALLOW 			Anywhere (v6)

Los mismos trucos se aplican a la regla Denegar. Digamos que quiere denegar la regla ftp. Así que solo tienes que escribir.

$ sudo ufw deny ftp

To 		Action 			From
------ 		----------- 		------
21/tcp 		DENY 			Anywhere
21/tcp 		DENY 			Anywhere (v6)

A veces tenemos un puerto personalizado que no sigue ningún estándar. Digamos que cambiamos el puerto ssh en nuestra máquina de 22 a 2290. Luego, para permitir el puerto 2290, podemos agregarlo así.

$ sudo ufw allow

To 		Action 			From
-- 		----------- 		------
2290 		ALLOW 			Anywhere
2290 		ALLOW 			Anywhere (v6)

También es posible agregar un rango de puertos a la regla. Si queremos abrir el puerto de 2290 a 2300 con el protocolo tcp, entonces el comando será así.

$ sudo ufw allow 2290:2300/tcp

To 			Action 			From
------ 			----------- 		------
2290:2300/tcp 		ALLOW 			Anywhere
2290:2300/tcp 		ALLOW			Anywhere (v6)

mientras que si desea usar udp, simplemente use el siguiente comando.

$ sudo ufw allow 2290:2300/udp

To 			Action 			From
------ 			----------- 		------
2290:2300/udp 		ALLOW 			Anywhere
2290:2300/udp 		ALLOW			Anywhere (v6)

Recuerde que debe poner "tcp" o "udp" explícitamente; de u200bu200blo contrario, recibirá un mensaje de error similar al siguiente.

ERROR: Must specify ‘tcp’ or ‘udp’ with multiple ports

Anteriormente hemos agregado reglas basadas en el servicio o el puerto. Ufw también le permite agregar reglas basadas en la dirección IP. Aquí está el comando de muestra.

$ sudo ufw allow from 192.168.0.104

También puede utilizar una máscara de subred para ampliar el rango.

$ sudo ufw allow form 192.168.0.0/24

To 		Action 			From
-- 		----------- 		------
Anywhere	ALLOW 			192.168.0.104
Anywhere	ALLOW 			192.168.0.0/24

Como puede ver, el parámetro from solo limitará la fuente de conexión. Mientras que el destino, que está representado por la columna Para, es Cualquier lugar. También puede administrar el destino mediante el parámetro "Para". Veamos el ejemplo para permitir el acceso al puerto 22 (ssh).

$ sudo ufw allow to any port 22

El comando anterior permitirá el acceso desde cualquier lugar y desde cualquier protocolo al puerto 22.

Para reglas más específicas, también puede combinar dirección IP, protocolo y puerto. Digamos que queremos crear una regla que limite la conexión solo desde IP 192.168.0.104, solo protocolo tcp y al puerto 22. Entonces el comando será como el siguiente.

$ sudo ufw allow from 192.168.0.104 proto tcp to any port 22

La sintaxis para crear una regla de denegación es similar a la de permitir. Solo necesita cambiar el parámetro de permitir a denegar.

En algún momento, es posible que deba eliminar su regla existente. Una vez más, con ufw es fácil eliminar reglas. De la muestra anterior, tiene una regla a continuación y desea eliminarla.

To 		Action 			From
-- 		----------- 		------
22/tcp		ALLOW 			192.168.0.104
21/tcp		ALLOW 			Anywhere
21/tcp 		ALLOW 			Anywhere (v6)

Hay dos métodos para eliminar reglas.

El siguiente comando eliminará las reglas que coincidan con el servicio ftp. Entonces, el 21/tcp, lo que significa que se eliminará el puerto ftp.

$ sudo ufw delete allow ftp

Pero cuando intentó eliminar la primera regla en el ejemplo anterior usando el comando a continuación.

$ sudo ufw delete allow ssh

Or 

$ sudo ufw delete allow 22/tcp

Puede encontrar un mensaje de error como.

Could not delete non-existent rule
Could not delete non-existent rule (v6)

Entonces puedes hacer este truco. Como mencionamos anteriormente, puede mostrar el número de regla para indicar qué regla queremos eliminar. Te lo mostramos.

$ sudo ufw status numbered

To 		Action 			From
-- 		----------- 		------
[1] 22/tcp		ALLOW 			192.168.0.104
[2] 21/tcp		ALLOW 			Anywhere
[3] 21/tcp 		ALLOW 			Anywhere (v6)

Entonces puedes eliminar la primera regla usando. Presione "y" eliminará permanentemente la regla.

$ sudo ufw delete 1

Deleting :
Allow from 192.168.0.104 to any port 22 proto tcp
Proceed with operation (y|n)? y

A partir de esos métodos, verá la diferencia. El método 2 pedirá confirmación al usuario antes de eliminar la regla, mientras que el método 1 no.

En alguna situación, es posible que desee eliminar/restablecer todas las reglas. Puede hacerlo escribiendo.

$ sudo ufw reset

Resetting all rules to installed defaults. Proceed with operation (y|n)? y

Si presiona “y”, ufw hará una copia de seguridad de todas las reglas existentes antes de hacer el reinicio de su ufw. Restablecer las reglas también desactivará su firewall. Debe habilitarlo nuevamente si desea usarlo.

Como dije anteriormente, el firewall ufw puede hacer todo lo que iptables puede hacer. Esto se logra mediante el uso de varios conjuntos de archivos de reglas, que no son más que archivos de texto apropiados para iptables-restore. Ajustar ufw y/o colocar comandos iptables adicionales no permitidos a través del comando ufw es una cuestión de editar varios archivos de texto.

  1. /etc/default/ufw: The main configuration for default policies, IPv6 support and kernel modules.
  2. /etc/ufw/before[6].rules: rules in these files are calculate before any rules added via the ufw command.
  3. /etc/ufw/after[6].rules: rules in these files are calculate after any rules added via the ufw command.
  4. /etc/ufw/sysctl.conf: kernel network tunables.
  5. /etc/ufw/ufw.conf: sets whether or not ufw is enabled on boot and sets the LOGLEVEL.

Conclusión

UFW como interfaz para iptables seguramente hace una interfaz fácil para el usuario. El usuario no necesita recordar la sintaxis complicada de iptables. UFW también usa "inglés simple" como parámetro.

Permitir, negar, restablecer son uno de ellos. Creo que existen muchas más interfaces de usuario de iptables. Pero definitivamente ufw es una de las mejores alternativas para los usuarios que desean configurar su firewall de forma rápida, fácil y, por supuesto, segura. Visite la página del manual de ufw escribiendo man ufw para obtener más detalles.