¿Hay algún firewall de nivel de aplicación para Ubuntu 16.04? (con GUI)

20

Debo confesar que soy muy nuevo en el mundo de Linux, y hay conceptos que me parecen muy desconocidos.

Lo que más extraño es un cortafuegos de nivel de aplicación bueno pero simple. A partir de ahora, con toda esta conectividad intrusiva y permanente penetrante a Internet, es imprescindible saber qué está haciendo exactamente su computadora, por qué y con quién. Un analizador de protocolos está bien, pero es demasiado hostil y requiere mucho tiempo para "analizarlo", lo que es prácticamente inútil para los usuarios domésticos.

He descubierto muchos programas en entornos Windows que no deberían conectarse a Internet pero sí (y con mi firewall gratuito ZoneAlarm puedo detenerlos).

Con Gufw (y muchos otros) tienes que saber qué aplicaciones tienes instaladas (y sabemos que esto es casi imposible con este sistema operativo moderno con miles de millones de líneas de código).

Lo que estoy buscando es un firewall que monitoree la conexión NIC / WAN y detecte cualquier programa / aplicación o lo que sea que intente "hablar" a través de él de manera proactiva, independientemente del puerto que intente usar (la mayoría de las aplicaciones que mencioné anteriormente intentan conectarse) utilizando puertos TCP bien conocidos: 80, 443, 8080). ¿Existe esto? (Si no, ¿cómo sé con certeza qué está haciendo mi computadora?)

jonabrv1965
fuente
1
Es curioso: ¿este aceite de serpiente ha evitado algún problema grave (como wannacry) últimamente?
Restablece a Monica - M. Schröder

Respuestas:

12

Douane

Douane es un firewall personal que protege la privacidad de un usuario al permitirle controlar qué aplicaciones pueden conectarse a Internet desde su computadora GNU / Linux.


Instalación

Hasta ahora (2017/05/22) no hay paquetes de Ubuntu disponibles. Debes construirlo desde la fuente.

Estas instrucciones de instalación se basan en información de Douane Wiki y se probaron en Ubuntu 16.04.2 de 64 bits.

Abra una terminal ( Ctrl+ Alt+ T) para ejecutar los comandos.

Preparación

Actualiza tu sistema:

sudo apt update
sudo apt full-upgrade

Si recibe una notificación pidiéndole que reinicie su computadora, reiníciela.

Instalar las dependencias

sudo apt install git build-essential dkms libboost-filesystem-dev libboost-regex-dev libboost-signals-dev policykit-1 libdbus-c++-dev libdbus-1-dev liblog4cxx10-dev libssl-dev libgtkmm-3.0-dev python3 python3-gi python3-dbus

Crear un directorio para compilar

cd
mkdir Douane
cd Douane

Construye el módulo del núcleo

git clone https://github.com/Douane/douane-dkms
cd douane-dkms
sudo make dkms

Compruebe si el módulo fue construido e instalado correctamente:

lsmod | grep douane

Deberías ver algo como:

douane                 20480  0

Construye el demonio

cd ~/Douane
git clone --recursive https://github.com/Douane/douane-daemon
cd douane-daemon
make
sudo make install

Construye el proceso de diálogo

cd ~/Douane
git clone --recursive https://github.com/Douane/douane-dialog
cd douane-dialog
make
sudo make install

Comience el proceso de diálogo:

/opt/douane/bin/douane-dialog &

Luego verifique si se está ejecutando:

pgrep -a douane-dialog

Deberías ver algo como:

21621 /opt/douane/bin/douane-dialog

Construye el configurador

cd ~/Douane
git clone https://github.com/Douane/douane-configurator
cd douane-configurator
sudo python3 setup.py install

Inicie el demonio y configure el inicio automático

Tuve que insertar el siguiente texto en el archivo /etc/init.d/douanepara habilitar el inicio automático del demonio:

### BEGIN INIT INFO
# Provides:          douane
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Douane firewall
### END INIT INFO

Abra el archivo para editar:

sudo nano /etc/init.d/douane

Luego pegue el texto anterior después de la descripción del programa. Presione Ctrl+ O, Enterpara guardar, luego Ctrl+ Xpara salir del editor.

Estas son las primeras 21 líneas del archivo después de insertar el texto:

