У меня есть сервер Ubuntu 9.04 с libvirt / kvm и fail2ban (для SSH-атак).
И libvirt, и fail2ban по-разному интегрируются с iptables. Libvirt использует (я думаю) некоторую конфигурацию XML и во время запуска (?) Настраивает пересылку в подсеть виртуальной машины. Fail2ban устанавливает настраиваемую цепочку (вероятно, при инициализации) и периодически изменяет ее, чтобы запретить / разблокировать вероятных злоумышленников.
Мне также нужно установить свои собственные правила для перенаправления различных портов на серверы, работающие в виртуальных машинах и на других машинах, и настроить элементарную безопасность (например, отбросить весь входящий трафик, кроме нескольких портов, которые я хочу открыть), и, конечно же, мне бы хотелось, чтобы возможность безопасно добавлять / удалять правила без перезапуска.
Мне кажется, что iptables - мощный инструмент, которому очень не хватает какого-то стандартизированного способа манипулирования всем этим. Кажется, что каждый проект и каждый системный администратор делают это по-своему! (И я думаю, что здесь происходит множество админок "культа карго", люди клонируют грубые подходы вроде "используйте iptables-save как так".)
Если не считать кровавых подробностей того, как именно эти (и потенциально другие) инструменты манипулируют таблицами netfilter, а также разработки моих собственных сценариев или простого выполнения команд iptables вручную, есть ли способ безопасно работать с iptables, не нарушая при этом функциональность из этих других инструментов? Какие-нибудь зарождающиеся стандарты или проекты, призванные внести разум в эту область? Даже полезную веб-страницу, которую я пропустил, которая могла бы охватывать по крайней мере эти два пакета вместе?
Это действительно старая версия, но для людей, которые ищут и находят это, fail2ban и многие другие утилиты легко настраиваются. Вы можете изменить свои файлы действий fail2ban, такие как iptables-multiport.conf, чтобы вызывать iptables и создавать цепочки так, как вы этого хотите.
например.
actionstart = iptables -N fail2ban-<name>
iptables -A fail2ban-<name> -j RETURN
iptables -I INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
Это создает в вашей цепочке INPUT правило, которое некрасиво и неуправляемо, но вы можете довольно легко поместить его в одну из ваших собственных цепочек под вашим контролем. Вы можете создать фильтр INPUT, который затем будет связан с другими фильтрами для fail2ban, чтобы все это не попало в вашу цепочку INPUT, как показано ниже.
actionstart = iptables -N fail2ban-<name>
iptables -A fail2ban-<name> -j RETURN
iptables -I INPUT-FAIL2BAN -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
То же самое касается libvirt или Xen, где есть скрипты, которые вызываются для выполнения работы. Xen, например, использует / etc / xen / scripts, в которых вы найдете сетевой мост, и другие, где вызывается iptables. Оформите его так, как хотите. В худшем случае измените код. Я, например, использую fail2ban для изменения центрального брандмауэра, чтобы все серверы были защищены, что означает, что iptables на локальном компьютере все равно не отображает правила.