如何在 Debian 8 上安装本地 OSSEC

介绍

OSSEC是一个开源的,基于主机的入侵检测系统(HIDS),它执行日志分析,完整性检查,Windows注册表监控, rootkit检测,基于时间的警报和积极响应。

OSSEC 可以安装以仅监控其安装的服务器,这是 OSSEC 所说的 local 安装,也可以作为 server 安装,以监控一个或多个 agents

前提条件

要遵循本教程,您将需要:

  • 具有 sudo 非根用户和 SSH 密钥的 Debian 8 Droplet,您可以通过遵循 本教程来设置。

步骤 1 – 安装必要的包

在此步骤中,我们将安装 OSSEC 所需的包,首先更新包数据库。

1sudo apt-get update

然后安装可用的更新。

1sudo apt-get -y upgrade

最后,安装OSSEC的依赖(‘build-essential’和‘inotify-toops’)和‘ntp’,这是一个网络时间协议服务。

1sudo apt-get install build-essential inotify-tools ntp

最后,启用NTP服务,这有助于服务器自动保持准确的时间。

1sudo systemctl start ntp

第2步:启用防火墙

新安装的 Debian 8 服务器没有活跃的防火墙应用程序. 在此步骤中,我们将学习如何启用 IPTables 防火墙应用程序,并确保在重新启动后仍有运行时间规则。

最简单的实现方法是使用以下方式安装iptables-persistent包:

1sudo apt-get install -y iptables-persistent

验证后,您将被要求将 IPv4 和 IPv6 防火墙规则保存到单独的文件中。 按 ENTER 按两条提示以接受默认位置,这些位置是 /etc/iptables/rules.v4/etc/iptables/rules.v6

默认情况下,这些文件中没有规则,所以我们必须创建它们以保持服务器的保护和开放的SSH连接,我们只对IPv4规则感兴趣,所以我们只会修改‘rules.v4’规则文件。

使用nano或您最喜欢的文本编辑器打开rules.v4规则文件。

1sudo nano /etc/iptables/rules.v4

该文件的全部内容看起来像这样:

1[label Original /etc/iptables/rules.v4]
2# Generated by iptables-save v1.4.21 on Sat May 9 01:27:00 2015
3*filter
4:INPUT ACCEPT [5722:416593]
5:FORWARD ACCEPT [0:0]
6:OUTPUT ACCEPT [4372:503060]
7COMMIT
8# Completed on Sat May 9 01:27:00 2015

以下默认规则将足以保护服务器和 SSH 连接,所以在 **:OUTPUT ACCEPT [4372:503060]**和 COMMIT行之间复制和粘贴。

 1#  Allow all loopback traffic. Drop all traffic to 127/8 that doesn't use lo0
 2-A INPUT -i lo -j ACCEPT
 3-A INPUT -d 127.0.0.0/8 -j REJECT
 4
 5#  Accept all established inbound connections
 6-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 7
 8#  Allow all outbound traffic
 9-A OUTPUT -j ACCEPT
10
11#  Uncomment the next two lines to allow HTTP and HTTPS connections
12#-A INPUT -p tcp --dport 80 -j ACCEPT
13#-A INPUT -p tcp --dport 443 -j ACCEPT
14
15#  Allow SSH connections. If you changed your SSH port, do same here.
16-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
17
18#  Allow ping
19-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
20
21#  Log iptables denied calls
22-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
23
24#  Drop all other inbound - default deny unless explicitly allowed policy
25-A INPUT -j DROP
26-A FORWARD -j DROP

保存并关闭文件. 然后,若要应用新的规则集,请重新启动iptables-persistent

1sudo systemctl restart netfilter-persistent

您现在可以通过此命令验证规则是否存在。

1sudo iptables -L

你的输出将看起来像这样:

 1[label iptables -L output]
 2Chain INPUT (policy ACCEPT)
 3target prot opt source destination         
 4ACCEPT all  --  anywhere anywhere     
 5REJECT all  --  anywhere loopback/8 reject-with icmp-port-unreachable
 6
 7. . .         
 8
 9Chain OUTPUT (policy ACCEPT)
10target prot opt source destination         
11ACCEPT all  --  anywhere anywhere

步骤 3 – 下载和验证 OSSEC

OSSEC 以压缩的 tarball 形式交付. 在此步骤中,您将下载它及其检查总数文件,用于验证 tarball 是否已被篡改. 您可以检查 项目网站的最新版本。 在此写作时,OSCE 2.8.1 是最新稳定版本。

要下载 tarball,键入:

1wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1.tar.gz

然后下载使用的 checksum 文件

1wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1-checksum.txt

在下载两种文件后,检查压缩 tarball 的 md5sum。

1md5sum -c ossec-hids-2.8.1-checksum.txt

产量应该是:

