我正在尝试捕获在容器中运行的iptables生成的日志。 由于已禁用容器的LOG支持(请参见here),因此我试图在主机中设置iptables日志规则。 我正在使用一条规则(在主机上)对其进行测试,该规则从NMap (* 1)捕获SYN扫描。
因此,我们的想法是在主机上设置iptables规则,以记录针对使用虚拟桥接接口c_victim
(* 2)的容器(名为br-a1b2c3
)执行的扫描。 strong>。
我尝试了类似的不同规则:
# iptables -I FORWARD -m physdev --physdev-out veth144i0 --physdev-is-bridged -j LOG --log-prefix "[fw::test]"
其中veth144i0
是与br-a1b2c3
(* 3)相关的虚拟以太网接口。我从here得到了这个规则。
经过以下检查,我尝试的所有规则均未在主机中生成日志:
$ journalctl -b | grep "\[fw.*\]"
关于如何在(* 1)中为容器设置iptables规则的任何想法?
(* 1):为了确保规则有效,我在主机中对其进行了测试:
# iptables -I INPUT -p tcp -m multiport --dports 23,79 --tcp-flags ALL SYN -m limit --limit 3/m --limit-burst 5 -j LOG --log-prefix "[fw::syn-scan] "
然后使用以下方法从容器中扫描主机:
root@887952fed115# nmap -sS 192.168.0.14
,然后使用以下命令检查日志:
$ journalctl -b | grep "\[fw.*\]"
显示扫描日志的位置。
(* 2):我知道这是因为我使用以下命令的组合进行了检查:
$ docker container inspect c_victim | grep NetworkID
$ docker network ls
$ ifconfig -a
(* 3):我通过查看符号链接进行了检查:
ls -l /sys/devices/virtual/net/veth*/master
作为探索性检查,我还设置了规则(始终在主机中):
# iptables -I FORWARD -i br-a1b2c3 -j LOG --log-prefix "[fw::test-in]"
# iptables -I FORWARD -o br-a1b2c3 -j LOG --log-prefix "[fw::test-out]"
看看会发生什么,这就是我得到的:
c_victim
扫描主机。