Conoce OpenSnitch, un firewall muy potente para aplicaciones Linux

Conoce OpenSnitch, un firewall muy potente para aplicaciones Linux

Alberto López

Los sistemas operativos basados en Linux tienen una gran cantidad de protecciones para mitigar los ataques, evitar la escalación de privilegios y otros ataques muy comunes a este sistema operativo. Aunque Linux es muy seguro si se configura bien, no por ello debemos dejar de cuidar nuestro sistema operativo por completo, puesto que las amenazas siguen existiendo. En la actualidad hay disponibles varios cortafuegos para Linux, los cuales podemos instalar y utilizar para hacer nuestro sistema Linux más seguro y fiable. Hoy vamos a ver una de las herramientas englobada dentro de los firewalls con un futuro muy prometedor, OpenSnitch.

¿Qué es OpenSnitch?

OpenSnitch es una aplicación de firewall escrita en Python para sistemas operativos basados en GNU/Linux, por lo que, en principio, cualquier sistema operativo basado en GNU/Linux es compatible con este programa que nos añadirá un extra de seguridad.

El método de funcionamiento de OpenSnitch consiste en comprobar todas las solicitudes de conexión a Internet realizadas por todas las aplicaciones que se han instalado en el sistema operativo. Este programa permite la creación de reglas específicas para las diferentes aplicaciones que tengamos instaladas en nuestro ordenador o servidor Linux, estas reglas permitirán o denegarán el acceso a Internet cuando estas lo soliciten. Es posible que, una aplicación que no tiene creada una regla, intente acceder a Internet, en ese momento, aparecerá un cuadro de texto que nos dará la opción de permitir la conexión o denegarla, sin tener que meternos de manera tan específica a crear una regla para la aplicación en concreto.

Otras opciones disponibles son la posibilidad de grabar la decisión como una regla para que se quede en el listado para las próximas veces que esa aplicación en concreto requiera de acceso a Internet, podremos aplicar la regla a la URL exacta del dominio al que se intenta llegar. También tendremos la posibilidad de permitirlo temporalmente, y que cuando reiniciemos el servidor o el ordenador esta regla añadida desaparezca.

Todas las reglas que creamos en OpenSnitch se almacenarán como archivos JSON (tipología de archivo que solo puede manejar OpenSnitch), de esta manera, podremos modificarlas más tarde si fuese necesario de manera manual. OpenSnitch tiene una interfaz gráfica de usuario muy intuitiva, que nos permitirá ver qué aplicaciones están accediendo a internet en ese momento, qué dirección IP está siendo usada por el equipo, qué usuario está usando tanto el sistema como el propio OpenSnitch y qué puerto se está usando para todo ello.

Otra opción muy útil que posee OpenSnitch es la de crear un reporte en formato CSV con toda la información, aquí encontraremos la configuración del firewall y todas las aplicaciones guardadas.

Instalación de OpenSnitch en Linux

Vamos a proceder con la instalación de OpenSnitch, como podrás ver todos los comandos que usaremos para la instalación están destinadas a usuarios de Debian o Ubuntu así que, si estás utilizando otra distribución, tendrás que ajustar los comandos a la distribución que tengas instalada en tu equipo.

Primero, instalaremos todo lo necesario para que OpenSnitch pueda funcionar, incluyendo Go y también Git, ambos son totalmente necesarios para la correcta instalación, ya que no tenemos Opensnitch en los repositorios oficiales de las diferentes distribuciones Linux. Como no podía ser de otra manera, tendremos que iniciar sesión como root en nuestro sistema operativo, o ejecutar el comando «sudo» delante de la orden de instalación a través de los repositorios. Nuestra recomendación, como vamos a tener que realizar varios pasos e instalar varios programas, es que iniciéis sesión con el popular «sudo su» para ya tener permisos de superusuario y no necesitar ejecutar el «sudo» delante de cada comando.

sudo apt-get install protobuf-compiler libpcap-dev libnetfilter-queue-dev python3-pip golang git

go get github.com/golang/protobuf/protoc-gen-go

go get -u github.com/golang/dep/cmd/dep

python3 -m pip install --user grpcio-tools

A continuación, nos dispondremos a clonar el repositorio de OpenSnitch. Al inicio es probable que la instalación arroje un mensaje indicando que no se encontraron archivos Go. Este mensaje lo ignoraremos, pero si nos asalta otro comunicándonos que nos falta el git, deberemos para para instalarlo. Por defecto el «GOPATH» está en /home/usuario/go

go get github.com/evilsocket/opensnitch

cd $GOPATH/src/github.com/evilsocket/opensnitch

Si la variable de entorno $GOPATH no está configurada correctamente, obtendremos un error que nos dirá «no se encontró esta carpeta» en el comando anterior. Para solucionar esto usaremos el comando cd para dirigirnos a la ubicación de la carpeta «/home/usuario/go/src/github.com/evilsocket/opensnitch» que estaba en de serie en la instalación del sistema. Ahora, lo instalamos de la forma típica:

make

sudo make install

Una vez instalado correctamente, lo habilitaremos de la siguiente forma:

sudo systemctl enable opensnitchd

sudo service opensnitchd start

opensnitch-ui

Y accederemos a la interfaz gráfica de usuario donde tendremos toda la información y acciones que podremos realizar con este gran programa.

Experiencia de uso con OpenSnitch

Este programa es realmente útil para permitir o denegar el tráfico de red de las diferentes aplicaciones, navegadores web, clientes FTP, programas como Skype, Google Drive y cualquier programa que necesite de conexión a Internet para funcionar. Con OpenSnitch podremos controlar en detalle todas las conexiones, y permitir o denegar todo a nivel de aplicación, y no a nivel de dirección IP o puerto como ocurre con el popular firewall iptables o nftables que incorporan los sistemas operativos basados en Debian de forma predeterminada.

Es posible que al principio tengamos decenas de mensajes indicándonos que una aplicación ha intentado acceder a Internet, esto es completamente normal al principio, porque todas las aplicaciones deben ser permitidas específicamente en el programa, por tanto, tendremos la mejor seguridad posible porque está configurado en modo restrictivo. Por defecto se bloquea todo, excepto lo que está específicamente permitido en el firewall de aplicación.

Por último, nos gustaría indicar que todas las reglas creadas en un determinado momento, se pueden exportar fácilmente en formato JSON, para importarlo en otro sistema operativo Linux, es decir, podremos realizar pruebas en local o en una máquina virtual, y posteriormente copiar este archivo JSON en el servidor en producción, sin tener ningún tipo de problema.

Gracias al buen funcionamiento de OpenSnitch, podremos controlar todos los accesos de cualquier programa que tengamos en nuestro equipo, si quieres un completo firewall a nivel de aplicación, este software es ideal para ti.