Configuración de un firewall de manera sencilla en Debian/Ubuntu
Uno de los problemas principales a la hora de asegurar un servidor es la de filtrar el tráfico de entrada y de salida del mismo, asegurando así que todas las conexiones entrantes y salientes están controladas y sabemos desde donde podemos entrar a los servicios que queremos y no desde donde no queremos. En esta entrada veremos cómo realizar estos pasos de manera sencilla con ufw.
Instalación
El primer paso que debemos realizar es la instalación de UFW:
$ sudo apt install ufw
Con este paso instalamos el firewall y los comandos principales.
Recuerda repasar el /etc/default/ufw para ver que tenemos activada la opción IPV6=yes
Arranque y parada
Para activar el firewall debemos ejecutar, recuerda no activarlo hasta que tengas al menos acceso por ssh, por si metes la pata:
$ sudo ufw enable
Para desactivar el firewall:
$ sudo ufw disable
Resetear las reglas
Si la hemos cagado siempre podemos intentar empezar desde cero:
$ sudo ufw reset
Punto de partida
Para establecer una serie de principios:
- Queremos que desde la red interna se pueda acceder sin problemas
- Queremos que desde Internet tengamos restricciones en el tráfico
Para ello deberemos elegir muy bien las reglas de acceso en cada sentido y desde cada origen
Comprobación del estado del firewall
Para saber cómo está el firewall tenemos dos comandos, el primero nos dará su estado:
$ sudo ufw status numbered
Esto nos dará el lisatdo de reglas configuradas en el firewall de una manera sencilla
Si necesitamos saber más sobre el servicio:
$ sudo ufw status verbose
Esto nos mostrará más información del Firewall
Asegurando el acceso desde la Intranet
Para ello deberemos ejecutar alguna regla controlada:
$ sudo ufw allow from 192.168.1.0/24
En este caso estamos diciendo que queremos permitir el acceso desde nuestra red local, suponiendo que nuestra ip interna sea 192.168.1.x
Si nuestra red interna es 192.168.0.x ejecutaremos:
$ sudo ufw allow from 192.168.0.0/24
Permitiendo la salida de datos del servidor
Para ello deberemos decir que por defecto queremos permitir el tráfico saliente:
$ sudo ufw default allow outgoing
Esto nos ayuda a que si desde el servidor queremos crear conexiones hacia fuera no nos de ningún problema
En el caso de cortar todo el tráfico de entrada ejecutaríamos:
$ sudo ufw default deny incoming
Pero personalmente prefiero decir exactamente que quiero o no dejar entrar a mano
¿Qué puertos tenemos abiertos?
Para saber que puertos tenemos abiertos en nuestra máquina siempre podemos usar el comando nmap, instálalo en el caso de que no lo tengas:
$ sudo apt install nmap
Para saber los puertos abiertos te bastará con ejecutarlo desde el servidor:
$ nmap localhost
Aquí tendrás los puertos abiertos en tu servidor, y podrás hacer un listado de aquellos puertos que quieres cerrar su acceso desde fuera y cuales quieres dejar abiertos.
Cerrando acceso a puertos desde fuera
Para cerrar por ejemplo el acceso a las carpetas compartidas desde fuera ejecutaremos las siguientes reglas:
$ sudo ufw deny from 0.0.0.0/0 to any port 139
$ sudo ufw deny from 0.0.0.0/0 to any port 445
Permitiendo acceso a puertos desde fuera
Para abrir los puertos tendremos que indicar que puertos en concreto queremos indicar:
$ sudo ufw allow from 0.0.0.0/0 to any port 22
Así abriremos el puerto ssh
$ sudo ufw allow from 0.0.0.0/0 to any port 80
Así abriremos el puerto web
Aplicando las reglas
Revisa las reglas que tienes aplicadas:
$ sudo ufw status numbered
Ahora ya sólo queda cruzar los dedos y aplicar las reglas arrancando el servicio de Firewall, como indicamos antes
$ sudo ufw enable
Borrando Reglas
Para borrar reglas en base a su número, que hayamos sacado con status numbered podemos ejecutar:
$ sudo ufw delete numero_regla
por ejemplo
$ sudo ufw delete 2
para borrar la regla 2
Comprobaciones
Ahora ya sólo te falta comprobar que las reglas que has aplicado funcionan correctamente, tanto desde dentro de la Intranet como desde fuera, desde Internet
Ya sabes que si falla siempre puedes volver a empezar parando el firewall:
$ sudo ufw disable
y reseteando las reglas:
$ sudo ufw reset
Comments