如何在Debian 8上设置本地OSSEC安装

介绍

OSSEC是一个开源的,基于主机的入侵检测系统(HIDS),可执行日志分析,完整性检查,Windows注册表监控,rootkit检测,基于时间的警报和主动响应。如果你想留意它内部发生的事情就将应用程序安装在您的服务器上。

可以安装OSSEC以仅监视其安装的服务器,这是OSSEC用语中的本地安装,或者作为服务器安装以监视一个或多个代理。在本教程中,您将学习如何安装OSSEC以监视其安装的Debian 8服务器,即本地 OSSEC安装。

准备

要学习本教程,您需要:

  • 带有sudo非root用户和SSH密钥的Debian 8 腾讯云CVM。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

第1步 - 安装必需的包

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

sudo apt-get update

然后安装可用的更新。

sudo apt-get -y upgrade

最后,安装OSSEC的依赖项(build-essentialinotify-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规则文件。

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

sudo nano /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

您的输出将如下所示:

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提供。在此步骤中,您将下载它及其校验和文件,该文件用于验证tarball是否未被篡改。您可以在项目的网站上查看最新版本。

要下载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

输出应该是:

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

它的输出应该是:

ossec-hids-2.8.1.tar.gz: OK
sha1sum: WARNING: 1 line is improperly formatted

在每种情况下,请忽略WARNING行。OK行就是确认该文件是好的。

第4步 - 安装OSSEC

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

tar xf ossec-hids-2.8.1.tar.gz

它将被解压缩到一个名为ossec-hids-2.8.1的目录中。切换到该目录。

cd ossec-hids-2.8.1

注意:OSSEC中存在版本2.8.1中引入的错误。该错误导致它覆盖/etc/hosts.deny文件的内容。版本2.9中已经有一个永久修复,应该很快就会发布。

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

nano active-response/host-deny.sh

在文件的末尾,在# Deleting from hosts.deny注释下方的代码中查找下面的两行以TMP_FILE =开头的代码。编辑两行以删除=符号两侧的空格,以便代码块看起来像这样。

# 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

在整个安装过程中,系统会提示您提供一些输入。系统将首先提示您选择安装语言,默认情况下为英语(en)。如果这是您的首选语言,请按ENTER键。否则,首先输入支持语言列表中的2个字母。然后,再次按ENTER开始安装。

问题1将询问您想要什么样的安装(服务器,代理,本地,混合或帮助)?键入local,然后按ENTER键

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

如果安装成功,则安装后输出的最后几行应为:

- 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

电子邮件设置位于文件的顶部,如下所示。

<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服务器将您的电子邮件标记为垃圾邮件的几率。请注意,如果接收SMTP服务器没有严格的垃圾邮件策略,则<email_to><email_from>可以相同。

修改电子邮件设置后,保存并关闭该文件。然后启动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>79200</frequency>
    <alert_new_files>yes</alert_new_files>

当您仍然打开ossec.conf时,请查看OSSEC监视的系统目录列表,该列表位于您修改的最后一行之下。添加report_changes="yes" realtime="yes"到两个目录标记。

<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 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的样子:

<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并对其进行修改以触发警报。为此,打开`local 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> 

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

/var/ossec/bin/ossec-control restart

您现在应该在文件添加,修改或删除时收到警报。请注意,OSSEC仅在完整系统扫描后才会实时警告文件添加。

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

在此步骤中,这是可选的但强烈建议,我们将配置OSSEC以不对IPTables拒绝消息发出警报。

在本教程的开头,我们启用了IPTables防火墙。安装OSSEC后,它将在规则1002上发出警报,当IPTables拒绝攻击者并将事件记录到syslog时触发该规则。虽然知道攻击者什么时候被挫败是很好的,但是这样的警报每天都会有数百个,并且会堵塞你的收件箱。

要删除这些警报,我们需要自定义规则1002。这个规则可以在/var/ossec/rules/syslog_rules.xml中找到,如下所示:

<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变量,该变量在该文件的顶部定义并包含许多关键字。它看起来像这样:

<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>

然后,我们将在规则1002的自定义版本中使用新变量IGNORED_WORD,我们将其称为规则100031.完整规则如下所示。在带有组标记的行之前,将其复制并粘贴到文件的底部。

<rule id="100031" level="0">
     <if_sid>1002</if_sid>
     <match>$IGNORED_WORD</match>
     <description>Ignored IPTables deny messages.</description>
</rule>

</group>

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

/var/ossec/bin/ossec-control restart

有了这个,OSSEC应该停止发送IPTables拒绝消息的警报。

结论

这就是在Debian 8服务器上安装和配置本地OSSEC所需的全部内容。有很多可用的定制,您可以在项目官方文档中探索。

想要了解更多关于设置本地OSSEC安装的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Set Up a Local OSSEC Installation on Debian 8》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微服务生态

论代码级性能优化变迁之路(一)

大家好,很久没有和大家一起讨论技术了,那么今天我将和大家一起探讨我负责的某项目的性能变迁之路。

822
来自专栏帘卷西风的专栏

关于cocos2dx程序的BUG调试解决方案

      今天说一下手机游戏开发的调试问题吧。不得不说的是和PC平台游戏、软件开发相比,手机上开发游戏和软件要困难的多。原因是多方面的,比如说开发环境比较复杂...

942
来自专栏个人技术分享

android手机免root修改hosts

开发及测试过程中经常需要切换开发、测试、预发布等环境,切换环境是通过修改hosts实现的。

3.5K3
来自专栏云计算教程系列

使用PSAD检测CVM入侵

网络入侵检测的应用程序可以监控可疑流量并测试安全漏洞的网络接口。在本文中,我们将配置一个名为psad工具来监控我们的防火墙日志,并确定是否有问题。

2855
来自专栏XAI

iptables详解

一:前言 防 火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络...

4499
来自专栏安智客

FIDO U2F认证器简明原理

U2F ( Universal 2nd Factor ) 是 Yubico, Yahoo 和 Google 联合开发的基于物理设备的双因素认证协议。这个物理设备...

2432
来自专栏玄魂工作室

实战-Fluxion与wifi热点伪造、钓鱼、中间人攻击、wifi破解

Fluxion是一个无线破解工具,这款软件可以帮你挤掉WiFi主人的网络让你自己登陆进去,而且WiFi主人怎么挤也挤不过你。这个工具有点像是Lin...

7136
来自专栏同步博客

会话劫持

  在现实生活中,比如你去市场买菜,在交完钱后你要求先去干一些别的事情,稍候再来拿菜;如果这个时候某个陌生人要求把菜拿走,卖菜的人会把菜给陌生人吗?!当然,这只...

1173
来自专栏程序员的碎碎念

如何解决Python包依赖问题

以简洁高效(指编程较为高效, 而不是运行速度)出名的Python, 在包依赖问题上有时候让人挠头.

1832
来自专栏惨绿少年

企业防火墙之iptables

1.1 企业中安全优化配置原则 尽可能不给服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务. 大并发的...

8766

扫码关注云+社区

领取腾讯云代金券