1[label md5sum output]
2ossec-hids-2.8.1.tar.gz: OK
3md5sum: WARNING: 1 line is improperly formatted

通过验证 SHA1 检查总数来执行此操作。

1sha1sum -c ossec-hids-2.8.1-checksum.txt

它的产量应该是:

1[label sha1sum output]
2ossec-hids-2.8.1.tar.gz: OK
3sha1sum: WARNING: 1 line is improperly formatted

在每个情况下,忽略 警告行. OK行是确认文件是好的。

第4步:安装OSEC

在此步骤中,我们将安装 OSSEC. 首先,先解析它。

1tar xf ossec-hids-2.8.1.tar.gz

它将被解包到一个名为ossec-hids-2.8.1的目录中。

1cd ossec-hids-2.8.1

<$>[注] 注意:在 OSSEC 中引入了一个错误,该错误导致它重写了 /etc/hosts.deny 文件的内容。

要修复/etc/hosts.deny错误,请在从下载的 tarball 中提取 OSSEC 后,在/var/ossec/active-response目录中打开host-deny.sh文件。

1nano active-response/host-deny.sh

在文件的末尾,寻找代码中的两个行,如下所示,以TMP_FILE =开头,在评论#从 hosts.deny中删除`下面。

1[label Modified host-deny.sh code block]
2# Deleting from hosts.deny
3elif [ "x${ACTION}" = "xdelete" ]; then
4   lock;
5   TMP_FILE=`mktemp /var/ossec/ossec-hosts.XXXXXXXXXX`
6   if [ "X${TMP_FILE}" = "X" ]; then
7     # Cheap fake tmpfile, but should be harder then no random data
8     TMP_FILE="/var/ossec/ossec-hosts.`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -1 `"
9   fi

保存并关闭文件. 这结束了bug修复。

接下来,开始安装。

1sudo ./install.sh

在整个安装过程中,您将被要求提供一些输入。首先,您将被要求选择安装语言,默认情况下是英语。如果这是您偏好的语言,请按 ENTER。否则,请先从支持的语言列表中输入2个字母。然后再按 ENTER来启动安装。

问题 1 会问 您想要的安装类型(服务器、代理、本地、混合或帮助)?. 键入 本地,然后按一下 ** ENTER**。

对于下列所有问题,请按 ENTER 以接受默认值,但请注意,问题 3.1 会提示您输入您的电子邮件地址,安装程序将使用它自动找到相应的 SMTP 服务器。

如果安装成功,安装后输出的最后几行应该读到:

 1[label OSSEC successful installation output]
 2- Configuration finished properly.
 3
 4 - To start OSSEC HIDS:
 5                /var/ossec/bin/ossec-control start
 6
 7 - To stop OSSEC HIDS:
 8                /var/ossec/bin/ossec-control stop
 9
10 - The configuration can be viewed or modified at /var/ossec/etc/ossec.conf
11
12. . .

步骤 4 — 定制 OSSEC 的电子邮件设置

在这里,我们将验证在上一步中指定的电子邮件凭证和OSSEC自动配置的凭证是正确的。

