¡Buen día! Linux (el kernel) incorpora un firewall con el cual se pueden hacer muchas cosas interesantes a nivel de protección de un equipo, pero es bastante difícil de entender… hablo del iptables. Es difícil en el sentido de que la curva de aprendizaje del mismo, para manejarlo bien, es bastante más grande que el firewall de Windows (por poner un ejemplo). En nuestro caso (para efectos de ésta entrada), vamos a instalar y utilizar un firewall desarrollado por Ubuntu bastante sencillo, el cual se llama ufw (Uncomplicated Firewall); éste fue diseñado para ser fácil de usar y utiliza la línea de comandos para configurar las iptables usando un pequeño número de comandos simples.
Éste firewall (ufw) también cuenta con un interfaz gráfica o GUI para los que lo prefieran, el cual se llama Gufw. Para nuestro caso, veremos cómo utilizar ufw de forma básica mediante línea de comando. Creo que por defecto ya esta instalado y solo hace falta activarlo, pero si no se tiene instalado, ingresamos:
sudo apt install ufw
Ver el estado del firewall, activar o detenerlo
Para ver el estado de UFW:
sudo ufw status
Antes de ver la activación o desactivación del firewall, mencionar que si estamos conectados en remoto (vía ssh) al servidor que queremos proteger y lo activamos, probablemente se nos caerá la conexión, por cuanto es mejor iniciar directamente desde el servidor o crear la regla respectivas antes de activarlo.
Para activar ufw:
sudo ufw enable
Para detenerlo:
sudo ufw disable
Si queremos ver el estado detallado del firewall, ingresamos:
sudo ufw status verbose
Se nos presentará algo parecido (dependiendo de las reglas que se tengan configuradas). ¡Éste es un ejemplo!:
Para éste ejemplo, se nos muestra el estado de ufw (Activo), el estado del log, la política por defecto del tráfico de entrante, saliente y el enrutamiento (en la imagen se muestra que el tráfico entrante esta bloqueado, el saliente permitido y esta deshabilitado el enrutamiento) y, finalmente, nos muestra las reglas que se han creado… para el ejemplo anterior, se permite el tráfico de entrada desde cualquier parte (Internet, red interna, etc.) hacia el puerto 22 (ssh), 80 (http) y otros de nuestro servidor, tanto para IPv4 como para IPv6.
Establecer la política de diseño de firewall
La política de diseño de firewall es la que especifica cómo un firewall restringirá el acceso. Los firewalls implementan básicamente dos políticas de diseño:
- Política permisiva. Permitir el acceso a cualquier servicio a menos que se especifique explícitamente lo contrario.
- Política restrictiva. Denegar cualquier servicio a menos que se especifique explícitamente lo contrario.
Normalmente, para el tráfico de salida, se utiliza de base la política permisiva y, para el tráfico de entrada, se utiliza la política restrictiva. Una vez definidas éstas políticas por defecto, se pueden crear todas las reglas adicionales que se requieran.
Entonces, para bloquear todo el tráfico de entrada hacemos:
sudo ufw default deny incoming
y para permitir todo el tráfico saliente:
sudo ufw default allow outgoing
Esto es lo recomendado (por cuestión de seguridad), pero igual… pueden jugar con el deny (denegar) o el allow (permitir) en el tráfico de entrada (incoming) y en el tráfico saliente (outgoing) como ustedes quieran.
Crear reglas
Las reglas son indispensables en el firewall para poder bloquear o permitir conexiones y transmisiones de datos entre equipos conectados en red (intranet, internet, etc.); Para crear reglas en ufw, lo podemos hacer básicamente de dos formas: por nombre de servicio o por número de puerto / protocolo de transporte (TCP-UDP).
Regla por nombre de servicio. Permitirá a cualquiera en Internet conectarse a dispositivos en el LAN usando http. Si no se especifica el desde (from) y el hacia (to), por defecto se entiende que se trata desde cualquier lugar (intranet, internet, etc.) hacia nuestro servidor (si no se especifica algo más).
sudo ufw allow www
Regla por número de puerto (puerto por defecto de http). En éste caso, vamos a denegar el tráfico.
sudo ufw deny 80/tcp
Notar que podemos especificar el protocolo de transporte que se requiere… podría ser digamos tcp o udp.
Los nombres de los servicios que se pueden usar, están dentro del archivo /etc/services , aunque también ufw tiene unos nombres de servicios que también pueden servir de guía. Se puede consultar ingresando:
sudo ufw app list
Estas reglas son básicas, pero también podemos crear reglas más específicas o avanzadas, como para permitir/denegar tráfico desde o hacia una IP, IPs o red específica.
En el siguiente ejemplo, se permite el tráfico desde la red 192.168.192.0/24 hacia nuestro servidor (127.0.0.1), específicamente a la aplicación www (puerto 80/TCP).
sudo ufw allow from 192.168.192.0/24 to 127.0.0.1 app www
Se puede usar rangos de IPs…
sudo ufw allow 1000:2000/tcp
Podemos permitir el acceso desde una IP específica:
sudo ufw allow from 192.168.192.251
Borrar reglas
Se usa el parámetro «delete» seguido de la regla que se quiere eliminar, para borrar una regla. En nuestro caso, eliminaremos varias reglas que se crearon de ejemplo así:
sudo ufw delete allow www sudo ufw delete deny 80/tcp sudo ufw delete allow 1000:2000/tc
O más fácil aún (a mi parecer….) es que eliminemos la regla específica por medio de su número jerárquico. Para ver los números de cada regla, hacemos así:
sudo ufw status numbere
Ejemplo:
Entre corchetes [] podemos ver el número de regla; de ésta manera, podemos eliminar una regla específica:
sudo ufw delete 1
Según la línea de comando anterior, se eliminará la regla 1 (sobre el puerto 22).
Limpiar la configuración
Si nos hemos equivocado todo y queremos volver a configurar todo xD lo podemos hacer así:
sudo ufw reset
Con esto, se eliminarán todas las reglas que hemos creado. ¡Cuidado!.
¡Eso es todo amigos!. ¡Saludos!