如何安装和FreeBSD的10.1配置OSSEC

介绍

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

它是您可以安装在服务器上的最重要的安全应用程序之一,它可以用于监视一台机器或成千上万的客户端/服务器或代理/服务器方式。 如果正确配置,OSSEC可以通过电子邮件警报到任何数量的配置的电子邮件地址,您可以查看您的服务器上发生了什么。

本教程将向您展示如何安装和配置OSSEC来监控运行FreeBSD 10.1的DigitalOcean Droplet。 除了OSSEC的用户访问和完整性检查的默认规则集,我们将配置其他规则,以便如果文件被修改或添加到系统,OSSEC将通过电子邮件通知您。

以下是OSSEC发送的警报类型的示例:

OSSEC HIDS Notification.
2015 Jan 25 11:42:49

Received From: liniverse->syscheck
Rule: 551 fired (level 7) -> "Integrity checksum changed again (2nd time)."
Portion of the log(s):

Integrity checksum changed for: '/usr/local/etc/ssmtp/ssmtp.conf'
Size changed from '1367' to '1384'
What changed:
36c36,37
< UseTLS=YES
---

  #UseTLS=YES
  UseSTARTTLS=YES

Old md5sum was: '39f219a7db9987c3623d5a2f7511dfc1'
New md5sum is : '9971ecc1b0c744ee3f744255248e7c11'
Old sha1sum was: 'fc945ffc84b243cd36f8dd276f99c57f912f902b'
New sha1sum is : '1289fe0008a3d8bf74db8f73c09bf18db09572cc'

 --END OF NOTIFICATION

注:OSSEC是目前能够在仅在Linux和Windows的实时报警的。 FreeBSD上的实时警报仍在进行中,因此,对文件删除的警报在FreeBSD上不起作用。

先决条件

OSSEC需要在系统上活动的防火墙用于其主动响应功能。 同样重要的是,服务器保持准确的时间,要求启用NTP。 最后,服务器的时区需要设置 - 默认情况下是UTC。

因此,对于本教程,您将需要:

注意:UDP防火墙权限是没有必要的OSSEC的功能,但是这取决于你的服务器上运行的服务,您可能需要允许UDP流量他们。

完成启用NTP后,您可以键入以下内容来确认其是否正在运行:

 sudo service ntpd onestatus

输出将类似于下面但是具有不同的进程ID(pid)。

 ntpd is running as pid 581.

您也可以确认时区由输入正确设定date 您选择的时区将在输出中。

可选的

接下来的两个更改都不是必需的,但是他们通常建议使FreeBSD对那些新的用户更友好。

  • 安装并启用Bash。

tsch是FreeBSD的10.1默认的shell。 如果你喜欢使用bash中,您可以通过以下更改在默认的shell的说明进行安装如何开始使用FreeBSD的10.1开始 这将永久设置您的默认shell为Bash,包括所有将来的登录会话。

  • 安装nano

FreeBSD中默认的终端编辑器是Vi ,虽然功能强大,它可以直观的新用户。 nano是无模式,消除了一些用于对比新用户的复杂性Vi

您可以使用您选择的编辑器,但nano将在本教程中使用。 它可以通过进入终端安装:

 sudo pkg install nano

第1步 - 更新系统

登录并将可用的安全和软件包更新应用于系统。 如果您尚未登录,请输入以下命令:

ssh freebsd@111.111.111.111

将上述命令中的IP地址替换为服务器的真实IP地址。 FreeBSD的默认用户是FreeBSD和它有sudo特权。 登录后,输入以下命令查询并安装可用的安全更新:

sudo freebsd-update fetch install

完成后,安装可用的软件包更新。

sudo pkg upgrade

如果有这些命令的任何内核更新,请重新启动服务器,然后重新登录。

第2步 - 安装并启用OSSEC

在FreeBSD上,还有,你可以使用安装OSSEC三种方法:通过下载从项目的最新二进制的网站 ,从港口树,或从FreeBSD的存储库安装预制的二进制文件。 最后一个方法是最简单的,它是我们将用于本教程的方法。 它也使得更新OSSEC变得无痛。

要查看FreeBSD 10.1中提供哪些OSSEC二进制包,请键入:

sudo pkg search ossec

输出应该读取类似:

