Protegerse con el firewall personal UFW (y su interfaz gráfica GUFW)

[h]Aumenta tu seguridad fácilmente con el firewall personal “Uncomplicated FireWall” (UFW) y su interfaz gráfica GUFW [/h]

https://www.wifi-libre.com/img/members/3/ufwgufw_1.jpg

Ayer he explicado a grandes rasgos la diferencia entre un firewall y un firewallpersonal” (ver Firewall y Firewall personal: Dos es mejor que uno.)
Hoy vamos a seguir con esta temática y ver como instalar/usar un firewall personal en linux.
Hablaremos de Uncomplicated Firewall y de su interfaz gráfica GUFW (Gui for Uncomplicated firewall)
Obviamente existen otros firewall personales que ufw. Lo que tiene ufw es que esta muy bien documentado, es reconocido desde años y incluso esta instalado por defecto en varios sistemas operativos (por ejemplo ubuntu).
Tiene también la ventaja de ser presente en muchos repositorios lo que facilita su instalación y garantiza soporte.
Antes de ver concretamente como hacer lo funcionar, unas palabras sobre el funcionamiento del firewall personal en Linux.

[h]Netfilter y iptables[/h]

El trafico entre nuestro ordenador y la red a la cuál esta conectado (por ejemplo nuestra red wifi) se hace a través de unos puertos.
Por convención se usan ciertos puertos para cierto tipo de protocolo.
Por ejemplo el puerto 80 esta dedicado al trafico http (Internet “no seguro”) mientras que le puerto 443 permite le trafico “web seguro” (cifrado) con https.
Si decidimos cerrar el puerto 80 y dejar solo el 443 abierto solo podríamos visitar paginas web “seguras”.
Es ideal a nivel de seguridad pero no tendríamos acceso a muchas web que siguen utilizando el viejo protocolo http. :confused:

Netfilter es el “sub-sistema” encargado de gestionar los puertos y el trafico en nuestros sistemas operativos GNU-Linux. (incluido en el propio kernel linux)
Para poder interactuar con netfilter y establecer nuestras propias reglas tenemos a la herramienta iptable, que se usa con lineas de ordenes.
iptables es mucho más que un “firewall personal”. Lógicamente se puede usar iptables para construir nuestro firewall personal.
La cosa es que es una herramienta que no ha sido pensado solo para ello, requiere hacer todo en linea de comando así que no es la solución más cómoda.
Por esto existen “firewall personales” como ufw, son programas centrados solo sobre este aspecto y pensados para facilitarnos la vida.
El firewalll personal se va a encargar de redactar para nostr@s las reglasiptables que determinaran el comportamiento de netfliter

[h]UFW: Instalación y algunos ejemplos de uso[/h]

ufw esta instalado por defecto en Ubuntu y sus derivados (Xubuntu, Lubuntu, Kubuntu, Linux Mint etc… ) así que no tenemos nada que hacer (a parte de activarlo y establecer las reglas que queremos)
No esta instalado en debian o Kali linux pero si que lo tenemos en nuestros repositorios.
Con lo cuál nos basta para instalarlo hacer en consola:

sudo apt-get install ufw

Tampoco esta instalado por defecto en Arch linux pero lo tenemos en nuestros repositorios, así que :

sudo pacman -S ufw

Una vez instalado debemos activarlo (en ubuntu y derivados esta instalado pero no esta activado así que nos toca activarlo también)

sudo ufw enable

El firewall esta activado y a partir de ahora se activara a cada arranque.
Podemos conocer su estado con :

sudo ufw status verbose

https://www.wifi-libre.com/img/members/3/ufwgufw_2.jpg
Notamos que por defecto se acepta todo el trafico que sale y se rechaza todo el trafico entrante.
Hay que entender que así no estamos cortados del mundo exterior y podemos conectarnos al Internet. :wink:
Cuando nuestro navegador hace sus peticiones mediante puerto 80 recibe las respuestas que pide.
Lo que esta bloqueado son las aplicaciones arenas a nuestro sistema que intentarían crear una conexión desde el exterior.
Ilustración: hago un escaneo de puertos con nmap desde otra computadora conectada a mi red
https://www.wifi-libre.com/img/members/3/Seleccion_002.png
Un escaneo básico no desvela nada y forzando la cosa con -Pn veo que los 1000 puertos están “filtrados”
El resultado es diferente si hago un nmap sobre la IP de mi impresora que es algo vieja y no tiene firewall
https://www.wifi-libre.com/img/members/3/ufwgufw_3.jpg

Obviamente podemos usar ufw en linea de comandos para crear nuestra configuración propia.
Imaginemos que queremos crear un canal de comunicación bilateral entre nuestro puesto de trabajo y un dispositivo tipo rapsbery pi mediante protocolo “secure shell” ssh
Podemos hacer lo de varios modo.
Especificando el protocolo que queremos autorizar en ambos sentido :

sudo ufw allow ssh

O bien especificando el puerto usado por dicho protocolo (puerto 22)

sudo ufw allow 22

Podríamos hacer lo también poniendo la IP del Pi

sudo ufw allow <IP_pi>

Sería un poco más arriesgado ya que no limitaríamos al único protocolo ssh.
Podemos combinar argumentos para hacer una regla muy precisa.
Por ejemplo : Si quiero autorizar el ssh solo con el pi y solo los paquetes tcp:

sudo ufw allow <IP_pi> ssh proto tcp

Y si queremos defendernos de un ataque de fuerza bruta en el muy hipotético caso de que alguien se haga con el control de nuestro pi:

ufw limit ssh/tcp

El ssh se bloqueará después 6 contraseñas erróneas.

Notar que el opuesto de “allow” es simplemente “deny” así que para deshabilitar el ssh sería con

sudo ufw deny 22

Otra cosa interesante a saber es que tenemos en el directorio /etc/ufw las reglas en uso (ficheros con extensión .rules) y el fichero de configuración ufw.conf dónde podemos deshabilitar el inicio automático a cada arranque (poner* NO** en lugar de YES para la variable “ENABLED”)

[h]Más fácil aún con la Interfaz gráfica GUFW [/h]

La instalación de la GUI de ufw es tan simple como entrar

sudo apt install gufw

En kali linux no he visto la entrada en le menú… probablemente he mirrado mal.
Si no hay entrada y que queremos una, seguir la guía : Crear una entrada en el menú Kali para integrar un script (y más)
En una distribución como ubuntu esta en Sistema->Administración->configuración firewall

De todo modo podemos iniciarla con la consola :

sudo gufw

La GUI esta escrita en python y tiene esta pinta :
https://www.wifi-libre.com/img/members/3/ufwgufw_4.jpg

Hay que desbloquearla para activarla (lógico)
https://www.wifi-libre.com/img/members/3/ufwgufw_5.jpg
No se si creador es un fan de la* squadra azzurra*, en todos casos gufw esta activada cuando veís esta bandera similar al bandera italiana.

Para añadir una regla podemos hacer clic en el símbolo “+” o bien ir a editar>añadir regla
Tenemos tres “modos” para craer reglas:

Para concluir este tema les dejo unos cuentos links útiles/que han servido ara redactar este tema :
[list=*]
]ufw @ Launchpad/]
]Gufw (pagina oficial) /]
]UFW @ Ubuntu comunity/]
]Firewall @ Ubuntu comunity/]
]How to set up a firewall with ufw on an ubuntu and debian cloud server de Shaun Lewis @ digitaloclean/]
]Gufw @ Ubuntu comunity/]
[/list]