comment créer un profil d'application pour ufw?

31

Ufw a une commande qui répertorie les profils auxquels vous pouvez explorer davantage leurs définitions de profil

$ ufw app list

Et

$ ufw app PROFILE {app profile title}

Je me demandais comment vous pouvez créer un profil pour un programme non défini, comme une boîte virtuelle et faire exécuter à ce profil les mêmes définitions que celles que j'ai données à iptables pour ma distribution Ubuntu.


Non seulement j'essaie d'utiliser le pare-feu Ubuntus pour entretenir ma machine virtuelle. Je suis également sincèrement curieux de savoir comment créer un profil pour une application qui n'en est pas accompagnée.

Miphix
la source

Réponses:

36

Pour répondre à la vraie question, sur la façon de créer votre propre fichier d'application, il vous suffit de savoir qu'il utilise le format de fichier Windows INI (beurk).

[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 ligne de ports peut spécifier plusieurs ports, avec / udp ou / tcp, pour limiter le protocole, sinon il s'agit par défaut des deux. Vous devez diviser les sections de protocole avec |.

Donc, pour un ensemble d'exemples concrets que j'ai faits:

[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

Vous pouvez répertorier plusieurs versions de l'application dans un seul fichier, comme celui-ci d'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===

Une fois que vous avez défini votre fichier d'application, insérez-le /etc/ufw/applications.d, puis dites à ufw de recharger les définitions d'application avec

ufw app update appname
ufw app info appname

Utilisez-le avec quelque chose comme:

ufw allow from 192.168.1.10 to any app amanda
ufw allow amanda

en supposant que 192.168.1.10 est l'IP de votre serveur amanda.

user207998
la source
votre syntaxe pour combiner udp et tcp est incorrecte. Ça devrait l'être xx/tcp|yy/udp. En d'autres termes, la séparation entre les protocoles devrait être un tuyau, pas une virgule comme dans votre exemple
Hilikus
Mon exemple n'essayait pas de les combiner, c'est une simple liste de this-port-on-udp, some-other-port-on-tcp.
user207998
J'ai juste essayé d'utiliser netstatpour trouver le nom de l'application ... est-ce vrai? Cela a fonctionné pour moi au moins. Est-il sensible à la casse? Je ne sais pas vraiment quelle est la relation entre le "nom de l'application" dans le fichier d'application par rapport au titre par rapport au nom du processus, etc.
intcreator
Netstat répertorie simplement le nom du processus connecté à un port particulier. Cela ne correspond pas nécessairement au nom de l'application. Par exemple, l'application postfix lance une variété de processus, y compris le processus «maître» qui ouvre le port 25. Je nomme le fichier de configuration de l'application ufw en fonction, disons, du nom du package, c'est-à-dire «Postfix» ou «AMANDA». Dans le fichier de configuration, il existe une ou plusieurs définitions d'application représentant les ports ouverts par ce package. Il peut y en avoir plusieurs, voir le package 'postfix' comme exemple. Là, les noms des applications varient en fonction de la configuration de postfix.
user207998
pour plusieurs ports TCP, est-ce le premier ou le dernier? xx/tcp,xy/tcp,xz/tcpouxx/tcp|xy/tcp|xz/tcp
errolflynn
10

En fait, tout est là dans la page de manuel sous la section "Application Integration".

La syntaxe de base est:

ufw allow <app_name>

Ou vous pouvez utiliser la syntaxe étendue pour être plus précis:

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

La page de manuel indique spécifiquement de ne pas spécifier de numéro de port:

Vous ne devez pas spécifier le protocole avec l'une ou l'autre syntaxe, et avec la syntaxe étendue, utilisez app à la place de la clause port.

Cela signifie probablement qu'il laissera <app_name>utiliser le port qu'il souhaite.

Autres commandes utiles:

ufw app info <app_name>

Qui répertorie les informations sur <app_name>le profil de.

ufw app update <app_name>  

Qui met à jour <app_name>le profil. Vous pouvez utiliser allpour mettre à jour tous les profils d'application.

Vous pouvez utiliser:

ufw app update --add-new <app_name>  

pour ajouter un nouveau profil <app_name>et le mettre à jour, en suivant les règles définies avec ufw app default <policy>.

Les profils d'application sont stockés dans /etc/ufw/applications.det parfois /etc/services.

Pour plus d'informations, voir man ufw.

Seth
la source
Oui, vous ne spécifiez pas de port dans la syntaxe 'ufw allow' car le protocole est censé être spécifié, si nécessaire, dans le fichier de définition d'application lui-même.
user207998