Проблема в том, что modprobe и iptables не работают внутри контейнера LXC.
LXC - это пакет управления пользовательским пространством для контейнеров Linux, легкий механизм виртуальной системы, иногда описываемый как «chroot на стероидах».
Ошибка iptables внутри контейнера:
# iptables -I INPUT -s 122.129.126.194 -j DROP
> iptables v1.4.8: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
Я предполагаю, что это не может работать, потому что контейнеры LXC используют одно ядро, основное ядро сервера.
Как мне сделать fail2ban в этом случае. modprobe и iptables работают на главном сервере, так что я мог бы установить их там и каким-то образом связать файлы журналов, как я предполагаю?
Какие-либо предложения?
Возможно, вам подойдут tcp wrappers. fail2ban может управлять файлами /etc/hosts.allow и /etc/hosts.deny
Я считаю, что вам придется запустить fail2ban на хост-машине контейнера (а не в самом контейнере). Теперь, если у вас запущена служба в одном из контейнеров, вам нужно настроить fail2ban для поиска файла журнала в файловой системе контейнера, поскольку хост может видеть файловую систему контейнера. Например, у меня есть контейнер с именем mediabox. Это управляемый контейнер LXD, и я использовал пакет snap для установки LXD. Поэтому я бы указал fail2ban на файл журнала, используя путь типа / var / snap / lxd / common / lxd / container / mediabox / rootfs / var / log / ... Если вы не использовали пакет snap, тогда ваши пути может немного отличаться. Вы понимаете, как это работает? Fail2ban следит за файлами журналов. Таким образом, вы можете запустить его на хосте, посмотреть файл журнала контейнера и выполнить «запрет» с помощью iptables на хосте (так как вы все равно не можете сделать это в контейнере). Надеюсь, это поможет.