ossec-hids-client-2.8.1_1
ossec-hids-local-2.8.1_1
ossec-hids-server-2.8.1_1

因为目的是利用OSSEC仅监视它正在上(本地安装),安装在服务器上,二进制软件包安装是ossec-hids-local-2.8.1_1或任何本地包的版本。 客户端二进制文件将允许您安装一个OSSEC代理,如果服务器二进制文件安装在不同的Droplet上,它会报告给OSSEC服务器。

要安装本地二进制文件,请键入:

sudo pkg install ossec-hids-local-2.8.1_1

每安装输出,OSSEC将chroot进入/usr/local/ossec-hids ,所以它的配置文件和目录将在该目录下找到。

现在您已经安装了OSSEC,它必须启用,以便它可以在启动时启动。 启用它。 打开/etc/rc.conf试。

sudo nano /etc/rc.conf

附加以下行:

# For OSSEC HIDS

ossechids_enable="YES"

最后,保存并关闭文件。

第3步 - 为OSSEC通知设置电子邮件凭据

由于我们从存储库安装了OSSEC,其配置文件中的电子邮件设置是虚设置。 必须提供真实的电子邮件凭证才能接收通知。 为了纠正这一点,你需要修改ossec.conf位于文件/usr/local/ossec-hids/etc

ossec.conf是OSSEC一个非常重要的配置文件,以便您开始编辑之前,制作备份副本。

sudo cp /usr/local/ossec-hids/etc/ossec.conf /usr/local/ossec-hids/etc/ossec.conf.00

现在打开原始文件。

sudo nano /usr/local/ossec-hids/etc/ossec.conf

需要修改的第一部分在文件的最顶部,如下所示。 这些设置告诉OSSEC在哪里发送警报和应该使用什么SMTP服务器。

<global>
    <email_notification>yes</email_notification>
    <email_to>daniel.cid@xxx.com</email_to>
    <smtp_server>smtp.xxx.com.</smtp_server>
    <email_from>ossecm@ossec.xxx.com.</email_from>
</global>

发送邮件

FreeBSD的10.1附带的Sendmail在默认情况下,如果你想使用它的OSSEC的电子邮件通知,然后smtp_server应设置为localhost,如下图所示。

<global>
    <email_notification>yes</email_notification>
    <email_to>sammy@example.com</email_to>
    <smtp_server>localhost</smtp_server>
    <email_from>sammy@example.com</email_from>
</global>

注意:Sendmail的可处理入站和出站邮件。 如果你不需要的Sendmail的入站服务,追加下面的线条/etc/rc.conf

# For Sendmail

sendmail_enable="NO"

第三方SMTP服务器

但是,如果您希望指定第三方SMTP服务器,而不是使用sendmail的本地实例的电子邮件通知区域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>

指定所有必要的电子邮件设置后,保存并关闭文件。 要验证OSSEC现在可以发送警报,请输入以下命令启动它:

sudo /usr/local/ossec-hids/bin/ossec-control start

如果一切顺利,您应该在配置的此类地址收到电子邮件:

OSSEC HIDS Notification.
2015 Jan 23 23:08:32

Received From: liniverse->ossec-monitord
Rule: 502 fired (level 3) -> "Ossec server started."
Portion of the log(s):

ossec: Ossec started.


 --END OF NOTIFICATION

如果您没有收到电子邮件,请检查您的垃圾邮件文件夹。

第4步 - 配置syscheck

从这里,我们将继续努力ossec.conf 配置编辑将按照它们在文件中显示的顺序显示。

sudo nano /usr/local/ossec-hids/etc/ossec.conf

调整syscheck间隔

syscheck是OSSEC的完整性检查过程中,我们可以告诉SYSCHECK多久扫描并校验文件系统对于未经授权的更改证据。

向下滚动到SysCheck的部分。 前两行应为:

<syscheck>
    <!-- Frequency that syscheck is executed -- default every 20 hours -->
    <frequency>17200</frequency>

该设置告诉OSSEC每17200秒执行一次系统检查。 这是生产系统的良好频率间隔。 然而,由于实时通知在OSSEC的FreeBSD上二进制安装支持,建议您价值减记至像900秒。 然后,您可以在测试OSSEC时在更短的时间内接收通知。 测试后,您可以将其更改回默认值。

