OSSEC服务端配置客户端批量部署方案

hello 2015-10-16 15:03:00

0x00 前言


最近也在研究ossec报警规则,还没研究的很透彻,暂时不是这篇文章的内容。ossec中文资料还是比较少,外文文献比较多。之前看到drops的两篇文章分享http://drops.wooyun.org/tips/2821http://drops.wooyun.org/tips/636,看到评论都说批量部署是个坑,比较麻烦。现在说下我的方案,如何批量安装部署客户端。对大家有帮助,可以解决大家在批量部署过程遇到的问题。

0x01 服务端配置


服务端IP:192.168.145.128

服务端安装可参考http://drops.wooyun.org/tips/636,不在这篇文章讨论范围。因为ossec服务端与客户端是基于key认证传输信息的,所以服务端需为客户端生成相应的key。对于大企业来说每台主机都有一个主机名,假如我们把这样的服务器信息保存到ip.txt文本里面。

ip.txt内容格式如下:

...
host_name:ip
host_name:ip
host_name:ip
host_name:ip
...

这样的信息对,在大企业里面可通过api直接获取得到。

接着利用脚本,批量为每条记录生成key。key_gen.py:

import os    

if __name__ == '__main__':
    save_keys_path = "keys.logs"
    f = open("ip.txt")
    lines = f.read().splitlines()
f.close()
#perl文件在安装包里面
    shell_path ="/usr/src/ossec-hids-2.7.1/contrib/ossec-batch-manager.pl"
    for line in lines:
        arr = line.split(":")
        host_name = arr[0]
        ip = arr[1]
        #服务端根据name和ip添加客户端
        cmd = "%s -a --ip %s --name %s" % (shell_path,ip,host_name)
        os.system(cmd)
        cmd = "%s -e %s >> %s" % (shell_path,ip,save_keys_path)
        os.system(cmd)

执行完后查看服务端安装目录下的client.keys文件,默认为/var/ossec/etc/client.keys先把这个文件拷贝到web服务器或者ftp服务器方便客户端下载

0x02 客户端agent批量部署


agent群体比较大,批量部署需要面临两个问题:

1) 安装程序安装基于对话模式,怎么处理使它顺序安装,没有对话模式。

2) 客户端agent对应key导入问题。

3) 客户端配置ossec.conf统一配置。

对于问题1)修改安装包预配置文件/ossec-hids-2.7.1/etc/preloaded-vars.conf,设置变量的值,方可以使其顺序安装。

去掉一些注释,使其赋值,就不用通过对话模式进行赋值了。

把修改后的文件preloaded-vars.conf拷贝到之前的ftp服务器或者web服务器下方便客户端下载

对于问题2) 只需要刚才的ftp服务器或者web服务器下载client.keys,然后根据自己本地的ip获取对应的key记录,这个不难。

对于问题3) 在一台客服端生成一份统一的ossec.conf,上传到之前web服务器或者ftp服务器,方便其他客户端下载。

至此,客户端部署脚本应该满足上面点,具体脚本如下:

ossec-agent-batch-install.sh文件内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash    

cd /usr/local
wget -U "Mozillai/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.101 Safari/537.11"  http://www.ossec.net/files/ossec-hids-2.7.1.tar.gz    

tar -zxvf ossec-hids-2.7.1.tar.gz     

cd ossec-hids-2.7.1    

cd etc    

mv preloaded-vars.conf preloaded-vars.conf.bak    

#从服务端下载预配置文件,用于顺序安装,不基于对话模式
wget http://192.168.145.128/preloaded-vars.conf
#开始安装
../install.sh    

cd /var/ossec/etc    

#下载key文件,下面主要导入key
wget http://192.168.145.128/client.keys    

ip1=`/sbin/ifconfig eth0|sed -n '2p' |awk -F: '{print $2}'|awk '{print$1}'`
#ip2=`/sbin/ifconfig eth1|sed -n '2p' |awk -F: '{print $2}'|awk '{print$1}'`
#主要针对服务器网卡是eth0还是eth1不同操作
sed -i '/'$ip1'/!'d /var/ossec/etc/client.keys    


rm -rf ossec.conf
#下载客户端统一配置文件
wget http://192.168.145.128/ossec.conf    

#启动客户端程序
../bin/ossec-control start

0x03 总结


最后,可以通过ossec-wui查看客户端的部署情况或者在安装目录下/var/ossec/bin/agent-control查看客户端的状态。

评论

路人甲 2015-10-18 15:09:23

哈,我折腾的时候是用Python+expect来搞定生成Keys的,后面发现只要key对了就行了

U

ubuntu 2015-11-12 17:31:27

ossec 已部署近200台,架构由原来的ossec+MySQL+webui 升级为ossec+elk+redis 的方案。如果公司有用splunk,ossec 也可以和splunk 结合起来。
ossec 自动化、批量部署,前提是IP地址划分必须规划好,最好是连续的。
1是agent,2是server端。
先说agent批量部署,agent 批量部署有很多种方式,比如shell 脚本,ansible,puppet等。目前已把agent 部署脚本集成到系统初始化中。agent 交互的地方是用的expect 。
2、server端 ,主要是注册agent 和 生产key的问题,也要用Python 或 shell 写脚本,前提是基础网络已规划好,比如IP地址段的划分,哪个段跑web ,哪个段跑db等,否则就很难自动化、批量化。技术交流:1920532880

H

hello

小菜一个

twitter weibo github wechat

随机分类

PHP安全 文章:45 篇
神器分享 文章:71 篇
后门 文章:39 篇
软件安全 文章:17 篇
数据分析与机器学习 文章:12 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录