我的IDS设置如下:
硬件/接口
WAN <----(brwan)> ROUTER / AP <(br0)----> LAN
\
-----(eth1)> |
\ | IDS device listening on eth1
---(eth0)> |
在路由器上,我使用这些 iptables 规则将流量传送到 IDS:
-A INPUT ! -s IDS_ETH1_IP/32 ! -i lo -j TEE --gateway IDS_ETH1_IP
-A FORWARD ! -s IDS_ETH1_IP/32 ! -d IDS_ETH1_IP/32 -j TEE --gateway IDS_ETH1_IP
-A OUTPUT ! -d IDS_ETH1_IP/32 ! -o lo -j TEE --gateway IDS_ETH1_IP
IDS_ETH1_IP 是一个固定 IP,位于我的 LAN 子网之外。
仍然在路由器上,设置到 IDS_ETH1_IP 的路由:
~$ ip r s
(…)
IDS_ETH1_IP dev br0 scope link
在 IDS 设备上,eth1 设置如下:
~$ ip a s dev eth1
3: eth1: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether IDS_ETH1_MAC brd ff:ff:ff:ff:ff:ff
inet IDS_ETH1_IP/32 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
使用以下命令确保它只是一个监听设备:
ip link set dev eth1 multicast off
ethtool -K eth1 gro off gso off lro off rx off rxvlan off sg off tso off tx off txvlan off
ethtool -G eth1 rx 4096
iptables -t raw -F PREROUTING
iptables -t raw -A PREROUTING -i eth1 -j DROP
注意:我需要在接口上保持 ARP 开启,因为如果我启用 NOARP,那么各种交换机将无法识别 MAC,因此数据包将被发送到 LAN 上的每个设备/接口(WiFi 除外)。
以及 sysctl 设置(仍在 IDS 设备上):
net.ipv4.conf.eth1.accept_redirects = 0
net.ipv4.conf.eth1.accept_source_route = 0
net.ipv4.conf.eth1.forwarding = 0
net.ipv4.conf.eth1.promote_secondaries = 0
net.ipv4.conf.eth1.secure_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0
net.ipv4.conf.eth1.shared_media = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.all.arp_ignore = 1
all.arp_ignore
强制接口仅回答自己的 arp 查询至关重要。
软件
在 IDS 设备上,我安装了 Suricata(使用 AF_PACKETS 监听 eth1)和 Filebeat,以将数据发送到我的 LAN 上另一台具有 ELK docker 堆栈(Elasticsearch、Kibana 和 Evebox)的设备。
我花了一点时间来设置所有这些并最终达到这里描述的设置,并且效果很好。
问题
现在,在路由器上使用 iptables TEE 规则的好处在于,我可以决定在哪里进行分接。我在 WAN 端遵循防火墙规则(无需对已阻止的数据包发出警报),并且它允许根据 FORWARD 表上分接的内容了解数据包在 LAN 中的去向。它还会分接进出路由器本身的内容(输入/输出)。
我想做的是找到一种方法,在日志中区分 LAN 端和 WAN 端的窃听内容。例如,我可以详细说明 iptables 规则以区分-i brwan
、-o brwan
和-i br0
,-o br0
这很容易,但如何在发送的数据包中区分它们?标记数据包不会在设备之间传递。也许在 IDS 设备上创建具有不同 IP 和 MAC 的 eth1 子接口?并相应地发送?如果我这样做,如何创建不同的虚拟的设备与 filebeat 以便我可以在 kibana 中区分它们?
有什么想法我可以做点什么来实现这个目标吗?以及如何利用我现有的系统改进我的 IDS 系统?
谢谢。