我创建了一个装有 Suricata 和 Evebox 的 docker 容器。在我的主机上,我首先执行以下操作:
ifconfig enp2s0:1 192.168.0.111 netmask 255.255.255.0 up
这将根据我现有的接口设置一个新的接口。然后我像这样运行 docker 容器:
docker run --privileged --network host --cap-add NET_ADMIN --cap-add NET_RAW --rm suricata-evebox
然后我启动 suricata/evebox:
mkdir -p /data/evebox
suricata -i enp2s0:1 -D
evebox -v -D /data/evebox --datastore sqlite --input /var/log/suricata/eve.json
curl http://testmyids.com
以下是从机器运行时的场景:
- 在 Docker 容器内:检测警报
- 在 docker 主机上:检测警报
- 在本地网络上的机器上:看不到它
有没有办法让 Suricata 看到通过网络传输的所有流量,而不仅仅是主机和容器的流量?
答案1
首先,这里有一个可能的解决方案,可以在路由器本身或您想要监控的任何机器上设置:https://superuser.com/questions/853077/iptables-duplicate-traffic-to-another-ip
如果这对您的用例来说不可行,还有另一种选择,即可以在路由器和所有客户端之间设置交换机,该交换机应支持端口镜像。然后,您将向 ids/docker 主机添加另一个 NIC,它将接收来自镜像交换机的“WAN”端口的所有流量,这些流量可以传递到您的 suricata 容器。