主机入侵检测系统 (HIDS)¶
先决条件¶
- 熟练使用命令行文本编辑器(本例中使用
vi
) - 对从命令行发出命令、查看日志和其他一般的系统管理员职责有很高的熟悉度
- 理解安装此工具还需要对操作进行监控并根据您的环境进行调整
- 以 root 用户运行所有命令,或以具有
sudo
权限的普通用户运行
简介¶
ossec-hids
是一个主机入侵检测系统,它提供自动操作响应步骤,以帮助缓解主机入侵攻击。它是加固 Apache Web 服务器设置的众多可能组件之一。您可以单独使用它,也可以与其他工具一起使用。
如果您想使用此工具和其他加固工具,请参考 Apache 加固 Web 服务器 文档。本文档也使用了该原始文档中概述的所有假设和约定。建议在继续之前先回顾一下。
安装 Atomicorp 的仓库¶
要安装 ossec-hids
,我们需要来自 Atomicorp 的第三方仓库。Atomicorp 还提供价格合理的付费支持版本,供那些在遇到问题时需要专业支持的人使用。
如果您偏好支持服务且预算允许,请查看 Atomicorp 的付费 ossec-hids
版本。您只需要从 Atomicorp 的免费仓库中获取少量软件包。下载后,您将更改仓库。
下载仓库需要 wget
。请先安装它,如果您尚未安装 EPEL 仓库,请先安装 EPEL 仓库,然后执行以下命令:
dnf install wget epel-release
下载并启用 Atomicorp 的免费仓库
wget -q -O - https://www.atomicorp.com/installers/atomic | sh
此脚本会要求您同意条款。输入“yes”或按 Enter 键接受默认设置。
接下来,它会询问您是否要默认启用该仓库,您再次可以选择接受默认设置或输入“yes”。
配置 Atomicorp 的仓库¶
您只需要 atomic 仓库中的少量软件包。因此,您将更改仓库并仅指定所需的软件包。
vi /etc/yum.repos.d/atomic.repo
在顶部部分的“enabled = 1”下方添加此行。
includepkgs = ossec* GeoIP* inotify-tools
这是您唯一需要进行的更改。保存您的更改并退出仓库(在 vi
中,按 Esc 进入命令模式,然后按 Shift+:+wq 保存并退出)。
这会将 Atomicorp 仓库限制为仅用于安装和更新这些软件包。
安装 ossec-hids
¶
配置好仓库后,您需要安装软件包。
dnf install ossec-hids-server ossec-hids inotify-tools
配置 ossec-hids
¶
默认配置需要进行许多更改。其中大部分与服务器管理员通知和日志位置有关。
ossec-hids
会分析日志以尝试判断是否正在发生攻击,以及是否需要采取缓解措施。它还会向服务器管理员发送报告,通知他们,或提供关于根据 ossec-hids
所见情况启动的缓解程序的通知。
要编辑配置文件,请输入:
vi /var/ossec/etc/ossec.conf
作者将拆分此配置,显示行内更改并进行解释。
<global>
<email_notification>yes</email_notification>
<email_to>admin1@youremaildomain.com</email_to>
<email_to>admin2@youremaildomain.com</email_to>
<smtp_server>localhost</smtp_server>
<email_from>ossec-webvms@yourwebserverdomain.com.</email_from>
<email_maxperhour>1</email_maxperhour>
<white_list>127.0.0.1</white_list>
<white_list>192.168.1.2</white_list>
</global>
电子邮件通知默认是关闭的,并且 <global>
配置几乎是空的。您需要开启电子邮件通知,并通过电子邮件地址标识将接收电子邮件报告的人员。
<smtp_server>
部分目前显示为 localhost,但是您可以指定一个电子邮件服务器中继,或者通过遵循 此指南 来为本地主机设置 postfix 电子邮件设置。
您需要设置“发件人”电子邮件地址。您需要此设置来处理您的电子邮件服务器上的 SPAM 过滤器,这些过滤器可能会将此电子邮件视为 SPAM。为避免收到大量电子邮件,请将电子邮件报告设置为每小时 1 次。您可以扩展或注释掉此命令,以便在使用 ossec-hids
时开始。
<white_list>
部分处理服务器的 localhost IP 和防火墙的“公共”IP 地址(请记住我们用私有 IP 地址进行的替换),来自该 IP 地址的所有连接都将在受信任的网络上显示。您可以添加许多 <white_list>
条目。
<syscheck>
<!-- Frequency that syscheck is executed -- default every 22 hours -->
<frequency>86400</frequency>
...
</syscheck>
<syscheck>
部分会审查要包含和排除的目录列表,以查找受损文件。将其视为又一个用于监控和保护文件系统免受漏洞侵害的工具。您需要审查目录列表,并将其他您想要的目录添加到 <syscheck>
部分。
位于 <syscheck>
部分下方的 <rootcheck>
部分是另一个保护层。<syscheck>
和 <rootcheck>
监控的位置是可编辑的,但您可能不需要对它们进行任何更改。
将 <rootcheck>
的运行 <frequency>
(频率)从默认的 22 小时更改为每 24 小时(86400 秒)运行一次,这是一个可选的更改示例。
<localfile>
<log_format>apache</log_format>
<location>/var/log/httpd/*access_log</location>
</localfile>
<localfile>
<log_format>apache</log_format>
<location>/var/log/httpd/*error_log</location>
</localfile>
<localfile>
部分处理您要监控的日志位置。对于您只需要验证路径的 syslog 和 secure 日志,已经设置了条目,但其他所有内容都可以保留。
您需要添加 Apache 日志位置,并且您希望将其作为通配符添加,因为您可能有很多不同 Web 客户的日志。
<command>
<name>firewalld-drop</name>
<executable>firewall-drop.sh</executable>
<expect>srcip</expect>
</command>
<active-response>
<command>firewall-drop</command>
<location>local</location>
<level>7</level>
</active-response>
最后,在文件末尾附近,您需要添加主动响应部分。这部分有两个组成部分:<command>
部分和 <active-response>
部分。
“firewall-drop”脚本已存在于 ossec-hids
路径中。它告诉 ossec-hids
,如果达到级别 7,则添加防火墙规则以阻止该 IP 地址。
在完成所有配置更改后,启用并启动服务。如果一切正常启动,您就可以继续进行下一步了。
systemctl enable ossec-hids
systemctl start ossec-hids
ossec-hids
配置文件。您可以通过访问 官方文档网站 来了解这些选项。
结论¶
ossec-hids
只是 Apache 加固 Web 服务器的众多组成部分之一。您可以通过选择它并结合其他工具来获得更好的安全性。
虽然安装和配置相对直接,但您会发现这**不是**一个“安装后就无需理会”的应用程序。您需要根据您的环境对其进行调整,以获得最大的安全性并尽量减少误报。
作者:Steven Spencer
贡献者:Ezequiel Bruni, Ganna Zhyrnova