Wie erstelle ich ein App-Profil für ufw?

31

Ufw verfügt über einen Befehl, der Profile auflistet, deren Profildefinitionen Sie genauer untersuchen können

$ ufw app list

Und

$ ufw app PROFILE {app profile title}

Ich habe mich gefragt, wie Sie ein Profil für ein undefiniertes Programm wie virtual box erstellen können und dieses Profil dieselben Definitionen ausführen lassen, die ich iptables für meine Ubuntu-Distribution gegeben habe.


Ich versuche nicht nur, mit der Ubuntus-Firewall meine virtuelle Maschine zu warten. Ich bin auch aufrichtig neugierig, wie man ein Profil für eine Anwendung erstellt, die nicht mit einem kommt.

Miphix
quelle

Antworten:

36

Um die eigentliche Frage zu beantworten, wie Sie Ihre eigene Anwendungsdatei erstellen können, müssen Sie nur wissen, dass sie das Windows INI-Dateiformat (yuck) verwendet.

[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

In der Ports-Zeile können mehrere Ports mit / udp oder / tcp angegeben werden, um das Protokoll einzuschränken. Andernfalls werden standardmäßig beide Ports verwendet. Sie müssen die Protokollabschnitte mit | aufteilen.

Also, für eine Reihe von Beispielen aus dem wirklichen Leben habe ich gemacht:

[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

Sie können mehrere Versionen der App in einer einzigen Datei auflisten, beispielsweise die folgende von 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===

Sobald Sie Ihre Anwendungsdatei definiert haben, legen Sie sie ein und weisen Sie /etc/ufw/applications.dufw an, die Anwendungsdefinitionen mit neu zu laden

ufw app update appname
ufw app info appname

Verwenden Sie es mit etwas wie:

ufw allow from 192.168.1.10 to any app amanda
ufw allow amanda

Angenommen, 192.168.1.10 ist die IP Ihres Amanda-Servers.

user207998
quelle
Ihre Syntax zum Kombinieren von udp und tcp ist falsch. Es sollte so sein xx/tcp|yy/udp. Mit anderen Worten, die Trennung zwischen Protokollen sollte eine Pipe sein, kein Komma wie in Ihrem Beispiel
Hilikus
Mein Beispiel hat nicht versucht, sie zu kombinieren, es ist eine einfache Liste von this-port-on-udp und some-other-port-on-tcp.
user207998
Ich habe gerade versucht, netstatmit den Namen der Anwendung zu finden ... ist das richtig? Zumindest hat es bei mir funktioniert. Ist es case sensitive? Ich bin nicht wirklich sicher, wie die Beziehung zwischen dem "Anwendungsnamen" in der Anwendungsdatei gegen den Titel gegen den Prozessnamen usw. ist
intcreator
Netstat listet nur den Prozessnamen auf, der mit einem bestimmten Port verbunden ist. Dies muss nicht unbedingt mit dem Namen der Anwendung übereinstimmen. Zum Beispiel startet die Postfix-Anwendung eine Reihe von Prozessen, einschließlich des 'Master'-Prozesses, der Port 25 öffnet. Ich benenne die ufw-Anwendungskonfigurationsdatei beispielsweise anhand des Paketnamens, dh' Postfix 'oder' AMANDA '. In der Konfigurationsdatei befinden sich eine oder mehrere App-Definitionen, die die von diesem Paket geöffneten Ports darstellen. Es kann mehrere geben, siehe das 'postfix'-Paket als Beispiel. Dort variieren die App-Namen je nachdem, wie Postfix konfiguriert wurde.
user207998
Ist es für mehrere TCP-Ports wie der erstere oder der letztere? xx/tcp,xy/tcp,xz/tcpoderxx/tcp|xy/tcp|xz/tcp
errolflynn
10

Es ist eigentlich alles in der Manpage unter "Anwendungsintegration".

Die grundlegende Syntax lautet:

ufw allow <app_name>

Oder Sie können die erweiterte Syntax verwenden, um genauer zu sein:

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

In der Manpage wird ausdrücklich darauf hingewiesen, keine Portnummer anzugeben:

Sie sollten das Protokoll nicht mit einer der beiden Syntaxarten angeben und mit der erweiterten Syntax app anstelle der port-Klausel verwenden.

Dies bedeutet wahrscheinlich, dass es den <app_name>gewünschten Port verwenden kann.

Andere nützliche Befehle:

ufw app info <app_name>

Welche listet die Informationen auf <app_name>dem Profil.

ufw app update <app_name>  

Welches Update <app_name>-Profil. Mit können Sie allalle Anwendungsprofile aktualisieren.

Du kannst den ... benutzen:

ufw app update --add-new <app_name>  

Befehl zum Hinzufügen <app_name>und Aktualisieren eines neuen Profils gemäß den von Ihnen festgelegten Regeln ufw app default <policy>.

App-Profile werden in /etc/ufw/applications.dund manchmal gespeichert /etc/services.

Weitere Informationen finden Sie unter man ufw.

Seth
quelle
Ja, Sie geben keinen Port in der 'ufw allow'-Syntax an, da das Protokoll, falls erforderlich, in der App-Definitionsdatei selbst angegeben werden soll.
User207998