Мой вариант использования заключается в том, что я развертываю серверы Arch-Linux с различными службами, работающими в зависимости от требований заказчика. Эти службы зависят от приложения и работают на пользовательских портах, но в качестве аргумента можно указать, что можно использовать FTP, WEB и WEB SSL. В любом сочетании.
Для каждой службы у меня есть специальный пакет, который устанавливает эту конкретную службу, и, чтобы упростить задачу, я хотел бы, чтобы пакет также устанавливал правило iptables, позволяющее использовать службу.
Итак, по умолчанию я хочу иметь правило, запрещающее все, кроме SSH. Затем, когда я устанавливаю, например, WEB-пакет, я хочу, чтобы этот пакет установил файл, содержащий правило для открытия порта 80. Порт 21 FTP-пакета и так далее.
Однако я могу видеть только то, что iptables имеет встроенную поддержку всего одного файла с помощью утилит iptables-restore / save.
Я мог бы написать свою собственную утилиту, которая читает несколько файлов и вручную взаимодействует с iptables. Но я считаю, что это должен быть «достаточно распространенный» вариант использования и что такая утилита обязательно должна существовать. Однако на этот раз мои навыки работы с Google не пошли мне на пользу :)
По сути, я хочу иметь папку, скажем /etc/iptables.d, в которой я могу размещать файлы 15-http, 10-ftp, 20-ssl. и т.д., где файлы и правила применяются в соответствии с номером в имени файла.
Вы можете установить ufw
на ваших устройствах. Он поддерживает определение приложений через файлы конфигурации (вы указываете ему, какие порты открывать в файле), а затем вы можете включить их (сделать так, чтобы брандмауэр принял это во внимание), запустив команду.
Сделайте ваши пакеты зависимыми от ufw
, перетащите файл в /etc/ufw/applications.d
а затем с помощью запуска после установки ufw allow <app name>
чтобы включить правила.
Shorewall кажется еще более продвинутым интерфейсом для IPtables, и я уверен, что он поддержит то, что вы пытаетесь сделать. Я рекомендую вам ознакомиться с его документацией и посмотреть, подойдет ли он лучше.