指定要监视的目录

OSSEC的默认安装是Linux-leaning,因此默认的监视文件和目录反映了通常在Linux系统上找到的文件和目录。 因此,它们必须修改以适合FreeBSD安装。 这些目录仅列在您修改的上一个设置的下面,默认值为:

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

如前所述,这些设置对于Linux服务器是有好处的,但是他们需要修改FreeBSD服务器。 这里是一个建议的设置为FreeBSD 10.1服务器。

<!-- Directories to check  (perform all possible verifications) -->
    <directories report_changes="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
    <directories report_changes="yes" check_all="yes">/bin,/sbin</directories>
    <directories report_changes="yes" check_all="yes">/usr/local/etc,/usr/local/bin,/usr/local/sbin</directories>
    <directories report_changes="yes" check_all="yes">/home/freebsd,/usr/local/www</directories>

添加了两个额外的红色线。 先除特定于FreeBSD的服务器和第二个通知OSSEC我们希望FreeBSD的主目录监控。 如果你在一个不同的用户名,改变下运行/home/ freebsd相匹配。

注: /usr/local/www目录是Web服务器的数据存储在FreeBSD下。 如果您打算托管网站,网站的数据将全部在该目录中。 这使它成为一个重要的目录,保持注意。

指定要忽略的文件或目录

的下一节ossec.conf是OSSEC应该忽略,因为他们往往经常改变并会造成过多的误报的文件的列表。 默认文件列表如下所示。

<!-- Files/directories to ignore -->
    <ignore>/etc/mtab</ignore>
    <ignore>/etc/hosts.deny</ignore>
    <ignore>/etc/mail/statistics</ignore>
    <ignore>/etc/random-seed</ignore>
    <ignore>/etc/adjtime</ignore>
    <ignore>/etc/httpd/logs</ignore>

再次默认列表是特定于一个Linux系统。 比如,FreeBSD 10.1不使用mtab文件或hosts.deny默认文件。

那么哪些文件应该配置OSSEC在FreeBSD 10.1服务器上忽略? 在大多数情况下,这是你必须找出的,因为它取决于你在服务器上安装的东西。

例如, hosts.deny文件已被合并到hosts.allow文件。 所以它可能是你想忽略的东西。 然而,密切关注上hosts.allow文件可以使您了解是谁在的服务器投掷石块,因为那是所有的IP地址的连接请求被拒绝被保留。

如果安装的Bash的.bash_profile是一个不错的人选忽略,但提醒在该文件给你一个洞察命令正在您的服务器上执行。 如果安装ssmtp中,仅发送电子邮件服务器,它的dead.letter文件是另一个可以忽略不计。 另外,在安装之后lsof ,其.lsof_HOSTNAME文件可以忽略。

一般的观点是:在安装应用程序后,检查它是否在你创建了一个隐藏目录/home 该隐藏文件可能是一个很好的候选人忽略。 如有疑问,您还可以将文件/目录忽略部分保持不变。 只需注意OSSEC发送的警报。 他们的内容将给你一个想法哪些文件,你应该配置OSSEC忽略。

为了进一步帮助您完成此节,这里就是它看起来像本教程中使用的默认用户的FreeBSD在测试服务器上。

<!-- Files/directories to ignore -->
    <ignore>/home/freebsd/dead.letter</ignore>
    <ignore>/home/freebsd/.bash_profile</ignore>
    <ignore>/home/freebsd/.lsof_liniverse</ignore>
    <ignore>/etc/dumpdates</ignore>
    <ignore>/usr/local/ossec-hids/logs</ignore>
    <ignore>/usr/local/ossec-hids/queue</ignore>
    <ignore>/usr/local/ossec-hids/var</ignore>
    <ignore>/usr/local/ossec-hids/tmp</ignore>
    <ignore>/usr/local/ossec-hids/stats</ignore>

可以看到,该列表忽略了OSSEC安装树下的几个目录。 不忽略这些目录可能会导致系统在很短的时间内耗尽磁盘空间。

第5步 - 配置Rootcheck

在下一站ossec.confrootcheck部分。 Rootcheck是OSSEC的一个组件,它扫描系统的rootkit。 默认情况下,它显示:

