Splunk
一、 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/bin2、检查splunk状态./splunk status3、关闭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/发给splunk1、先到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,在仪表盘中制定关注的面板(如高危端口开放展示等)。