在 In The Chat 这家公司,由于没有专业的运维,以前兼职运维的同事又走了,我又要兼职运维了(老板你应该给我两份薪水才对啊)。前几个星期,CTO 叫我用 OSSEC 把服务器报警做一下,翻一下之前的文档,发现以前只有一个重启的报警,这个重启报警是咋做的呢,挂一个发邮件的脚本到 /etc/rc3.d/。这也略山寨了。

这个 OSSEC,看文档看上去不错,但是没搞过还是不敢用,赶紧问问专业人士肥龙哥,肥龙哥说,他们也用这个。好吧信肥龙哥就对了。

安装

先装一台中心服务器,OSSEC 的安装还是很简单的,下载解压,然后 sudo ./install.sh,第一个类型选 server,然后配置 SMTP,这里 OSSEC 不支持需要登录的 SMTP,所以最好装一个 sendmail 然后 SMTP 指向本地的 sendmail,后面跟着一路默认就是了。安装完成以后要去 ossec-path/bin/manage_agents - Add an agent - Extract key for an agent 有多少台机子要监控的就做多少次。然后去到 ossec-path/etc/ossec.conf 将要监控的网段加进去:

<remote>
  <connection>syslog</connection>
+ <allowed-ips>192.168.0.0/16</allowed-ips>
</remote>

这时候你就可以启动 OSSEC 了。

然后到每一台要监控的装一次,这次类型选择 agent。完成以后到 ossec-path/bin/manage_agents - Import key from the server。然后启动就可以了。

添加策略

具体自定义策略的教程在这里

重启报警

其实机子重启的时候,OSSEC 已经有一个 level-3 的 Ossec agent started 的报警。但是这个报警显然是不够明确的,所以我们需要加一条规则来做重启报警,

现在我们先在所有的 ossec.conf 差不多最后添加:

<localfile>
  <log_format>full_command</log_format>
  <command>who -b</command>
</localfile>

然后在 server 的 ossec-path/rules/ossec_rules.xml 添加:

<rule id="110002" level="10">
  <if_sid>530</if_sid>
  <match>who -b</match>
  <check_diff />
  <description>Reboot Alert. </description>
</rule>

然后重启所有 OSSEC 服务就可以了。

使用注意

今天,我们的一台测试服务器突然 ssh 登录不了,错误有提示 connection reset 也有提示 connection closed,收到 email 日志提示是这个 POSSIBLE BREAK-IN ATTEMPT!,确实由于我们的 hostname 是不对应的,所以需要手动关掉 OSSEC 的一条规则防止以外发生。规则在 rules/sshd_rules.xml id 为 5703。