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