我正在设置包含 snort 的大规模部署映像。由于我不知道每个映像将驻留在哪个网络地址范围,所以我考虑使用环境变量来保存网络范围,并在文件中使用此环境变量来snort.conf
设置HOME_NET
。
但这就是一切崩溃的地方。这能做到吗?怎么做?本质上,我设想的是这样的:
$ export SYS_HOME_NET=192.168.1.0/16
# snort.conf
ipvar HOME_NET %SYS_HOME_NET%
显然,这是行不通的。有什么想法吗?
答案1
我会做些不同的事情。假设给出 IP 范围的命令是
echo ipvar HOME_NET "$(/sbin/ip route | awk '/eth0/ && ++i==2 { print $1 }')"
您可以编写一个小的包装脚本来启动snort
:
#!/usr/bin/env bash
echo ipvar HOME_NET "$(/sbin/ip route | awk '/eth0/ && ++i==2 { print $1 }')" > ~/HOME_NET.conf
snort
如果你将该文件另存为snort.sh
,使其可执行(chmod a+x snort.sh
)并运行它,它将~/HOME_NET.conf
使用正确的 IP 范围更新文件前启动snort
,以便一切都能如您所期望的那样工作。
答案2
我刚想到的一个方法是创建一个.conf
创建此变量的外部文件并将其包含在snort.conf
如下文件中:
#snort.conf
#ipvar HOME_NET any
include ./HOME_NET.conf
然后,创建一个HOME_NET.conf
如下所示的文件:
ipvar HOME_NET 192.168.1.0/16
并在启动或初始图像设置期间HOME_NET.conf
使用脚本更改/替换内容。.sh