<rootcheck>
    <rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files>
    <rootkit_trojans>/var/ossec/etc/shared/rootkit_trojans.txt</rootkit_trojans>
</rootcheck>

OSSEC在FreeBSD 10.1未安装/var/ossec ,但/usr/local/ossec-hids所以修改这些行以反映这一点。 之后,该部分应为:

<rootcheck>
    <rootkit_files>/usr/local/ossec-hids/etc/shared/rootkit_files.txt</rootkit_files>
    <rootkit_trojans>/usr/local/ossec-hids/etc/shared/rootkit_trojans.txt</rootkit_trojans>
</rootcheck>

这就是你需要改变ossec.conf -现在。 保存并关闭它; 我们会以后再来。 要确保一切设置正确,请尝试重新启动OSSEC。

sudo /usr/local/ossec-hids/bin/ossec-control restart

重新启动应该成功。 如果它返回配置错误,请仔细检查第4步和5的条目。

第6步 - 指定要监视的日志文件

默认安装的OSSEC被配置为监视位置是特定于Linux系统的日志文件。 在FreeBSD 10.1,其中的一些文件有一个稍微不同的名字,虽然他们仍然位于同一/var/log目录。

如果您在OSSEC的日志文件(看/var/log/ossec-hids/logs/ossec.log ),你会看到如下条目:

ossec-logcollector(1950): INFO: Analyzing file: '/var/log/messages'
ossec-logcollector(1103): ERROR: Unable to open file '/var/log/authlog'
ossec-logcollector(1103): ERROR: Unable to open file '/var/log/secure'
ossec-logcollector(1950): INFO: Analyzing file: '/var/log/xferlog'

包含错误的条目:无法打开文件表明OSSEC找不到,因为它不存在,或者可能的权限是错误的文件。 在得出结论之前,验证系统上的情况。

下面是如何确定OSSEC应该在FreeBSD 10.1上监视的日志文件的位置。 我们将使用lsof列出该系统运行期间使用打开的文件。 lsof不是默认安装的,所以先安装:

sudo pkg install lsof

然后运行日志文件检查,使用以下命令:

lsof | grep log | grep -v ".so" | egrep -v "ossec|proc|dev|run"

所有的命令是钓鱼所有打开的文件,保留我们感兴趣的日志文件和放弃其余的。 我们当然不希望监控OSSEC的安装目录中的文件,或在/proc/dev/var/run 您应该得到一个包含日志文件列表的输出。 以下代码块显示了用于本教程的测试系统的输出的一部分:

syslogd  ...  root  ...  /var/log/messages
syslogd  ...  root  ...  /var/log/security
syslogd  ...  root  ...  /var/log/auth.log
syslogd  ...  root  ...  /var/log/maillog
syslogd  ...  root  ...  /var/log/lpd-errs

如果你比较与那些在OSSEC的日志文件的输出,可输出的名字,很容易看到/var/log/auth.log是一样/var/log/authlog/var/log/security是FreeBSD的相当于/var/log/secure

现在打开ossec.conf再次修改日志文件的名称以匹配FreeBSD的10.1使用的名称。

sudo nano /usr/local/ossec-hids/etc/ossec.conf

下面的代码块显示了修改的行应该是什么的示例。 您将要为已安装并在服务器上运行的特定服务添加日志位置; 像Nginx,Apache等服务。

<!-- Files to monitor (localfiles) -->

<localfile>

  <log_format>syslog</log_format>
    <location>/var/log/auth.log</location>
  </localfile>

  <localfile>
    <log_format>syslog</log_format>
    <location>/var/log/security</location>
  </localfile>

使用util.sh添加日志文件条目

如果你已经安装了OSSEC很久之后你有,你要监视一个自定义目录的日志文件,你可以使用OSSEC的util.sh命令来添加或打开ossec.conf纳米和手动添加。

例如,如果你安装的Nginx和它的访问和错误日志文件中/var/log/nginx目录,可以将它们添加到ossec.conf使用util.sh像这样:

/usr/local/ossec-hids/bin/util.sh addfile /var/log/nginx/access.log
/usr/local/ossec-hids/bin/util.sh addfile /var/log/nginx/error.log

注意:如果您运行这两个命令,因为它们可以呈现,您没有安装Nginx的,你会得到一个错误说的日志文件不存在。

