我使用Linux已经有一段时间了,我总是觉得需要一个被动的软件/脚本设置,该设置可以通过电子邮件或通过电子邮件即时通知我任何可疑的网络活动,例如扫描,失败的登录尝试等。视觉/音频通知。
我知道如何查找日志和其他内容,但在大多数情况下,这是一个手动且耗时的过程。我正在寻找具有某些良好的日志解析功能的半自动/全自动工具。
我知道用于监视Snort等网络的IDS系统,但对于普通家庭用户而言,它们是一个过大的选择,并且是一个痛苦的过程,难以启动和运行。
作为家庭用户,对我来说有什么好的选择?
我使用Linux已经有一段时间了,我总是觉得需要一个被动的软件/脚本设置,该设置可以通过电子邮件或通过电子邮件即时通知我任何可疑的网络活动,例如扫描,失败的登录尝试等。视觉/音频通知。
我知道如何查找日志和其他内容,但在大多数情况下,这是一个手动且耗时的过程。我正在寻找具有某些良好的日志解析功能的半自动/全自动工具。
我知道用于监视Snort等网络的IDS系统,但对于普通家庭用户而言,它们是一个过大的选择,并且是一个痛苦的过程,难以启动和运行。
作为家庭用户,对我来说有什么好的选择?
Answers:
一个简单有效的通用解决方案是使用logcheck。
sudo apt-get install logcheck
[edit /etc/logcheck/logcheck.conf to your liking]
logcheck定期有效地扫描所有日志(从上次中断的地方开始),过滤所看到的内容以消除任何被认为是正常的内容,并且可以选择通过电子邮件将不符合正常/常规模式的内容发送给警报。
主要思想是随时注意日志文件中所有重要条目的出现,因此您不必这样做。
logcheck是高度可配置的(man logcheck
)。您可以配置所有内容,包括:
和更多。您的忽略(常规/常规)模式位于/etc/logcheck/ignore.d.*下的多个文件中,您可以根据需要对其进行自定义;主要是您可能想添加自己的模式以忽略。默认的Ubuntu软件包已经包含大量的文件,这些文件具有用于许多服务的忽略模式,因此除非您的系统运行异常,否则没有太多添加。有3套预配置的忽略文件配置文件: ignore.d.workstation,ignore.d.server和ignore.d.paranoid可供选择。
logcheck的主要思想是,系统上运行的各种服务已经记录了异常事件。例如sshd或pam已经记录了身份验证失败。因此,主要缺少的组件是:
两者均由方便的软件包中的logcheck提供。您可以将logcheck与其他任何日志记录结合使用。例如,可以通过添加规则将iptables配置为对未明确允许的任何网络连接尝试进行syslog:
iptables -A input -j LOG
iptables -A input -j DROP
在所有允许规则之后。
我发现logcheck比logwatch(在其他答案中建议的)更有帮助,因为它预先打包了很多规则,可以忽略被认为是正常活动的规则。结果是它通过电子邮件发送的警报中的信噪比高得多。YMMV。
logcheck的另一个优点是它与记录的任何服务正交,因此没有功能重复。每当您将syslog
用于记录事件(无论是否异常)的新服务添加到/var/log
您下面的任何文件中时,就会开始自动为其发出警报。
如何:
由于
logcheck
已经预先配置好了,因此此答案顶部的两行基本上涵盖了您入门所需的全部内容。只需安装它,然后查看顶部的配置文件:/etc/logcheck/logcheck.conf
更改您的电子邮件地址,以便logcheck
通过电子邮件向您发送警报。这是第二步的友好参考。由于Ubuntu是基于Debian的,因此这些说明也应适用于Ubuntu。 这是另一个很好的参考。
安装后,便开始进行持续改进。随着时间的流逝,您将完善规则,以忽略任何您已经知道并且不应该担心的问题。优化过程就像在您喜欢的文本编辑器中将文本行添加到文件一样简单。
忽略文件中的每一行都是扩展的正则表达式(请参阅参考资料
man 7 regex
),但是您可以使用简单的字符串,只要它们与您要忽略的日志行匹配即可。请记住,字符,例如*
,?
“+”,[]
,()
是特殊的正则表达式,所以如果他们真的出现在日志行,你就必须用一个反斜杠逃脱他们\
的忽略文件。换句话说:如果收到不想接收的警报,请查看通过电子邮件发送给您的日志行,并添加与其匹配的模式,作为您选择的任何忽略文件的一行。我建议将其
/etc/logcheck/ignore.d.<yourloglevel>/my-ignores
用作您的个人忽略文件。哪里<yourloglevel>
是一个paranoid
,server
或workstation
(如你在主配置文件中已选择:/etc/logcheck/logcheck.conf
)。查看其他忽略文件中的示例,以了解如何处理随时间变化的文本,例如进程ID或时间戳。有很多现有的例子可以学习。
最后一个提示:logcheck
附带了一个有用的小实用程序logcheck-test
,它对于测试新规则非常方便。man logcheck-test
有关详细信息。
如果您的网络上没有很多系统,那么设置像Snort这样的IDS可能会显得过高(特别是如果您的计算机上没有任何网络服务)。我建议从配置logwatch开始,向自己发送有关系统状况的报告。完成后,配置系统日志,以便获得尽可能多的相关信息。
确保在网络中运行服务(ftp,web,nfs,ssh等)时需要进行入侵检测。这是因为它们在Internet上公开,并且由于:
他们需要每天由经验丰富的网络管理员进行监控。如果您运行此服务,则可能已经对如何避免此问题有最低的了解。
如果您没有运行任何一项服务,则说明您的Internet路由器防火墙已经阻止了端口上的任何传入连接。扫描网络路由器
如果您全都是绿色,那么您一切都很好。
最后但并非最不重要的一点是,您的路由器可能具有内置的入侵检测系统(因为所有路由器中有99%运行的是带区卷的linux服务器)。为此,您必须检查路由器制造商的手册。