#!/bin/bash
#
# douane      This shell script takes care of starting and stopping
#             douane daemon (A modern firewall at application layer)
#
# Author: Guillaume Hain [email protected]
#
# description: douane is the daemon process of the Douane firewall application. \
# This firewall is limiting access to the internet on application bases.

### BEGIN INIT INFO
# Provides:          douane
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Douane firewall
### END INIT INFO

# Source function library.
. /lib/lsb/init-functions

Ahora puedes configurar el inicio automático e iniciar el demonio:

sudo systemctl daemon-reload
sudo systemctl enable douane
sudo systemctl start douane

Active el filtro e inicie automáticamente el diálogo

Inicie el configurador:

douane-configurator

Luego, asegúrese de que los interruptores Use Douane para filtrar el tráfico de mi red y el Inicio automático Douane en el arranque estén encendidos.

Puede revisar las reglas de filtrado en la pestaña Reglas . Al hacer clic derecho en una regla, tiene la opción de eliminarla.

Prueba

Si todo está bien, debería ver la ventana de Douane pidiendo permiso al abrir aplicaciones que usan conexiones de red.

Eric Carvalho
fuente
1
Hola Eric, muchas gracias por tu pronta respuesta. Como mencioné, soy bastante novato con Linux. Encontré esto de Douane antes de publicar mi pregunta, eché un vistazo al sitio de Douane y no hay un "paquete" para Ubuntu, solo para algo llamado "Archlinux" (supongo que otra distribución de Linux) ... También encontré que uno puede adaptar esto a cualquier distribución haciendo una compilación e instalación manualmente ... ¿estoy en lo cierto? ... nadie ya ha compilado y empaquetado para ubuntu?
jonabrv1965
1
En primer lugar, gracias de nuevo a Eric por el apoyo ... Um ... más de 30 pasos para instalar y ejecutar una aplicación en Linux ... no es muy fácil de usar, ¿no? ... Estoy empezando a vea por qué Linux tiene esa recepción tan baja fuera de las personas tecnológicas ... Lo intentaré (principalmente porque tengo que separarme de M $ Windoze a cualquier costo)
jonabrv1965
¿No hay un PPA para proporcionar binarios? Google encontró launchpad.net/~zedtux/+archive/ubuntu/douane (pero no lo he probado).
Melebius
4

Hay un nuevo proyecto llamado OpenSnitch descrito en

https://www.cyberciti.biz/python-tutorials/opensnitch-the-little-snitch-application-like-firewall-tool-for-linux/

La página del proyecto es https://www.opensnitch.io/

En este punto se considera software alfa, y extrañamente está escrito en Python, pero al menos es un nuevo intento, mientras que Douane es un programa muy antiguo que (creo) es mucho más difícil de instalar.

Descargo de responsabilidad: no he probado personalmente ninguno de los programas, solo estaba tratando de encontrar si hay otras opciones y me di cuenta de que nadie había mencionado OpenSnitch aquí todavía.

usuario736189
fuente
> "extrañamente está escrito en Python" - no, no es extraño, en realidad es una muy buena idea usar un lenguaje de alto nivel para todo excepto las partes "calientes" para ahorrar tiempo y cometer menos errores.
Sarge Borsch
3

Esta es una muy buena pregunta, pero odio preguntas como esta porque son realmente difíciles de responder sin decir que la seguridad no es importante.

Primero, permítanme decir que la seguridad es importante, pero que Linux la maneja de manera muy diferente que Windows.

Así que abordemos su pregunta.

Primero, no habrá un firewall saliente que funcione de la misma manera que la alarma de zona. Linux simplemente no tiene una gran necesidad de uno. Muchas aplicaciones funcionan en una arquitectura cliente / servidor aunque las esté utilizando en la misma máquina. Xorg es un gran ejemplo. Primero tiene un servidor (en este caso, la parte que se dibuja en la pantalla) y un cliente (gedit) gedit habla con el servidor sobre cómo dibujar sus botones, colocar su texto, etc. Incluso algo tan simple como un mouse tiene esta misma arquitectura (o podría tener). Un programa actúa como un servidor que escucha la información y envía datos cuando la recibe, luego un cliente "se conecta" a ese "servidor del mouse" y espera la información.

Esto es tan frecuente en Linux que si creara un "firewall" que solicitara permiso para cada conexión de red, entonces probablemente no podría configurarlo porque no podría conectarse a su propio servidor.

