跳过内容

基于主机的入侵检测系统 (HIDS)

先决条件

  • 熟悉命令行文本编辑器(在本例中使用 vi
  • 对从命令行发出命令、查看日志和其他一般系统管理员任务有很高的舒适度
  • 了解安装此工具还需要监控操作并根据您的环境进行调整
  • root 用户运行所有命令,或者具有 sudo 权限的普通用户

介绍

ossec-hids 是一个主机入侵检测系统,它提供自动的动作响应步骤,以帮助减轻主机入侵攻击。它只是硬化 Apache Web 服务器设置的众多可能部分之一。您可以使用或不使用它与其他工具结合使用。

如果您想使用此工具和其他硬化工具,请参考 Apache 加固 Web 服务器 文档。本文档也使用该原始文档中概述的所有假设和约定。在继续之前,最好先回顾一下。

安装 Atomicorp 的仓库

要安装 ossec-hids,我们需要来自 Atomicorp 的第三方仓库。Atomicorp 还为那些遇到麻烦但希望获得专业支持的用户提供价格合理的收费支持版本。

如果您更喜欢支持,并且有预算,请查看 Atomicorp 的付费 ossec-hids 版本。您只需要 Atomicorp 免费仓库中的几个软件包。您将在下载后更改仓库。

下载仓库需要 wget。首先安装它,如果尚未安装 EPEL 仓库,请使用以下命令安装:

dnf install wget epel-release

下载并启用 Atomicorp 的免费仓库

wget -q -O - https://www.atomicorp.com/installers/atomic | sh

此脚本将要求您同意条款。输入“yes”或 Enter 以接受默认值。

接下来,它将询问您是否要默认启用仓库,您还需要接受默认值或输入“yes”。

配置 Atomicorp 仓库

您只需要原子仓库来安装和更新几个软件包。为此,您将更改仓库并仅指定所需的那些软件包

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 电子邮件设置。

您需要设置“发件人”电子邮件地址。您需要这样做才能处理电子邮件服务器上的垃圾邮件过滤器,这些过滤器可能会将此电子邮件视为垃圾邮件。为了避免收到大量电子邮件,将电子邮件报告设置为每小时 1 次。您可以在启动 ossec-hids 时扩展或注释掉此命令。

<white_list> 部分处理服务器的本地主机 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> 部分处理您想要监控的日志的位置。已为您只需验证其路径的 syslogsecure 日志设置了条目,但其他所有内容都可以保留。

您需要添加 Apache 日志位置,并且您希望将其添加为通配符,因为您可能拥有许多不同网络客户的许多日志。

  <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