从容器到主机捕获iptables日志

时间:2018-11-13 02:17:57

标签: docker networking iptables virtual-network

我正在尝试捕获在容器中运行的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扫描主机。

0 个答案:

没有答案