介绍
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。
因此,对于本教程,您将需要:
运行FreeBSD 10.1的新Droplet。
启用防火墙,启用NTP并配置时区。 您可以通过以下的指示做了新的FreeBSD 10.1服务器推荐的步骤 。 忽略设置额外交换空间的部分。
注意: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.conf
是rootcheck部分。 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.xml
在nano
。
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/ 。