Cómo configurar el cortafuegos UFW en Ubuntu 18.04

En este artículo, le mostraré cómo configurar el firewall UFW en Ubuntu 18.04. En Ubuntu, el firewall predeterminado es UFW, abreviatura de FireWall sin complicaciones. Ha existido desde el lanzamiento de Ubuntu 18.04 y se creó para simplificar la configuración de iptables, que era bastante compleja.

Cuando se usa cualquier operación, un firewall es una de las características más importantes que se deben considerar en lo que respecta a la seguridad de su sistema. Un firewall es un escudo o barrera que existe entre su PC e Internet y bloquea el tráfico no autorizado, como el acceso remoto a su sistema, y ​​ayuda a protegerse contra códigos maliciosos que atraviesan constantemente Internet. Un cortafuegos puede ser hardware o software. Un firewall de hardware es un sistema de firewall independiente que se coloca en la red para agregar una capa protectora al controlar el flujo de tráfico hacia y desde la red, así como para bloquear el acceso de los usuarios a sitios no deseados. Un firewall de software está integrado en sistemas operativos como Linux y Windows y ayuda a mantener su sistema a salvo de ataques externos.

Lea también:

  • Cómo habilitar, denegar, permitir y eliminar reglas en Ubuntu UFW Firewall

Instalación de UFW

De forma predeterminada, Ubuntu 18.04 viene con ufw instalado. Sin embargo, para sistemas anteriores, tendría que ejecutar el siguiente comando

apt-get install ufw

Para comprobar si ufw se está ejecutando, ejecute

systemctl status ufw

Si se está ejecutando, debería obtener el resultado a continuación

● ufw.service - Uncomplicated firewall
   Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enab
   Active: active (exited) since Tue 2018-04-10 22:03:30 UTC; 4min 1s ago
  Process: 376 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SU
 Main PID: 376 (code=exited, status=0/SUCCESS)
    Tasks: 0
   Memory: 0B
      CPU: 0
   CGroup: /system.slice/ufw.service

Apr 10 22:03:30 ip-172-31-41-251 systemd[1]: Started Uncomplicated firewall.
Warning: Journal has been rotated since unit was started. Log output is incomple

Para comprobar si está activo o inactivo, ejecute

ufw status

Si está inactivo, obtendrá el resultado a continuación

Status: inactive

Para activar UFW con el conjunto de reglas predeterminado, ejecute

ufw enable

Para deshabilitar el firewall, ejecute

ufw disable

Configuración de reglas ufw predeterminadas

Para configurar reglas predeterminadas que permitan todos los protocolos salientes, inicie sesión como root y ejecute

ufw default allow outgoing

Producción

Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)

Para denegar todas las conexiones entrantes, ejecute

ufw default deny incoming

Producción

Default outgoing policy changed to 'deny'
(be sure to update your rules accordingly)

Los comandos anteriores permitirán todas las conexiones salientes y denegarán o bloquearán todas las conexiones entrantes.
En este punto, es posible que desee habilitar el firewall, sin embargo, antes de hacerlo, primero permita ssh. Esto evita la desconexión del servidor ya que especificamos la denegación de todas las conexiones entrantes anteriormente.

Para permitir ssh, ejecute

ufw allow 22/tcp

Saliente

Skipping adding existing rule
Skipping adding existing rule (v6)

El acceso ssh también se puede permitir por el nombre del servicio,

ufw allow ssh

Si desea eliminar la regla, ejecute

ufw delete allow 22/ssh

Para denegar un servicio por nombre ejecutar

ufw deny service-name

Por ejemplo

ufw deny ssh

Para ver todos los servicios que se pueden permitir o denegar en el sistema, consulte la /etc/services Archivo.

cat /etc/services | less

Salida de muestra

ftp-data        20/tcp
ftp             21/tcp
fsp             21/udp          fspd
ssh             22/tcp                          # SSH Remote Login Protocol
ssh             22/udp
telnet          23/tcp
smtp            25/tcp          mail
time            37/tcp          timserver
time            37/udp          timserver
rlp             39/udp          resource        # resource location
nameserver      42/tcp          name            # IEN 116
whois           43/tcp          nicname
tacacs          49/tcp                          # Login Host Protocol (TACACS)
tacacs          49/udp
re-mail-ck      50/tcp                          # Remote Mail Checking Protocol
re-mail-ck      50/udp
domain          53/tcp                          # Domain Name Server
domain          53/udp

Iniciando el cortafuegos de ufw

Para activar el firewall, inicie sesión como root y ejecute el siguiente comando:

 ufw enable

Es posible que se le solicite la siguiente advertencia

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

Si selecciona sí, obtendrá el resultado a continuación

Firewall is active and enabled on system startup

El cortafuegos ahora está activo y se iniciará en cada arranque. Podemos mirar las reglas del firewall nuevamente:

ufw status

La salida ahora mostrará el estado del firewall más los servicios / puertos permitidos

Producción

ufw status active
Status: active

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

Permitir conexiones en ufw

Puede permitir fácilmente la conexión entrante en el puerto / rango, nombre de la aplicación, dirección IP / subred en ufw.
Mira los ejemplos a continuación.

a) Permitir aplicaciones por nombre o número / rango de puerto

ufw allow service-name

O

ufw allow port/tcp

Para example

 ufw allow ssh or  ufw allow 22/tcp
 ufw allow ftp or ufw allow 21/tcp

sudo ufw permite 1500: 2000 / tcp

b) Permite direcciones IP / subredes

Los siguientes comandos permiten conexiones desde IP o subredes específicas y también podemos usar números de puerto específicos.
Para permitir conexiones desde una dirección IP específica

ufw allow from 10.200.20.45