在这一点上,我们还有最后一个变化使ossec.conf ,因此,保持文件打开,你对下一步移动。

第7步 - 新文件警报

默认情况下,当系统中创建新文件时,OSSEC不发出警报,因此我们将更改该行为。 此更改有两个组件。

设置syscheck

滚动备份到syscheck的区OS ossec.conf和刚下的频率检查间隔添加提醒文件一致。

结果应为:

<syscheck>
    <!-- Frequency that syscheck is executed -- default every 20 hours -->
    <frequency>17200</frequency>

    <alert_new_files>yes</alert_new_files>

现在,您可以保存并关闭ossec.conf 我们完成了它。

修改规则的分类级别

虽然我们已经告诉syscheck观看新创建的文件,OSSEC实际上不会通知我们他们没有。 为此,我们需要修改默认的OSSEC规则。

打开ossec_rules.xmlnano

sudo nano /usr/local/ossec-hids/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不发送警报,所以你要复制的规则local_rules.xml并修改它,这样它会触发警报。 您可以使用鼠标或触控板突出的规则nano ,复制并暂时将其粘贴到你的主机上的文本编辑器。

现在打开local_rules.xml这是所有用户修改的OSSEC规则应该去; 应该更改ossec_rules.xml

sudo nano /usr/local/ossec-hids/rules/local_rules.xml

使用CONTROL+SHIFT+V从您的主机的文本编辑器,进入粘贴规则nano 请务必粘贴标签中。 我们将更改通知水平, 7 ,告诉OSSEC该规则从覆盖规则554 ossec_rules.xml

完成后,你的最后local_rules.xml文件应如下。 第一行是从原始规则改变的所有。

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

sudo /usr/local/ossec-hids/bin/ossec-control restart

结论

在重新启动OSSEC后不久,您应该收到一条警报,指示OSSEC已经启动,就像您在配置SMTP服务器时在第3步中一样。 熟悉不同的规则层次以及它们所暗示的严重性是一个好主意。 您可以在阅读他们的OSSEC文档

在OSSEC执行下一次系统检查后,您还应该收到来自新系统的标准警报。 以下是您在服务器上配置后不久可能会看到的一些通知(或看到的其他变体)。

用户首次FreeBSD有运行sudo命令。

OSSEC HIDS Notification.
2015 Jan 24 07:10:56

Received From: liniverse->/var/log/auth.log
Rule: 5403 fired (level 4) -> "First time user executed sudo."
Portion of the log(s):

Jan 24 02:10:56 liniverse sudo:  freebsd : TTY=pts/1 ; PWD=/usr/home/freebsd ; USER=root ; COMMAND=/usr/sbin/pkg install namp

 --END OF NOTIFICATION

OSSEC已阻止hosts.allow中的IP地址93.50.186.75。

OSSEC HIDS Notification.
2015 Jan 25 02:06:47

Received From: Freebsd->syscheck
Rule: 552 fired (level 7) -> "Integrity checksum changed again (3rd time)."
Portion of the log(s):

Integrity checksum changed for: '/etc/hosts.allow'
Size changed from '3408' to '3434'
What changed:
93a94

    ALL : 93.50.186.75 : deny

Old md5sum was: 'f8ba903734ee1bd6afae641974a51522'
New md5sum is : '56dfbd3922cf7586b81b6575f6564196'
Old sha1sum was: 'a7a9886aa90f2f6aaa7660490809d6a0717b8d76'
New sha1sum is : '6a0bf14c4614976d2c2e1157f157ae513f3f9cfc'

 --END OF NOTIFICATION

该文件ngx.txt在创建/home/freebsd

OSSEC HIDS Notification.
2015 Jan 24 20:08:38

Received From: liniverse->syscheck
Rule: 554 fired (level 7) -> "File added to the system."
Portion of the log(s):

New file '/home/freebsd/ngx.txt' added to the file system.


 --END OF NOTIFICATION

希望这给了你一个OSSEC提供的味道。 如前所述,FreeBSD还不支持文件删除的实时警报和警报。 但是,在项目的GitHub页面上提出了与这些相关的功能请求。 有关OSSEC的更多信息,请访问该项目的网站在http://www.ossec.net/

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