Todo esto es un ejemplo muy tosco, parte de esto es engañoso porque tiene un nivel muy alto. Pero sigue siendo muy cierto.

Para proteger a los usuarios de Linux contra esto, tenemos un conjunto de dos reglas muy básicas que hacen un muy buen trabajo "básico".

Primero, ningún usuario, excepto root, puede abrir cualquier puerto por debajo de 1024. (nuevamente nivel muy alto). Esto significa que incluso para ejecutar un servidor FTP (en un puerto estándar) necesita tener acceso de root. Usted como usuario generalmente puede abrir "puertos altos" (aquellos por encima de 1024). Pero mira la regla dos.

2do. ningún proceso puede acceder a ningún archivo al que el usuario que inicia el proceso no pueda acceder. (nuevamente nivel muy alto) Entonces, si "coteyr" iniciara un servidor FTP, entonces ese servidor FTP en el peor de los casos (nivel alto) solo tendría exactamente el mismo acceso que el usuario coteyr que lo inició.

Debido a la combinación de estas dos reglas, un "software" que pregunta cada vez que algo intenta conectar el cortafuegos simplemente se interpone, y no hay mucha demanda.

Dicho esto, siempre se puede crear una regla de firewall de salida, y en muchos casos probablemente no sea una mala idea. Muchos servicios se pueden configurar (y están predeterminados) para usar sockets basados ​​en archivos (o en memoria) y no sockets basados ​​en red.

Una regla de firewall entrante generalmente cierra cualquier espacio extraño que haya dejado la regla 1 o 2.

Mi punto es este. La seguridad es importante y no estoy tratando de decir que no lo es, solo aquí, en la tierra de Linux, tenemos diferentes herramientas y objetivos. Le recomendaría que revise los permisos de usuarios y grupos de Linux y luego use una herramienta como gfw e IPTABLES para llenar los vacíos.

coteyr
fuente
3
> ningún proceso puede acceder a ningún archivo al que el usuario que inicia el proceso no pueda acceder , lo cual no es diferente de Windows, como parece estar insinuando. Esa no es una diferencia del sistema operativo. Sin embargo, honestamente, si solo permitía todas las conexiones de bucle invertido, dicho firewall no interferiría con ninguna aplicación de cliente / servidor TCP en la misma máquina; es perfectamente posible configurar una que solo controle el acceso a la red. (Además. A menos que esté ejecutando Windows 9x, las ACL de Windows son, en todo caso, más potentes que los permisos tradicionales de Unix. Lo que nuevamente tiene poco que ver con restringir la red.)
Bob
1
En realidad, leer la respuesta de nuevo ... No estoy seguro de cómo tampoco es relevante no poder usar puertos conocidos, eso solo es útil para evitar el enmascaramiento de los servicios del sistema (por ejemplo, pretender estar sshden 22), pero la pregunta parece preguntar más sobre la exfiltración de datos. Que son conexiones casi enteramente salientes y tienen poco que ver con los puertos a los que se te permite unirte.
Bob
1
Primero, no habrá un firewall saliente que funcione de la misma manera que la alarma de zona. Linux simplemente no tiene una gran necesidad de uno: las tablas IP controlarán las salidas tanto como las entrantes, por favor no diga cosas que realmente no sabe.
djsmiley2k - Vaca
Hola Honza, durante mi recorrido de "tarea" vi varias veces respuestas como la tuya. Y de alguna manera lo entiendo, pero ... y es un gran "pero" ... no es lo que estoy buscando ... Entiendo el puerto, la baja exposición (debido a la baja difusión de la plataforma) y todos los otros conceptos que mencionaste ... pero lo que estoy buscando es entender de una manera fácil (por ejemplo, zonealarm) qué está haciendo mi computadora fuera de la computadora misma ... (es Xorg / gedit, para seguir tu ejemplo, en ¿Necesito ir a internet para hacer algo? Si es así, quiero / necesito saber por qué / cuándo / dónde ...
jonabrv1965
Entonces vas a cavar un poco más profundo. intente netstatEn este momento mi caja tiene 1354 conexiones abiertas. 65 de ellos son conexiones de red. Ese es un número bastante bajo para mí (no digo que sea para todos), pero luego comenzarías a tratar de descubrir qué hace cada una de esas conexiones. Como dije, no es que la seguridad no sea importante, es solo un entorno muy diferente.
coteyr