¿Cómo se crea un perfil de aplicación para ufw?

31

Ufw tiene un comando que enumera los perfiles a los que puede explorar aún más sus definiciones de perfil

$ ufw app list

Y

$ ufw app PROFILE {app profile title}

Me preguntaba cómo puede crear un perfil para un programa indefinido, como virtual box y hacer que ese perfil ejecute las mismas definiciones que le di a iptables para mi distribución de Ubuntu.


No solo estoy tratando de usar el firewall de Ubuntus para dar servicio a mi máquina virtual. También tengo una curiosidad sincera sobre cómo crear un perfil para una aplicación que no viene con una.

Miphix
fuente

Respuestas:

36

Para responder a la pregunta real, sobre cómo crear su propio archivo de aplicación, solo necesita saber que está utilizando el formato de archivo INI de Windows (¡qué asco!).

[appname]
title=1-liner here
description=a longer line here
ports=1,2,3,4,5,6,7,8,9,10,30/tcp|50/udp|53

La línea de puertos puede especificar múltiples puertos, con / udp o / tcp, para limitar el protocolo, de lo contrario, se establece de manera predeterminada en ambos. Debe dividir las secciones de protocolo con |.

Entonces, para un conjunto de ejemplos de la vida real que hice:

[puppet]
title=puppet configuration manager
description=Puppet Open Source from http://www.puppetlabs.com/
ports=80,443,8140/tcp

[AMANDA]
title=AMANDA Backup
description=AMANDA the Advanced Maryland Automatic Network Disk Archiver
ports=10080

Puede enumerar varias versiones de la aplicación en un solo archivo, como este de apache:

===start of apache2.2-common file===
[Apache]
title=Web Server
description=Apache v2 is the next generation of the omnipresent Apache web server.
ports=80/tcp

[Apache Secure]
title=Web Server (HTTPS)
description=Apache v2 is the next generation of the omnipresent Apache web server.
ports=443/tcp

[Apache Full]
title=Web Server (HTTP,HTTPS)
description=Apache v2 is the next generation of the omnipresent Apache web server.
ports=80,443/tcp

===end of file===

Una vez que haya definido el archivo de la aplicación, póngalo /etc/ufw/applications.d, luego dígale a ufw que vuelva a cargar las definiciones de la aplicación con

ufw app update appname
ufw app info appname

Úselo con algo como:

ufw allow from 192.168.1.10 to any app amanda
ufw allow amanda

suponiendo que 192.168.1.10 es la IP de su servidor amanda.

usuario207998
fuente
su sintaxis para combinar udp y tcp es incorrecta. Debería ser xx/tcp|yy/udp. En otras palabras, la separación entre protocolos debería ser una tubería, no una coma como en su ejemplo
Hilikus
Mi ejemplo no estaba tratando de combinarlos, es una lista simple de this-port-on-udp, some-other-port-on-tcp.
user207998
Acabo de intentar usar netstatpara encontrar el nombre de la aplicación ... ¿es así? Al menos funcionó para mí. ¿Es sensible a mayúsculas y minúsculas? No estoy realmente seguro de cuál es la relación entre el "APPNAME" en el archivo de aplicación el título frente a frente el nombre del proceso, etc.
intcreator
Netstat solo enumera el nombre del proceso conectado a un puerto en particular. Esto no necesariamente coincide con el nombre de la aplicación. Por ejemplo, la aplicación postfix inicia una variedad de procesos, incluido el proceso 'maestro' que abre el puerto 25. Nombre el archivo de configuración de la aplicación ufw basado en, por ejemplo, el nombre del paquete, es decir, 'Postfix' o 'AMANDA'. Dentro del archivo de configuración hay una o más definiciones de aplicaciones que representan los puertos abiertos por ese paquete. Puede haber múltiples, vea el paquete 'postfix' como ejemplo. Allí, los nombres de las aplicaciones varían según la configuración de postfix.
user207998
para múltiples puertos tcp, ¿es como el primero o el segundo? xx/tcp,xy/tcp,xz/tcpoxx/tcp|xy/tcp|xz/tcp
Errol Flynn
10

En realidad, está todo allí en la página de manual en la sección "Integración de aplicaciones".

La sintaxis básica es:

ufw allow <app_name>

O puede usar la sintaxis extendida para ser más específico:

ufw allow from <some_address> to any app <app_name>

La página de manual dice específicamente que no se especifique un número de puerto:

No debe especificar el protocolo con ninguna sintaxis, y con la sintaxis extendida, use la aplicación en lugar de la cláusula de puerto.

Esto probablemente significa que permitirá <app_name>usar cualquier puerto que quiera.

Otros comandos útiles:

ufw app info <app_name>

Que enumera la información en <app_name>el perfil de.

ufw app update <app_name>  

Qué actualizaciones <app_name>del perfil. Puede usar allpara actualizar todos los perfiles de aplicación.

Puedes usar el:

ufw app update --add-new <app_name>  

comando para agregar un nuevo perfil <app_name>y actualizarlo, siguiendo las reglas que estableció ufw app default <policy>.

Perfiles de aplicaciones se almacenan en /etc/ufw/applications.dy, a veces /etc/services.

Para más información ver man ufw.

Seth
fuente
Sí, no especifica un puerto en la sintaxis 'ufw allow' porque el protocolo supuestamente se especifica, si es necesario, en el archivo de definición de la aplicación.
user207998