0x00 前言:
对于大数据我相信大多数人都不陌生,特别现在是在大数据时代,当下流行的技术很多人都可以朗朗上口比如hadoop、hbase、spark、storm,那么在数据收集中,是否有好的解决办法来帮助企业进行安全管理及策略分析呢,笔者搜索了很多资料,通过自己的实践分享一篇我对大数据日志分析及处理的见解,本篇技术是基于logstash elasticsearch、redis结合ossec来做的开源方案。 在《无处可藏》中斯诺登提到NSA对网络及数据收集的原则是收集一切,在企业安全上也需要做到如此,众所周知安全的风险来自于边界,黑客也会挑一些比较边缘的业务进行入侵,但这些东西我们都没记录但对于后续的应急响应和入侵检测来说就无从谈起,所以在企业内做大数据的原则也是“收集一切”。 开篇提到的这些主要是为了下文做铺垫,本文基于系统安全日志来做收集及处理,希望能给大家提供一些思路,整体为开源技术,屌丝安全的本质是“快”,当前社会唯快不破。
0x01: 技术架构: 使用到的工具如下:
Ossec(事件源、alert源) Logstash (日志收集、分割日志) Elasticsearch (全文搜索) Kibana3 (日志展现) Redis(用于数据存储,防止数据丢失)
使用该方案好处:opensource, 不方便处:资料较少,尤其是对Kibana
0x02:实施方案:
关于如何安装,请参考: https://app.yinxiang.com/shard/s21/sh/f4e62686-16ef-4549-beb1-c5124b232df6/f538a1ea304ff4191acf494a1a1bd4f9
0x03:技术实践:
1、 系统日志收集:
操作系统日志收集可以采取syslog、rsyslog等技术,本文使用syslog主要对于收集日志安全日志,日志内容范围为/var/log/secure,、/var/log/lastlog等,/var/log/secure内基于用户的登录失败、登录异常、是否从白名单ip登录等都可以审计到,然后来做关联分析,更多的维度需要各位看官自己去发现和探索,本文不深入讲解。
日志收集作用: 应用场景:系统安全日志薄弱在黑客防御过程中,如果日志被删除,syslog服务被暂停,这些都会对系统入侵分析造成麻烦,难以追溯。
2、 入侵检测系统ossec:
Syslog日志进来后不能不做分析,如果不分析,数据就不会被用活只是死数据,这里用到开源ids系统,Ossec,Ossec大家或许并不陌生,ossec 支持2种模式:1、ossec agent; 2、基于syslog方式对日志做收集,通过客户端配置syslog将日志传送到ossec server,然后ossec server会通过对分析日志进格式化处理规则解析,判断异常并且对其做处理,比如写入数据库,触发告警,如图1为处理日志过程。
如图2为ossec整个工作过程:
3、 日志集中化管理 logstash:
Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志,但因为logstash的管理界面不如kibana美观,这里使用Kibana做日志展现。 我安装的logstash版本为:logstash-1.2.2-flatjar.jar,通过命令:
java -jar logstash-1.2.2-flatjar.jar agent -f logstash_agent.conf
将logstash启动,logstash_agent.conf内容如下图:
对上图logstash内容进行分解,它一共做了这些事。
- 通过读取ossec alert log,将数据读取到logstash agent。
- Logstash判断事件源是否为ossec,如果是则对其进行分割字段;
- 将处理后的logstash日志写入到redis;
- 使用redis的目的是为了将logstash读取的日志缓存到redis内,防止数据丢失。
4、 全文检索 elasticsearch:
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 在本文中ElasticSearch主要的作用,通过es读取logstash内ossec日志进行全文检索,方便后续日志展现及搜索,es默认端口为9200,成功开启es后会提示如下:
ElasticSearch启动后可以通过访问http://127.0.0.1:9200来查看es工作是否正常,出现如下数据证明es正常工作 9300端口主要用于和es集群通信发数据。
{
"status" : 200,
"name" : "N'Gabthoth",
"version" : {
"number" : "1.2.2",
"build_hash" : "9902f08efc3ad14ce27882b991c4c56b920c9872",
"build_timestamp" : "2014-07-09T12:02:32Z",
"build_snapshot" : false,
"lucene_version" : "4.8"
},
"tagline" : "You Know, for Search"
}
通过读取之前写入到redis里的数据,将redis内数据写入到es里,如下配置实现:
input {
redis
{
host => "127.0.0.1"
data_type =>"list"
port => "6379"
key => "logstash"
type => "ossec"
}
}
output {
stdout { codec => rubydebug }
if [type] == "ossec" {
elasticsearch {
host => "127.0.0.1"
port => "9300"
#cluster => "ossec"
index => "logstash-ossec-%{+YYYY.MM.dd}"
index_type => "ossec"
template_name => "template-ossec"
template => "/usr/local/share/logstash/elasticsearch_template.json"
template_overwrite => true
}
}
}
5、 日志展现:
既然已经将上述工作都做到位了,那么需要有界面来展现劳动成果及后续进行日志分析,这里使用kibana来做展现,关于kibana各位请自行搜索,我只简单说下我的理解,它的资料很少,笔者在学习过程中也是一路摸索,推荐大家使用这个dashboard来展现日志,下载地址:https://github.com/magenx/Logstash/blob/master/kibana/kibana_dashboard.json 6、 结果展现:
6.1、 结合Ossec应用场景:
举例,我们在日常的运维环境中会有常见的登录事件,并且也会限制一些ip是否能登录该主机,在ossec内我们定制一条规则来判断是否有入侵者使用其他ip进行登录。 在ossec里我们可以定制一条规则在sshd_rules.xml中,规则如下:
<rule id="5739" level="10">
<if_sid>5700</if_sid>
<group>authentication_failure</group>
<srcip>!10.10.2.1</srcip>
<description>not come from 10.10.2.1</description>
</rule>
</group>
if_sid是匹配syslog,sshd,如下规则:
<!-- SSHD messages -->
<group name="syslog,sshd,">
<rule id="5700" level="0" noalert="1">
<decoded_as>sshd</decoded_as>
<description>SSHD messages grouped.</description>
</rule>
如果有用户触发到该规则,kibana会展现告警如下:
0x04:
借用一句话,安全这个东西就是这样的,你遇到的我没遇到过,我遇到的你可能也没有遇到过,其实只要一说,大家就都明白了。 ” 希望此文对你有帮助,谢谢!
能把logstash_agent.conf文件共享一下吗?谢谢了,[email protected]
很好用的样子 就是配置起来有点累人
@xysky 何工,这套玩意最重要是免费啊
简介的好简单
已破解~~~
哈哈
:) 好久不联系
archsight 同事和我提过不过我没详细使用过,不知道咋样。
关联分析,我到觉得是事件驱动,看事件来决定模型如何,这点我做的也不是很好。
winsky,好久未联系啊。
商业公司考虑开源的会少一些,这些基本的功能在arcsight都有,采个syslog做个case是easy easy,关键是关联分析目前没看到做的非常好的。
在用kibana3做展现时,表示看不到post数据,求解。。
splunk,每天500M,不够用
splunk 不是免费的吧
为什么不用splunk,完全可以替换上面的Logstash,Elasticsearch,Kibana3
每天上G的日志用elasticsearch存,内存受不了。
From BAT?
赞,CZ不要乱喷哦,感谢LZ分享!
没研究过flumed
lz,小白一个,问个问题。flume和Logstash都是日志收集的?有什么区别么?flume-ng+Kafka+Storm+HDFS这个和文中说的那套系统有什么优劣么?
很多人在意标题,我想说不要在意这些细节,里面的东西自己不深挖是不会理解的。
我看着标题应该叫 3个开源工具的简介
大数据是技术,不是指数据大,关联分析是把事件关联,具体的东西暂时不方便写,先酱油个,算是搭个框架,具体个人如何认为,那是自己事。
我顶一个,ossec这么玩才能玩好,批量部署一堆坑。
楼主用心分享先赞一个!
但是请问:大数据呢?!关联呢?!分析呢?!
是不是有点标题党了啊
不觉明历
牛逼!!!!