Para especificar una IP a la que se le permite conectarse a un puerto específico, ejecute

ufw allow from 10.200.20.45 to any port 22

Lo anterior permite que la dirección IP 10.200.20.45 solo se conecte a través de ssh

Para permitir que una determinada subred de IP se conecte al sistema, utilice la notación CIDR para especificar una máscara de red.

ufw allow from 192.168.1.0/24

Lo anterior permite que las IP de 192.168.1 a 192.168.1.254 se conecten al sistema
También puede especificar el puerto de destino de la subred

ufw allow from 192.168.1.0/24 to any port 22

Esto implica que las IP de 192.168.1 a 192.168.1.254 pueden conectarse al sistema a través del puerto 22, que es ssh.

c) Permitir por el nombre de la interfaz

Si necesitamos permitir conexiones a través del nombre de la interfaz, es posible

ufw allow in on eth0 to any port 80

Cómo denegar conexiones en ufw

De forma predeterminada, ufw está configurado para denegar todas las conexiones entrantes.

a) Dirección IP / subred

Si queremos bloquear el acceso a alguna dirección IP específica, podemos hacerlo siguiendo el comando:

ufw deny from 192.168.1.15

Esto bloqueará todas las conexiones entrantes del host con la dirección IP 192.168.1.15

Siguiente llet’sblock toda la subred:

ufw deny from 150.165.125.0/24

Esto bloqueará todas las conexiones provenientes de esta subred.

b) Denegar puertos y aplicaciones

Negar un puerto o un servicio

ufw deny 80/tcp

O

ufw deny http

sudo ufw deny 1500: 2000 / tcp * Esto negará rangos de puertos *

Eliminar y realizar un seguimiento de las reglas

Cuando agrega muchas reglas, puede rastrearlas mejor al ver sus números. Puede obtener números con el siguiente comando:

ufw status numbered

Producción

ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 22                         ALLOW IN    Anywhere
[ 3] 80/tcp                     ALLOW IN    Anywhere
[ 4] 53/tcp                     ALLOW IN    Anywhere
[ 5] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 6] 22 (v6)                    ALLOW IN    Anywhere (v6)
[ 7] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 8] 53/tcp (v6)                ALLOW IN    Anywhere (v6)

Digamos que queremos eliminar las reglas número 2. Lo hacemos siguiendo el comando:

 ufw delete 2

Nota :

Después de eliminar la segunda regla en el firewall, la regla 3 ahora será la nueva regla 2. Por lo tanto, si desea eliminar la regla actual 3, la eliminará con el número 2.

 ufw delete allow http

Restablecer reglas

Si no está satisfecho con las reglas actuales y desea comenzar de nuevo, puede hacerlo ejecutando

ufw reset

Registro y recarga

Para habilitar el registro, use el siguiente comando:

 ufw logging on

Si desea deshabilitar el registro por algún motivo (no recomendado), puede usar este comando:

sudo ufw cerrando la sesión

Los registros están por defecto en /var/log/ufw.log Para verlos en tiempo real, use tail -f así:

tail -f /var/log/ufw.log /pre>

You will see all actions of firewall in that file. If you need to reload firewall for some reason, because you changed some config files manually, use following command.
 ufw reload

Si desea ver las reglas que se agregaron recientemente

 ufw show added

Archivos de configuración UFW

Para la mayoría de los escenarios, puede usar comandos de terminal, pero en algunos casos, querrá editar los archivos de configuración directamente. El ufw tiene varios archivos de configuración, a saber:

/etc/ufw/before.rules
/etc/ufw/before6.rules

Esos dos archivos contienen reglas que se evalúan antes que todas las reglas que agregó mediante los comandos ufw. Entonces, si desea que se aplique alguna regla primero, la desea allí. El primer archivo es para ipv4 y el segundo es para v6

/etc/ufw/after.rules
/etc/ufw/after6.rules

Estos se evalúan según las reglas del comando ufw. Son buenos para usar si desea anular alguna regla y aplicarla pase lo que pase. Nuevamente, dos archivos, para dos versiones del protocolo IP que se utilizan actualmente.

/etc/default/ufw

Aquí tenemos los módulos del kernel que usa ufw, así como otras configuraciones generales. Puede editar cualquiera de estos archivos de configuración solo como root, y puede usar cualquier editor de texto que desee.

Evite agregar reglas duplicadas
A continuación, observemos el mecanismo contra reglas duplicadas. Primero abriremos el puerto 101

 sudo ufw allow 100

Tenga en cuenta que el comando sin protocolo como el anterior abre los puertos UDP y TCP. Entonces, ejecutemos el mismo comando nuevamente para ver qué sucede

 ufw allow 100

Producción

Skipping adding existing rule
Skipping adding existing rule (v6)

No nos permite agregar una regla duplicada. Eso es bueno, pero aún existe la posibilidad de que podamos agregar una regla duplicada, mediante esta serie de comandos:

 ufw allow 101/udp
 ufw allow 101/tcp

Después de permitir tanto TCP como UDP en el puerto 101, aún podemos agregar el puerto abierto 101 para todos los protocolos y esta es una regla duplicada, ya que el puerto 101 se abre dos veces, una para cada protocolo y una vez para todos.

ufw allow 101

Esto deja margen para el error y, en general, no es una buena práctica. Necesitamos deshacer los tres comandos con el comando ufw delete si queremos volver a los valores predeterminados para el puerto 101.

Para cerrar algún puerto, ejecuta los mismos comandos, solo permite, escribe deny.

En este artículo, hemos cubierto el uso de UFW, que es un cortafuegos sencillo que se utiliza para permitir o restringir el tráfico. Es un firewall muy poderoso para regular el tráfico a su sistema. No dude en probar los comandos en su sistema.