jak tworzysz profil aplikacji dla ufw?

31

Ufw ma polecenie, które wymienia profile, do których możesz dalej badać ich definicje profili

$ ufw app list

I

$ ufw app PROFILE {app profile title}

Zastanawiałem się, w jaki sposób możesz utworzyć profil dla niezdefiniowanego programu, takiego jak wirtualny box, i pozwolić, aby ten profil działał w tych samych definicjach, które podałem iptables dla mojej dystrybucji Ubuntu.


Nie tylko próbuję używać zapory sieciowej Ubuntus do obsługi mojej maszyny wirtualnej. Jestem również szczerze ciekawy, jak utworzyć profil dla aplikacji, która nie jest z nim związana.

Miphix
źródło

Odpowiedzi:

36

Aby odpowiedzieć na prawdziwe pytanie, jak utworzyć własny plik aplikacji, wystarczy wiedzieć, że używa on formatu pliku Windows INI (fuj).

[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

Linia portów może określać wiele portów za pomocą / udp lub / tcp, aby ograniczyć protokół, w przeciwnym razie domyślnie oba. Musisz podzielić sekcje protokołu za pomocą |.

Tak więc dla prawdziwego zestawu przykładów stworzyłem:

[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

Możesz wyświetlić wiele wersji aplikacji w jednym pliku, na przykład tę z 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===

Po zdefiniowaniu pliku aplikacji włóż go /etc/ufw/applications.d, a następnie powiedz ufw, aby ponownie załadował definicje aplikacji

ufw app update appname
ufw app info appname

Użyj go z czymś takim jak:

ufw allow from 192.168.1.10 to any app amanda
ufw allow amanda

zakładając, że 192.168.1.10 to adres IP twojego serwera amanda.

użytkownik207998
źródło
twoja składnia łączenia udp i tcp jest nieprawidłowa. Powinno być xx/tcp|yy/udp. Innymi słowy, oddzielenie protokołów powinno być potokiem, a nie przecinkiem, jak w twoim przykładzie
Hilikus
Mój przykład nie próbował ich połączyć, jest to prosta lista this-port-on-udp, some-other-port-on-tcp.
user207998,
Właśnie próbowałem netstatznaleźć nazwę aplikacji ... prawda? Przynajmniej mi to działało. Czy wielkość liter ma znaczenie? Nie jestem do końca pewien, jaki jest związek między „nazwą aplikacji” w pliku aplikacji a tytułem vs. nazwą procesu itp.
intcreator
Netstat po prostu wyświetla nazwę procesu podłączonego do określonego portu. To niekoniecznie pasuje do nazwy aplikacji. Na przykład aplikacja Postfix uruchamia różne procesy, w tym proces „master”, który otwiera port 25. Nazwa pliku konfiguracyjnego aplikacji ufw nazywam na podstawie, powiedzmy, nazwy pakietu, tj. „Postfix” lub „AMANDA”. W pliku konfiguracyjnym znajduje się jedna lub więcej definicji aplikacji reprezentujących porty otwarte przez ten pakiet. Mogą być wielokrotności, patrz przykład pakietu „Postfix”. Tam nazwy aplikacji różnią się w zależności od konfiguracji Postfiksa.
user207998
czy w przypadku wielu portów TCP jest to pierwszy czy drugi? xx/tcp,xy/tcp,xz/tcplubxx/tcp|xy/tcp|xz/tcp
errolflynn
10

Wszystko to znajduje się na stronie podręcznika w sekcji „Integracja aplikacji”.

Podstawowa składnia to:

ufw allow <app_name>

Lub możesz użyć rozszerzonej składni, aby być bardziej szczegółowym:

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

Strona podręcznika wyraźnie mówi, aby nie podawać numeru portu:

Nie należy określać protokołu przy użyciu żadnej ze składni, a przy rozszerzonej składni należy używać aplikacji zamiast klauzuli port.

Prawdopodobnie oznacza to, że pozwoli <app_name>użyć dowolnego portu, który chce…

Inne przydatne polecenia:

ufw app info <app_name>

Która zawiera informacje o <app_name>profilu.

ufw app update <app_name>  

Który <app_name>profil aktualizuje . Możesz użyć alldo aktualizacji wszystkich profili aplikacji.

Możesz użyć:

ufw app update --add-new <app_name>  

polecenie, aby dodać nowy profil <app_name>i zaktualizować go, zgodnie z ustalonymi regułami ufw app default <policy>.

Profile aplikacji są /etc/ufw/applications.dczasami przechowywane /etc/services.

Aby uzyskać więcej informacji zobacz man ufw.

Seth
źródło
Tak, nie podajesz portu w składni „ufw allow”, ponieważ protokół jest rzekomo określony, jeśli to konieczne, w samym pliku definicji aplikacji.
user207998