一、 Splunk公司与产品
美国Splunk公司,成立于2004年,2012年纳斯达克上市,第一家大数据上市公司,荣获众多奖项和殊荣。总部位于美国旧金山,伦敦为国际总部,香港设有亚太支持中心,上海设有海外第一个研发中心。
产品:Splunk Enterprise【企业版】、Splunk Free【免费版】、Splunk Cloud、Splunk Hunk【大数据分析平台】、Splunk Apps【基于企业版的插件】等。企业版按索引的数据量收费,免费版每天最大数据索引量500MB,可使用绝大多数企业版功能。
二、 Splunk能够做什么
让所有人均可访问机器数据、让机器数据对所有人有用并具有价值!Splunk是机器数据的引擎,使用Splunk可收集、索引和利用所有应用程序、服务器和设备生成的快速移动型计算机数据。使用Splunk处理计算机数据,可让您在几分钟内解决问题和调查安全事件;使用Splunk可以监视您的端对端基础结构,避免服务性能降低或中断;以较低成本满足合规性要求;关联并分析跨越多个系统的复杂事件,获取新层次的运营可见性以及 IT 和业务智能。
每个环境都有独特的机器数据空间,以下是一些示例:
数据类型 |
位置 |
可以做什么 |
应用日志 |
本地日志文件、log4j、log4net、Weblogic、WebSphere、JBoss、.NET、PHP |
用户活动、欺诈检测、应用性能 |
业务流程日志 |
业务流程管理日志 |
跨渠道客户活动、购买、帐户变更以及问题报表 |
呼叫详细信息记录 |
呼叫详细信息记录 (CDR)、计费数据记录、事件数据记录均由电信和网络交换机所记录。 |
计费、收入保证、客户保证、合作伙伴结算,营销智能 |
点击流数据 |
Web 服务器、路由器、代理服务器和广告服务器 |
可用性分析、数字市场营销和一般调查 |
配置文件 |
系统配置文件 |
如何设置基础设施、调试故障、后门攻击、"定时炸弹"病毒 |
数据库审计日志 |
数据库日志文件、审计表 |
如何根据时间修改数据库数据以及如何确定修改人 |
文件系统审计日志 |
敏感数据存储在共享文件系统中 |
监测并审计敏感数据读取权限 |
管理并记录 API |
通过 OPSEC Log Export API (OPSEC LEA) 和其他 VMware 和 Citrix 供应商特定 API 的 Checkpoint 防火墙 |
管理数据和日志事件 |
消息队列 |
JMS、RabbitMQ 和 AquaLogic |
调试复杂应用中的问题,并作为记录应用架构基础 |
操作系统度量、状态和诊断命令 |
通过命令行实用程序(例如 Unix 和 Linux 上的 ps 与 iostat 以及 Windows 上的性能监视器)显示的 CPU、内存利用率和状态信息 |
故障排除、分析趋势以发现潜在问题并调查安全事件 |
数据包/流量数据 |
tcpdump 和 tcpflow 可生成 pcap 或流量数据以及其他有用的数据包级和会话级信息 |
性能降级、超时、瓶颈或可疑活动可表明网络被入侵或者受到远程攻击 |
SCADA 数据 |
监视控制与数据采集 (SCADA) |
识别 SCADA 基础结构中的趋势、模式和异常情况,并用于实现客户价值 |
传感器数据 |
传感器设备可以根据监测环境条件生成数据,例如气温、声音、压力、功率以及水位 |
水位监测、机器健康状态监测和智能家居监测 |
Syslog |
路由器、交换机和网络设备上的 Syslog |
故障排除、分析、安全审计 |
Web 访问日志 |
Web 访问日志会报告 Web 服务器处理的每个请求 |
Web 市场营销分析报表 |
Web 代理日志 |
Web 代理记录用户通过代理发出的每个 Web 请求 |
监测并调查服务条款以及数据泄露事件 |
Windows 事件 |
Windows 应用、安全和系统事件日志 |
使用业务关键应用、安全信息和使用模式检测问题。 |
线上数据 |
DNS 查找和记录,协议级信息,包括标头、内容以及流记录 |
主动监测应用性能和可用性、最终客户体验、事件调查、网络、威胁检测、监控和合规性 |
三、 Splunk架构与组件
架构最下层:Splunk通过监控文件和目录、监控网络端口、运行脚本的方式获取数据。
Data Routing Cloningand and Load Balancing:数据复制与负载均衡,
Index:顾名思义,它跟索引有关,实际上他不仅仅负责为数据建立索引,还负责响应查找索引数据的用户请求,还有读取数据和负责查找管理工作。虽然indexer可以在查找它本身的数据,但是,在多indexer的集群中,可以通过叫“search head”的组件来整合多个indexer,对外提供统一的查询管理和服务。
Search:专用的搜索语言,原始事件搜索、报表生成搜索,并可在搜索中自动学习“知识”,用户也可以自定义知识,从而使搜索越来越智能。
最上面两层:各类报表、告警,以命令行窗口,web图形界面接口和其他接口。
Splunk的几个重要组件:
索引器:索引器是用于为数据创建索引的Splunk Enterprise 实例。索引器将原始数据转换为事件并将事件存储至索引(Index)中。索引器还搜索索引数据,以响应搜索请求。
搜索头:在分布式搜索环境中,搜索头是处理搜索管理功能、指引搜索请求至一组搜索节点,然后将结果合并返回至用户的Splunk Enterprise 实例。如果该实例仅搜索不索引,通常被称为专用搜索头。
搜索节点:在分布式搜索环境中,搜索节点是建立索引并完成源自搜索头搜索请求的Splunk Enterprise实例。
转发器:转发器是将数据转发至另一个Splunk Enterprise 实例(索引器或另一个转发器)或至第三方系统的Splunk Enterprise 实例。
接收器:接收器是经配置从转发器接收数据的Splunk Enterprise 实例。接收器为索引器或另一个转发器。
应用:应用是配置、知识对象和客户设计的视图和仪表板的集合,扩展Splunk Enterprise 环境以适应Unix 或Windows 系统管理员、网络安全专家、网站经理、业务分析师等组织团队的特定需求。单个Splunk Enterprise 安装可以同时运行多个应用。
四、 Splunk分布式部署
如果系统平台比较大,产生的数据量比较大,那么可以不断扩展splunk集群,splunk具备这种扩展能力。用户可以部署任意多个forwarder,用来转发刚刚产生的原始数据。Indexer也可以部署成为一个集群,统一下层提供接收原始数据、建立索引的服务,对上层提供搜索的服务。用户还可以部署多台用于搜索的Search Header。所以,用户可以根据自己平台的实际工作量来部署自己的splunck集群大小。
五、 Splunk的安装
Splunk支持在各类操作系统上安装,下面以Linux系统安装为例:
1、上传splunk安装包splunk-6.4.2-00f5bb3fa822-Linux-x86_64.tgz至/opt目录。
2、解压安装压缩包
/tar –zxvf splunk-6.4.2-00f5bb3fa822-Linux-x86_64.tgz //解压,解压异常请注意文件上传是否正确。
3、进入splunk命令文件夹(bin)
cd /opt/splunk/bin //进入splunk bin目录
4、检查splunk状态
./splunk status //检查splunk状态是否正常,第一次会弹出license告知,按提示点击确定
5、启动splunk
./splunk start //启动splunk
./splunk status //检查启动状态
6、Splunk默认web登陆端口是8000,在浏览器中http://ip:8000,可第一次登陆,如果无法登陆请检查本机防火墙。
默认用户名:admin,密码:changeme,第一次登陆成功后要求重置密码。
7、设置splunk开机启动
./splunk enable boot-start
8、查看splunk进程信息
ps –f | grep splunk
六、 Splunk卸载
1、进入splunk文件夹
cd /opt/splunk/bin
2、检查splunk状态
./splunk status
3、关闭splunk服务
/splunk stop
4、删除splunk安装目录
rm –rf /opt/splunk
七、 Splunk基本配置
所有的设置基本上都可以通过Web页面和splunk CLI命令两种方式。
1、Web页面:
可修改splunk主机名、管理端口、web登陆端口,修改后需重启splunk生效。
2、CLI命令
./splunk start //启动
./splunk stop //关闭
./splunk restart //重启
./splunk status //查看状态
./splunk version //查看版本
./splunk show splunkd-port //查看管理端口
./splunk show web-port //查看web登陆管理端口
./splunk set web-port 80 //修改web登陆管理端口为80
./splunk set servername //新的服务器名称 //设置服务器名称
./splunk set default-hostname 新的主机名称 //设置默认主机名称
./splunk enable web-ssl //启用SSL
./splunk disable web-ssl //关闭SSL
./splunk edit user admin –password ‘newpassword’ –authadmin:oldpassword //修改用户密码
./splunk add user //新增用户
./splunk add user 新的用户名 -password ‘新用户密码’ -full-name ‘设置它的全名’ –role User(这个是角色)
./splunk list user //列出用户
./splunk remove user //删除用户
八、 简单应用实例——手工添加数据
1、点击Splunk首页——添加数据——上载
2、选择要上传的文件,按提示点击确定
3、上传完成后,splunk会自动生成字段,也可以按需要根据“正则表达式”或“分隔符”自己提取字段
4、可以根据需要进行各类搜索、计算,如何搜索需要学习splunk的SPL搜索语言,推荐阅读《Splunk实践指南_》
九、 简单应用实例——监控splunk本地的数据
1、点击splunk首页——添加数据——监视——文件和目录
2、选择“浏览”,添加需要监控的本地目录,索引、目录都可以先选择默认,在稍后在做具体解释。
3、添加完成后,实时监视文件变化,也可以进行搜索了。
十、 简单应用实例——监控远程服务器数据
可以通过syslog或splunk通用转发器,把远程服务器的数据传到splunk服务器进行监视,下面重点介绍splunk通用转发器的使用。
(一)、splunkforwarder安装与配置
1、在需要收集日志的服务器上安装splunkforwarder
2、切换至splunkforwarder的可执行目录(bin),启用转发器
./splunk start //根据提醒点确定
3、查看通用转发器的端口(默认用户名:admin、密码:changeme)
./splunk show splunkd-port
4、修改通用转发器的密码
/splunk edit user admin -password ‘新密码’ -role admin -auth admin:changeme
(二)、下面我们将远程服务器的 /var/log/audit/发给splunk
1、先到splunk上为这个实例创建一个索引,使用默认索引也可以,但建议为主要应用创建各自的索引
通过命令创建索引(也可以通过web页面创建)
./splunk add index linux_audit
2、在splunkforwarder服务器上添加一个监控项
./splunk add monitor /var/log/audit –index linux_audit
3.添加splunk接收服务器和接口
./splunk add forward-server 192.168.40.129:9997
4.查看转发服务器
./splunk list forward-server
5.splunk服务器上检查开启监听端口
./splunk enable listen 要启用的端口号 // 开启splunk接收的指定端口
./splunk disable listen 要禁用的端口号 // 关闭splunk接收的指定端口
./splunk display listen // 显示已启用的splunk接收的端口
(三)、登陆Web页面,查看搜索
1、index=“linux_audit”(支持命令的自动补全)
十一、 利用Splunk搭建SOC平台
收集一切可以收集的数据(IDS、出入口流量、防病毒、端口扫描等各类信息安全软件、工具的日志),利用Splunk进行监控、告警、根据需要快速搜索、生成报表,举例如下:
1、通过Security Onion App for Splunk software,监控出入口网络流(包括IDS威胁监控、外网开放端口监控、各协议的连接监控……)
2、外网IP开放端口扫描
Nmap扫描日志自动上传至Splunk,在仪表盘中制定关注的面板(如高危端口开放展示等)。