我希望 Samhain 监控一个文件,例如/root/somefile
。此文件目前不存在,但我希望在任何时候创建它时收到通知。
我将其添加到samhainrc
:
[ReadOnly]
file = /root/somefile
这导致 Samhain 发出以下日志条目:
Oct 18 22:54:04 ip-172-31-24-115 Samhain[17123]: CRIT : [2018-10-18T22:54:04+0000] interface=<lstat>, msg=<No such file or directory>, userid=<0>, path=</root/somefile>
Oct 18 22:54:04 ip-172-31-24-115 Samhain[17123]: CRIT : [2018-10-18T22:54:04+0000] msg=<POLICY MISSING>, path=</root/somefile>
Oct 18 22:54:19 ip-172-31-24-115 Samhain[17157]: INFO : [2018-10-18T22:54:19+0000] msg=<Checking [ReadOnly]>, path=</root/somefile>
Oct 18 22:54:19 ip-172-31-24-115 Samhain[17157]: NOTICE : [2018-10-18T22:54:19+0000] msg=<Check failed>, path=</root/somefile>
如果我使用创建此文件echo test > /root/somefile
,那么我会不是记录任何违反政策的行为——该文件的添加尚未被注意到。
如何配置 Samhain,以便当创建了之前不存在的相关文件时通知我?
该IgnoreMissing
配置选项乍一看似乎很有用,但实际上并非如此。在IgnoreMissing = /root/somefile
中samhainrc
,行为没有任何变化。似乎此选项适用于预计稍后会丢失的文件 - 如果文件曾经存在但现在不存在,例如如果自动化过程删除了过期的文件,它会抑制警报。
虽然/root/somefile
在这种情况下显然是编造的,但一个不存在的文件突然开始存在的例子是,如果该文件/home/someuser/.ssh/authorized_keys
之前不存在,但后来突然存在 - 这可能是一个恶意用户利用某些东西来放置后门,允许他们以 shell 用户身份登录。这是我想要得到警告的事情。
可以用来dir = /home/someuser/.ssh
监控全部用户.ssh
文件夹中的更改,但这毫无帮助:如果用户在其帐户中使用 SSH 是正常行为,他们的.ssh/known_hosts
文件可能会更改,他们可能会更改他们的ssh_config
等,而我不希望被这些警告。因此,除了一些列入白名单的文件外,我不想监控整个目录;除了特定的关键文件外,我想让目录不受监控。
答案1
如果我理解正确的话,您需要监视目录中的所有文件,除了某些文件或子目录:
您可以尝试下一步:
[ReadOnly]
#
dir=/home/someuser/.ssh
#
[Attributes]
#
# less restrictive policy for the directory file itself
#
file=/home/someuser/.ssh
#
[IgnoreAll]
#
# exclude these file and directories
#
file=/home/someuser/.ssh/known_hosts
#dir=-1/etc/calendar
#
更多信息https://www.la-samhna.de/samhain/manual/all-except.html