电子邮件设置位于 OSSEC 的主要配置文件中 - ossec.conf,该文件位于 ``/var/ossec/etc` 目录中. 要访问和修改任何 OSSEC 文件,您首先需要切换到 root 用户。

1sudo su

现在你已经 root 了,转到 OSSEC 配置文件所在的目录。

1cd /var/ossec/etc

然后,备份配置文件。

1cp ossec.conf ossec.conf.00

使用nano文本编辑器或您喜爱的文本编辑器打开原始文件。

1nano ossec.conf

电子邮件设置位于文件的顶部,它看起来像这样。

1[label /var/ossec/etc/ossec.conf]
2<global>
3    <email_notification>yes</email_notification>
4    <email_to>sammy@example.com</email_to>
5    <smtp_server>mail.example.com.</smtp_server>
6    <email_from>sammy@example.com</email_from>
7</global>

**< email_to>**是您在安装过程中提供的电子邮件。 通知将发送到该电子邮件地址,并且 **< smtp_server>**是安装脚本自动发现的SMTP服务器。

< email_from> 是 OSSEC 警告似乎来自的电子邮件地址. 默认情况下,它是基于 OSSEC 邮件用户帐户和服务器的主机名创建的。 您应该将此更改为有效的电子邮件地址,以减少您的电子邮件被您的电子邮件提供商的 SMTP 服务器标记为垃圾邮件的概率。 请注意,如果接收的 SMTP 服务器没有严格的垃圾邮件政策,则 < email_to>< email_from> 可能是相同的。

更改电子邮件设置后,保存并关闭文件,然后启动 OSSEC。

1/var/ossec/bin/ossec-control start

检查您的收件箱,看到一封电子邮件说OSEC已经开始。如果您收到来自OSEC安装的电子邮件,那么您知道未来的警报也会到达您的收件箱。

步骤 6 - 添加警报

默认情况下,OSEC会发出有关文件更改和服务器上的其他活动的警告,但不会对新增的文件发出警告,也不会实时发出警告 - 仅在预定系统扫描后,默认情况下是79200秒(或22小时)。

首先,打开ossec.conf

1nano ossec.conf

轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻轻。

1<syscheck>
2    <!-- Frequency that syscheck is executed - default to every 22 hours -->
3    <frequency>79200</frequency>
4    <alert_new_files>yes</alert_new_files>

虽然您仍然有 ossec.conf 打开,请查看 OSSEC 监控的系统目录列表,它就在您修改的最后一行下面。

1<!-- Directories to check  (perform all possible verifications) -->
2<directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
3<directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories>

除了 OSSEC 已配置监控的默认目录列表之外,您还可以添加任何您想要监控的目录,例如,您可以添加您的主目录。

1<!-- Directories to check  (perform all possible verifications) -->
2<directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
3<directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories>
4<directories report_changes="yes" realtime="yes" check_all="yes">/home/<^sammy</directories>

现在保存并关闭ossec.conf

下一个要修改的文件是在 /var/ossec/rules 目录中,所以更改到该目录。

1cd /var/ossec/rules

/var/ossec/rules目录包含许多XML文件,包括ossec_rules.xml,其中包含OSEC的默认规则定义,以及local_rules.xml,在那里您可以添加自定义规则。

ossec_rules.xml中,当文件添加到监控目录时会出现的规则是规则554. 默认情况下,OSSEEC在触发该规则时不会发出警告,因此这里的任务是改变该行为。

1[label Rule 554 from /var/ossec/rules/ossec_rules.xml]
2<rule id="554" level="0">
3<category>ossec</category>
4<decoded_as>syscheck_new_entry</decoded_as>
5<description>File added to the system.</description>
6<group>syscheck,</group>
7</rule>

如果一个规则设置为 0 级,则 OSSEC 不会发出警报,因此我们会将该规则复制到 local_rules.xml 并修改以触发警报。

1nano local_rules.xml

将下列内容添加到文件的末尾,在带 标签的行前。

 1<rule id="554" level="7" overwrite="yes">
 2<category>ossec</category>
 3<decoded_as>syscheck_new_entry</decoded_as>
 4<description>File added to the system.</description>
 5<group>syscheck,</group>
 6</rule>
 7
 8</group> <!-- SYSLOG,LOCAL -->
 9
10<!-- EOF -->

保存并关闭文件,然后重新启动 OSSEC 以应用更改。

1/var/ossec/bin/ossec-control restart

您现在应该在每次添加、修改或删除文件时收到警告. 请注意,OSSEEC不会实时通知文件添加,只有经过完整的系统扫描后。

步骤 6 (可选) — 停止 IPTables 拒绝警报

在此步骤中,该步骤是可选但强烈建议的,我们将配置OSEC以免对IPTables拒绝的消息发出警告。

在本教程开始时,我们启用了IPTables防火墙。安装OSEC后,它会发出1002规则警报,当IPTables否认攻击者并记录攻击者发作情况时,就会触发该警报。

要删除这些警告,我们需要定制规则1002。 该规则位于 /var/ossec/rules/syslog_rules.xml 中,并且看起来像这样:

1[label Rule 1002 in /var/ossec/rules/syslog_rules.xml]
2<rule id="1002" level="2">
3    <match>$BAD_WORDS</match>
4    <options>alert_by_email</options>
5    <description>Unknown problem somewhere in the system.</description>
6</rule>

打开 syslog_rules.xml 来编辑。

1nano /var/ossec/rules/syslog_rules.xml

查找BAD_WORDS变量,该变量定义在该文件的顶部,并包含一些关键字。

1[label BAD_WORDS definition in in /var/ossec/rules/syslog_rules.xml]
2<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var>

BAD_WORDS定义下方,复制并粘贴这个新的变量,IGNORED_WORD

1<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var>
2<var name="IGNORED_WORD">denied</var>

然后,我们将使用新的IGNORED_WORD变量在定制版本的规则1002中,我们将称之为规则100031。

1<rule id="100031" level="0">
2     <if_sid>1002</if_sid>
3     <match>$IGNORED_WORD</match>
4     <description>Ignored IPTables deny messages.</description>
5</rule>
6
7</group>
8
9<!-- EOF -->

保存并关闭文件. 使用变量和自定义规则,重新启动 OSSEC。

1/var/ossec/bin/ossec-control restart

因此,OSCE应该停止发送IPTables拒绝消息的警告。

结论

这就是在 Debian 8 服务器上安装和配置本地 OSSEC 所需的一切。

Published At
Categories with 技术
Tagged with
comments powered by Disqus