Alejandro Muñoz Fernández

Cortafuegos UFW para un servidor en Raspberry Pi

Receta para configurar el cortafuegos UFW permitiendo el acceso desde fuera de casa.

1. Política predeterminada: denegar todo el tráfico

Por seguridad, lo ideal es denegar de forma predeterminada tanto el tráfico entrante como el saliente, para luego abrir únicamente lo que necesitemos.

Cerramos todo el tráfico de entrada:

$ sudo ufw default deny incoming

Y el de salida:

$ sudo ufw default deny outgoing

2. Tráfico permitido

2.1. Salida DNS

Esencial para que la Raspberry Pi pueda resolver nombres de dominio.

$ sudo ufw allow out 53/udp
$ sudo ufw allow out 53/tcp

2.2. NTP

Acceso a servidores NTP para sincronizar la fecha y la hora del sistema:

$ sudo ufw allow out 123/udp

Permite las conexiones salientes desde la Raspberry Pi a servidores web externos:

$ sudo ufw allow out 80/tcp
$ sudo ufw allow out 443/tcp

2.4. Servidores FTP

Ya casi no se utilizan pero, por si acaso (nota: el modo activo requiere el puerto 20):

$ sudo ufw allow out 20/tcp
$ sudo ufw allow out 21/tcp

2.5. Servidores SSH

Acceso al servidor SSH de la Raspberry Pi solo desde la red local:

$ sudo ufw allow in from 192.168.1.0/24 to any port 22 proto tcp

Acceso desde la Raspberry Pi a cualquier servidor SSH externo en internet:

$ sudo ufw allow out 22/tcp

2.6. Servidores Samba

Para compartir archivos en red local. Solo se permite el tráfico dentro de la LAN:

$ sudo ufw allow in from 192.168.1.0/24 to any port 137 proto udp
$ sudo ufw allow in from 192.168.1.0/24 to any port 138 proto udp
$ sudo ufw allow in from 192.168.1.0/24 to any port 139 proto tcp
$ sudo ufw allow in from 192.168.1.0/24 to any port 445 proto tcp

$ sudo ufw allow out to 192.168.1.0/24 port 137 proto udp
$ sudo ufw allow out to 192.168.1.0/24 port 138 proto udp
$ sudo ufw allow out to 192.168.1.0/24 port 139 proto tcp
$ sudo ufw allow out to 192.168.1.0/24 port 445 proto tcp

2.7. mDNS

Permite la resolución de nombres .local mediante Avahi / Bonjour. Se utiliza el puerto 5353 y la dirección multicast 224.0.0.251:

$ sudo ufw allow in proto udp to 224.0.0.251 port 5353
$ sudo ufw allow out proto udp to 224.0.0.251 port 5353

2.8. RDC (Remote Desktop Connection)

Acceso por escritorio remoto mediante el protocolo RDP, limitado a la red local:

$ sudo ufw allow in from 192.168.1.0/24 to any port 3389 proto tcp

2.9. DHCP (Opcional, si se usa IP dinámica)

Si tu Raspberry Pi no tiene una IP fija y depende de un servidor DHCP para obtenerla:

$ sudo ufw allow out 67/udp
$ sudo ufw allow in 68/udp

2.10. Ping / ICMP (Opcional)

Permite realizar diagnósticos de red enviando pings desde la Raspberry y respondiendo a los pings recibidos desde la LAN:

$ sudo ufw allow out proto icmp
$ sudo ufw allow in from 192.168.1.0/24 proto icmp

3. Activar el cortafuegos

$ sudo ufw enable

4. Verificar el estado

Para comprobar que todas las reglas se han aplicado correctamente:

$ sudo ufw status verbose