介绍
OSSEC是一个开源的基于主机的入侵检测系统(HIDS),可以执行日志分析,完整性检查,Windows注册表监控,rootkit检测,基于时间的警报和主动响应。这是应用程序安装在您的服务器上,如果你想看看里面发生了什么。 OSSEC可以安装监控只是它的安装在服务器上,这是OSSEC的说法 本地安装,或者安装为一个 服务器来监视一个或多个 代理 。 在本教程中,您将学习如何安装OSSEC监视它被安装在Debian 8服务器,也就是 当地的OSSEC安装。先决条件
要遵循本教程,您需要:- 一个Debian 8Droplet用sudo的非root用户和SSH密钥,您可以通过以下设置本教程 。
第1步 - 安装必需的软件包
在这一步中,我们将安装OSSEC所需的软件包。首先,更新包数据库。sudo apt-get update
然后安装可用的更新。
sudo apt-get -y upgrade
最后,安装OSSEC的依赖关系(
build-essential
和
inotify-toops
)和
ntp
,这是一个网络时间协议服务。
sudo apt-get install build-essential inotify-tools ntp
最后,启用NTP服务。这有助于服务器自动保持准确的时间。
sudo systemctl start ntp
第2步 - 启用防火墙
全新安装的Debian 8服务器没有活动的防火墙应用程序。在此步骤中,我们将学习如何启用IPTables防火墙应用程序,并确保运行时规则在重新启动后保留。 实现这个目的的最简单的方法是安装iptables-persistent
使用包:
sudo apt-get install -y iptables-persistent
验证后,系统将提示您将IPv4和IPv6防火墙规则保存为单独的文件。按在两个提示
ENTER键接受默认的位置,这是
/etc/iptables/rules.v4
和
/etc/iptables/rules.v6
。 默认情况下,这些文件中没有规则,因此我们必须创建它们以保持服务器受保护并打开SSH连接。我们只在IPv4的规则感兴趣,所以我们只修改
rules.v4
规则文件。 打开
rules.v4
使用规则文件
nano
或您喜爱的文本编辑器。
sudo nano /etc/iptables/rules.v4
该文件的完整内容如下所示:
原始/etc/iptables/rules.v4
# Generated by iptables-save v1.4.21 on Sat May 9 01:27:00 2015
*filter
:INPUT ACCEPT [5722:416593]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4372:503060]
COMMIT
# Completed on Sat May 9 01:27:00 2015
下面的默认规则集将足以保持保护服务器和SSH连接,所以它复制并之间只贴上
:OUTPUT ACCEPT [4372:503060]和
COMMIT线。 这些规则是取自
Debian官方文件 ;你可以看到每个规则通过内联注释做什么。
# Allow all loopback traffic. Drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT
# Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow all outbound traffic
-A OUTPUT -j ACCEPT
# Uncomment the next two lines to allow HTTP and HTTPS connections
#-A INPUT -p tcp --dport 80 -j ACCEPT
#-A INPUT -p tcp --dport 443 -j ACCEPT
# Allow SSH connections. If you changed your SSH port, do same here.
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Allow ping
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Drop all other inbound - default deny unless explicitly allowed policy
-A INPUT -j DROP
-A FORWARD -j DROP
保存并关闭文件。然后,以应用新的规则集,重新启动
iptables-persistent
。
sudo systemctl restart netfilter-persistent
现在可以使用此命令验证规则是否就位。
sudo iptables -L
您的输出将如下所示:
iptables -L输出
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere loopback/8 reject-with icmp-port-unreachable
. . .
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
第3步 - 下载和验证OSSEC
OSSEC作为压缩压缩包提供。在此步骤中,您将下载它及其校验和文件,用于验证tarball是否已被篡改。您可以检查项目的网站获取最新版本。在撰写本文时,OSSEC 2.8.1是最新的稳定版本。 要下载tarball,请键入:wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1.tar.gz
然后使用下载校验和文件
wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1-checksum.txt
下载这两个文件后,验证压缩tarball的md5sum。
md5sum -c ossec-hids-2.8.1-checksum.txt
输出应为:
md5sum输出
ossec-hids-2.8.1.tar.gz: OK
md5sum: WARNING: 1 line is improperly formatted
通过验证SHA1校验和。
sha1sum -c ossec-hids-2.8.1-checksum.txt
其输出应为:
sha1sum输出
ossec-hids-2.8.1.tar.gz: OK
sha1sum: WARNING: 1 line is improperly formatted
在每一种情况下,忽略了
警戒线 。
确定线就是确认该文件是好的。
第4步 - 安装OSSEC
在这一步,我们将安装OSSEC。首先,首先解开它。tar xf ossec-hids-2.8.1.tar.gz
它将被解压到一个名为
ossec-hids-2.8.1
。切换到该目录。
cd ossec-hids-2.8.1
注意:在版本2.8.1中引入的OSSEC中有一个错误。
该bug将导致它覆盖的内容/etc/hosts.deny
文件。
2.9版本已经有永久修复,应该很快发布。 要解决这个
/etc/hosts.deny
的bug,打开
host-deny.sh
在文件
/var/ossec/active-response
从下载的文件解压后,OSSEC目录。
nano active-response/host-deny.sh
在接近文件的末尾,查找两条线为低于开头的代码
TMP_FILE =
时,下面
# Deleting from hosts.deny
注释。 编辑两条线,以消除对两侧的空间
=
标志,使代码块看起来是这样的。
修改了host-deny.sh代码块
# Deleting from hosts.deny
elif [ "x${ACTION}" = "xdelete" ]; then
lock;
TMP_FILE=`mktemp /var/ossec/ossec-hosts.XXXXXXXXXX`
if [ "X${TMP_FILE}" = "X" ]; then
# Cheap fake tmpfile, but should be harder then no random data
TMP_FILE="/var/ossec/ossec-hosts.`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -1 `"
fi
保存并关闭文件。这就是错误修复的结束。 接下来,开始安装。
sudo ./install.sh
在整个安装过程中,系统将提示您提供一些输入。系统会首先提示您选择安装语言,默认情况下为英语(zh-cn)。按
ENTER键 ,如果这是你的首选语言。 否则,首先从支持的语言列表中键入2个字母。 然后,再次按
Enter键开始安装。 问题1会问
你想要什么样的安装(服务器,代理地方,混合动力或帮助?)。 类型的
本地 ,然后按
Enter。 对于所有的下列问题,按
ENTER键接受默认值,但要注意的问题3.1将提示你输入你的电子邮件地址。输入它,安装程序将使用它来自动找到相应的SMTP服务器。 如果安装成功,安装后输出的最后几行应为:
OSSEC安装输出成功
- Configuration finished properly.
- To start OSSEC HIDS:
/var/ossec/bin/ossec-control start
- To stop OSSEC HIDS:
/var/ossec/bin/ossec-control stop
- The configuration can be viewed or modified at /var/ossec/etc/ossec.conf
. . .
第4步 - 自定义OSSEC的电子邮件设置
这里我们将验证在上一步中指定的电子邮件凭证和OSSEC自动配置的电子邮件凭据是否正确。 电子邮件设置在OSSEC的主配置文件-ossec.conf
,这是在`
/var/ossec/etc
目录中。要访问和修改任何OSSEC文件,您首先需要切换到root用户。
sudo su
现在你是root,切换到OSSEC的配置文件所在的目录。
cd /var/ossec/etc
然后制作配置文件的备份副本。
cp ossec.conf ossec.conf.00
打开使用原始文件
nano
文本编辑器或您首选的文本编辑器。
nano ossec.conf
电子邮件设置位于文件的顶部,如下所示。
/var/ossec/etc/ossec.conf
<global>
<email_notification>yes</email_notification>
<email_to>sammy@example.com</email_to>
<smtp_server>mail.example.com.</smtp_server>
<email_from>sammy@example.com</email_from>
</global>
<EMAIL_TO>是在安装过程中给了电子邮件。 警报将被发送到该电子邮件地址和
<smtp_server>是SMTP服务器的安装脚本自动发现。您不必更改这些值。
<EMAIL_FROM>是OSSEC的警报似乎可能来自的电子邮件地址。 默认情况下,它是基于OSSEC的邮件用户帐户和服务器的主机名创建的。 您应该将其更改为有效的电子邮件地址,以减少电子邮件提供商的SMTP服务器将您的电子邮件标记为垃圾邮件的几率。 需要注意的是
<EMAIL_TO>和
<EMAIL_FROM>可以是相同的,如果接收SMTP服务器没有严格的垃圾邮件政策。 修改电子邮件设置后,保存并关闭文件。然后启动OSSEC。
/var/ossec/bin/ossec-control start
检查您的收件箱中是否有表示OSSEC已启动的电子邮件。如果您收到来自您的OSSEC安装的电子邮件,则您知道未来的警报也将到达您的收件箱。如果没有,请检查您的垃圾邮件文件夹。
第6步 - 添加警报
默认情况下,OSSEC将在服务器上发出文件修改和其他活动的警报,但它不会在新文件添加时发出警报,也不会实时发出警报 - 只有在预定的系统扫描(即79200秒(或22)小时)。在本节中,我们将修改OSSEC,以便它可以对文件添加和实时发出警报。 首先,打开ossec.conf
。
nano ossec.conf
向下滚动到
<SysCheck的>部分。 刚下
<frequency>
标签中,添加
< alert\_new\_files>yes< /alert\_new\_files >
<syscheck>
<!-- Frequency that syscheck is executed - default to every 22 hours -->
<frequency>79200</frequency>
<alert_new_files>yes</alert_new_files>
虽然你仍然有
ossec.conf
打开,看看系统目录的列表OSSEC显示器,它只是在你修改的最后一行。 添加
report_changes="yes" realtime="yes"
这两个目录的标签。
<!-- Directories to check (perform all possible verifications) -->
<directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories>
除了OSSEC已配置为监视的默认目录列表外,您还可以添加任何要监视的目录。例如,您可以添加您的主目录。为此,请在其他目录行下面添加此新行,替换为您的用户名。
<!-- Directories to check (perform all possible verifications) -->
<directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories>
<directories report_changes="yes" realtime="yes" check_all="yes">/home/<^sammy</directories><^>
现在,保存并关闭
ossec.conf
。 接下来的文件来修改是在
/var/ossec/rules
目录,这样切换到该目录。
cd /var/ossec/rules
将
/var/ossec/rules
目录中包含多个XML文件,包括
ossec_rules.xml
,其中包含OSSEC的默认规则定义,
local_rules.xml
,这是在这里你可以添加自定义规则。 在
ossec_rules.xml
,时,将触发文件添加到受监控的目录规则554默认规则,OSSEC不会发出警报,当这条规则被触发,所以这里的任务就是改变这种行为。默认情况下,规则554是什么样子:
从/var/ossec/rules/ossec_rules.xml创建规则554
<rule id="554" level="0">
<category>ossec</category>
<decoded_as>syscheck_new_entry</decoded_as>
<description>File added to the system.</description>
<group>syscheck,</group>
</rule>
如果规则设置为0级OSSEC不会发出警报,因此我们将复制该规则的本地
rules.xml中并修改它来触发警报。
要做到这一点,打开`当地 rules.xml`。
nano local_rules.xml
在文件末尾添加以下内容,在带有</ group>标签的行之前。
<rule id="554" level="7" overwrite="yes">
<category>ossec</category>
<decoded_as>syscheck_new_entry</decoded_as>
<description>File added to the system.</description>
<group>syscheck,</group>
</rule>
</group> <!-- SYSLOG,LOCAL -->
<!-- EOF -->
保存并关闭文件,然后重新启动OSSEC以应用更改。
/var/ossec/bin/ossec-control restart
您现在应该在文件被添加,修改或删除时收到提醒。请注意,OSSEC不会在完全系统扫描后实时提示文件添加。
第6步(可选) - 停止IPTables已拒绝警报
在此步骤中,这是可选的,但强烈建议,我们将配置OSSEC不警告IPTables拒绝消息。 在本教程开头,我们启用了IPTables防火墙。安装OSSEC后,它将对规则1002发出警报,规则1002在IPTables拒绝攻击者并将事件记录到syslog时触发。虽然很好知道攻击者什么时候受到攻击,但是这种警报每天可能发生数百次,并堵塞您的收件箱。 要删除这些警报,我们需要自定义规则1002这条规则被发现/var/ossec/rules/syslog_rules.xml
,看起来就像这样:
/var/ossec/rules/syslog_rules.xml中的规则1002
<rule id="1002" level="2">
<match>$BAD_WORDS</match>
<options>alert_by_email</options>
<description>Unknown problem somewhere in the system.</description>
</rule>
打开
syslog_rules.xml
进行编辑。
nano /var/ossec/rules/syslog_rules.xml
找到
BAD_WORDS
变量,这是在该文件的顶部限定并包含了一些关键字。它看起来像这样:
BAD_WORDS定义在/var/ossec/rules/syslog_rules.xml中
<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var>
下面
BAD_WORDS
定义,复制并粘贴此新的变量,
IGNORED_WORD
。变量只包含一个关键字。
<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var>
<var name="IGNORED_WORD">denied</var>
然后,我们将使用新的
IGNORED_WORD
在规则1002,我们称之为完整的规则如下规则100031.定制版的变量。将其复制并粘贴到文件的底部,然后在带有组标签的行之前。
<rule id="100031" level="0">
<if_sid>1002</if_sid>
<match>$IGNORED_WORD</match>
<description>Ignored IPTables deny messages.</description>
</rule>
</group>
<!-- EOF -->
保存并关闭文件。使用可变和自定义规则,重新启动OSSEC。
/var/ossec/bin/ossec-control restart
这样,OSSEC应停止发送IPTables被拒绝的消息的警报。