Linux

帶有 LXC 容器的伺服器上的 fail2ban

  • September 2, 2019

問題是 modprobe 和 iptables 在 LXC 容器中不起作用。

LXC 是 Linux Containers 的使用者空間控制包,它是一種輕量級的虛擬系統機制,有時被描述為“類固醇上的 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 包裝器適合你。fail2ban 可以管理 /etc/hosts.allow 和 /etc/hosts.deny 文件

我相信您必須在容器主機(而不是容器本身)上執行 fail2ban。現在,如果您在其中一個容器中執行了一項服務,您所做的就是配置 fail2ban 以在容器的文件系統中查找日誌文件,因為主機可以看到容器的文件系統。例如,我有一個名為 mediabox 的容器。這是一個 LXD 託管容器,我使用 snap 包安裝了 LXD。因此,我會使用 /var/snap/lxd/common/lxd/containers/mediabox/rootfs/var/log/ 之類的路徑將 fail2ban 指向日誌文件。如果您沒有使用 snap 包,那麼您的路徑可能會有所不同。你知道這是如何工作的嗎?Fail2ban 監視日誌文件。所以你可以讓它在主機上執行,觀察容器的日誌文件,然後做“禁止” 在主機上使用 iptables (因為無論如何你都不能在容器中這樣做)。我希望這有幫助。

引用自:https://serverfault.com/questions/398098