Как создать профиль приложения для UFW?

31

У Ufw есть команда, которая выводит список профилей, к которым вы можете дополнительно изучить определения их профилей.

$ ufw app list

А также

$ ufw app PROFILE {app profile title}

Мне было интересно, как вы можете создать профиль для неопределенной программы, такой как виртуальная коробка, и использовать для этого профиля те же определения, которые я дал iptables для моего дистрибутива Ubuntu.


Я не только пытаюсь использовать брандмауэр Ubuntus для обслуживания своей виртуальной машины. Мне также искренне любопытно, как создать профиль для приложения, которое не поставляется с ним.

Miphix
источник

Ответы:

36

Чтобы ответить на реальный вопрос о том, как создать свой собственный файл приложения, вам нужно только знать, что он использует формат файла Windows INI (гадость).

[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

Строка портов может указывать несколько портов, с / udp или / tcp, для ограничения протокола, в противном случае по умолчанию используется оба. Вы должны разделить разделы протокола с помощью |.

Итак, для реального набора примеров, которые я сделал:

[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

Вы можете перечислить несколько версий приложения в одном файле, например, из 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===

После того как вы определили файл приложения, вставьте его /etc/ufw/applications.d, а затем скажите ufw, чтобы перезагрузить определения приложения с помощью

ufw app update appname
ufw app info appname

Используйте это с чем-то вроде:

ufw allow from 192.168.1.10 to any app amanda
ufw allow amanda

при условии, что 192.168.1.10 - это IP-адрес вашего сервера Аманды.

user207998
источник
Ваш синтаксис для объединения UDP и TCP неверен. Так и должно быть xx/tcp|yy/udp. Другими словами, разделение между протоколами должно быть каналом, а не запятой, как в вашем примере
Hilikus
Мой пример не пытался объединить их, это простой список this-port-on-udp, some-other-port-on-tcp.
user207998
Я просто попытался использовать, netstatчтобы найти имя приложения ... это правильно? По крайней мере, у меня это сработало. Это чувствительно к регистру? Я не совсем уверен, как соотносится «имя приложения» в файле приложения с заголовком и именем процесса и т. Д.
intcreator
Netstat просто перечисляет имя процесса, подключенного к определенному порту. Это не обязательно соответствует названию приложения. Например, приложение postfix запускает множество процессов, включая «основной» процесс, который открывает порт 25. Я называю файл конфигурации приложения ufw на основе, скажем, имени пакета, то есть «Postfix» или «AMANDA». В файле конфигурации есть одно или несколько определений приложения, которые представляют порты, открытые этим пакетом. Там может быть несколько, см. Пакет 'postfix' в качестве примера. Там имена приложений меняются в зависимости от того, как был настроен постфикс.
user207998
для нескольких портов TCP это как первый или второй? xx/tcp,xy/tcp,xz/tcpилиxx/tcp|xy/tcp|xz/tcp
errolflynn
10

Это на самом деле все в man-странице в разделе «Интеграция приложений».

Основной синтаксис:

ufw allow <app_name>

Или вы можете использовать расширенный синтаксис, чтобы быть более конкретным:

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

На странице man конкретно сказано не указывать номер порта:

Вы не должны указывать протокол с любым синтаксисом, а с расширенным синтаксисом использовать app вместо предложения порта.

Это, вероятно, означает, что он позволит <app_name>использовать любой порт, который он хочет ..

Другие полезные команды:

ufw app info <app_name>

Который перечисляет информацию в <app_name>профиле.

ufw app update <app_name>  

Какой <app_name>профиль обновлений . Вы можете использовать allдля обновления всех профилей приложений.

Вы можете использовать:

ufw app update --add-new <app_name>  

Команда, чтобы добавить новый профиль <app_name>и обновить его, следуя правилам, которые вы изложили ufw app default <policy>.

Профили приложений хранятся в /etc/ufw/applications.dи иногда /etc/services.

Для получения дополнительной информации см man ufw.

Сет
источник
Да, вы не указываете порт в синтаксисе ufw allow, потому что протокол предположительно указывается, если необходимо, в самом файле определения приложения.
user207998