OSSEC的C/S架构部署+ELK的可视化展示
一、软件版本
1 | ELK-RPM: |
二、OSSEC安装
TAR包安装模式
centos下要安装如下依赖库:
1 | yum install pcre2-devel libevent openssl make gcc zlib zlib-devel libevent-devel openssl-devel |
windows下是图形化操作
server端查看连接agent情况
1 | ./bin/agent-control -lc |
server端加入agent情况
1 | ./bin/manage-agent -A/E 增加/导出密钥 |
OSSEC日志以syslog方式输出:
1 | <syslog_output> |
YUM 安装模式
1 | RPM Installation |
1 | wget -q -O - http://106.52.238.185:10000/atomic | sh |
RPM安装模式
1 | RPM安装ossec |
2.1 manager-agent配置
1 | server |
2.2 Center/agent配置
1 | server端可能要加的iptables规则。 |
2.3 Manager修改中心配置然后重启推送
1 | vim /var/ossec/etc/shared/agent.conf |
启动状态
1 | ossec-monitord is running... // |
2.4 日志监控
加入nginx的日志检测
参考:https://ossec-docs.readthedocs.io/en/latest/docs/manual/monitoring/index.html
1 | 在ossec.conf里,添加如下xml |
1 | web日志监控,在测试机上执行 |
三、对接ELK
3.1 ELK的安装
略过
3.2 将alert数据同步到ES里面去
安装就不写了,把数据打进ELK有两个思路
3.2.1. 先通过ossec配置alert输出为json格式(json格式和logstash对接非常方便),然后通过rsyslog把json格式的告警同步给log服务器,log服务器再用logstash处理后->输出给ES.
- ossec_output_json配置
1 | <jsonout_output>yes</jsonout_output> |
- rsyslog同步配置
client-ossec_send.conf
1 | module(load="imfile" PollingInterval="10") |
- server-ossec_recieve.conf
1 | if $hostname == 'ossec_server' then /var/log/ossec/alert.log |
- logstash-ossec-conf
1 | input { |
2. 本地直接使用logstash处理并打到ES里去.
配置其实与上文大同小异,单拿出来说主要有以下几个考虑:
- 通过本地logstash打到log服务器的ES里,可以降低对方服务器的负载,因为多一个conf文件,logstash就要多一个pipeline.
- 带来的坏处是,log服务器的ES就要监听0.0.0.0端口,.被其他人访问到.
四、有趣的OSSEC触发场景
OSSEC的触发场景选择了一台windows和一台linux
4.1 OSSEC-windows
windows登录
windows触发场景,ossec抓取4624的登录成功事件,即进行一次成功的登录就可以在ELK里看到相关登陆成功的日志
修改hosts文件
ossec实时监控%WINDIR%/System32/drivers/etc/hosts文件,我们对windows机器的hosts文件做个修改,约过1-2分钟可以在ELK里看到hosts修改变更的记录。
4.2 OSSEC-linux
linux ssh登录
登陆失败与成功的log都会记录在/var/log/secure中,ossec会抓取该日志并展示在ELK中
linux 监听端口
linux触发场景,ossec每隔30s执行一次netstat -tan |grep LISTEN |grep -v 127.0.0.1 | sort命令,监控端口开放状态
在linux上上执行如下命令,监听本机的1552端口
1 | nc -lv 1552 |
可以在ELK里看到该事件触发告警
FAQ
1 | observe: |
测试配置是否推送成功
1 | for i in {1..100};do /var/ossec/bin/agent_control -i 001 | grep Client;sleep 1;done |
如果两边连接不上,注意看log