如何用Splunk建立可疑DNS报警系统

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

题外话:当了很久的潜水员和伸手党,实在觉得有愧于心,但又拿不出太好的东西。想了很久,发现Freebuf中甚少提到Splunk大数据分析的应用,在此抛砖引玉,拿一些自己的东西出来给大家参考,希望能给予大家一点启发。

Splunk是一个可运行于各种平台的 IT 数据分析、日志分析、业务数据分析软件,支持的操作系统包含Windows,Linux, Solaris, FreeBSD, AIX, MacOS, HP-UX。与 Google Analytics 这一类的 Web 日志分析软件的不同之处在于,Splunk可以支持任何 IT 设备(服务器、网络设备、应用程序、数据库等)所产生的日志,其对日志进行处理的方式是进行高效索引之后让管理员可以对日志中出现的各种情况进行搜索,并且通过非常好的图形化的方式展现出来。

每天由各种服务器所产生的日志的数量是非常惊人的,而遇到突发情况时,却往往能够从这些海量日志中找到最多的有用消息。通常在 Unix 下对日志进行查找使用的是grep之类的低效率的方式,而 Splunk 使用了现代搜索引擎技术对日志进行搜索,同时提供了一个非常强大的AJAX 式的界面展现日志。

Splunk除了商业版本以外,也有免费版本可以使用,不过有500M/每天的限制,500M的Log222用来作DNS分析,其实也绰绰有余了。另外其还提供了非常多的APPs,针对市面上通用的,主流的各种软硬件系统日志进行了定制,基本可以拿来就用;特征针对企业安全,Splunk另外提供了Splunk Enterprise Security套件,即通常所讲的SplunkES,ES提供了一套完整的安全解决方案,通过大数据分析提供从网络,终端,访问,病毒,漏洞和身份信息安全等一揽子预防、报警方案,可以有效地帮助安全团队快速定位和响应内部和外部攻击,并有效的简化了威胁管理,降低风险,从而有效的保护企业数据。目前最新版本已更新到4.2.0,具体篇幅就不再展开了,如果有需要,我再单独开一篇文章给大家讲讲如何配置。

Part I: SPLUNK UniversalForwarder对DNS日志监控的建立

先来看下效果图

从上面的表格我们可以很清楚的看到,有两个IP地址,在15:41的时候尝试查询tbccint.com的域名,而这个域名是名列Malware域名中的一个,由Google安全团队提供,属于攻击页面类型。而通过Query字段,我们可以理解到用户应该是被迫安装了toolbar导致该事件报告。后面的事情就简单了,找到用户干掉toolbar,避免了可能造成的危害!

长话短说,安装Splunk到Linux环境后,(注:不建议使用Windows环境安装Splunk,因为很多组件在Windows环境下不兼容)

安装Splunk到/Home目录

  然后跟着提示直接Y就好了,也可以用acceptlua去掉提示。

Splunk安装完了后,就可以在Linux下面使用/home/splunk/bin/splunkstart 启动Splunk服务,接着就可以使用http://192.168.xxx.xxx:8000/来访问,缺省密码是ChangeMe

下面我们开始配置DNS,也许有些朋友已经了解过“Analyzing DNS Logs Using Splunk”这篇文章,那么也应当知道这篇文章中有很多错漏,当然,本文也是基于这篇文章的核心思想来搭建本系统的。

1. 那么首先,我们需要先激活Windows DNS 服务器的日志功能。针对DNS的日志,我们只需要激活如下几个选项就可以了。(注:由于windows 2012已经将DNS日志写入EventLog,所以,本选项不能通用)这里需要注意的是文件路径,不建议放到系统盘符以外的其他地方,因为DNS日志在进行覆写的时候会先将该日志复制一份到系统目录,这样到知道大文件日志在进行搬移的时候会对Splunk的UF造成问题。建议放到跟系统目录同盘符就好了,大小根据自己的需求进行设置。

2. 接着我们需要安装Splunk Universal Forwarder,简称UF,这个是一个Windows 应用程序,可以监控系统日志和文件以及文件夹等等,并转换成SYSLOG日志发送到SYSLOG日志接收者。

3. 由于DNS日志的特殊性,独占线程会破坏系统DNS日志的生成,所以在UF中不能使用MONITOR功能,而必须使用MONITORNOHANDLE,等下我们会提到。在此之前,特别重要的一件事需要提醒给大家,也相信很多人最终发现DNS的SYSLOG日志不成功的原因就是:必须安装splunkforwarder-6.2.10-276849-x64-release.msi或splunkforwarder-6.2.10-276849-x86-release.msi,其他版本均有各种问题,并未加以解决!(该case由本人发现并提交给Splunk开发,然后Splunk确认是bug,经过两星期后fix才更新出来)

4. 那么下面我们开始安装UF.

5. 安装过程其实也很简单,简单过一下把。

6. 接受license

  7. 指定安装路径

  8. 因为我们并未配置Deployment Server所以这里留空

  9. 这里输入我们之前安装的Splunk服务器的地址,端口号请留缺省

  10. 接着一路Next

11. 直到这里,然后我们一个都不选,直接Next,至此安装完毕。

  12. 接下来我们就需要配置一个APP用来采集DNS日志。

13. 进入刚刚安装的UF路径,即%PROGRAMFILES%SUF

14. 在etcapps目录下建立一个空文件夹叫TA-WindowsDNS

15. 然后建立一个文件夹叫local. (%PROGRAMFILES%SUFETCAPPSTA-WINDOWSDNSLOCAL)

16. 使用Notepad建立一个名为inputs.conf的文件,编辑内容如下:

17. 请修改并确认你的DNS日志输出路径,此外,这里必须使用MonitorNoHandle,Monitor参数不能用在可以回滚的DNS日志上。

18. 重启SplunkUniversalForwarder服务,很快我们在Splunk服务器上面将收到错误提示,因为我们并未创建正确的INDEX,但这也意味着我们成功的完成了第一部分工作!

Part II: SPLUNK对DNS系统配置

1. 我们将开始对SPLUNK进行DNS配置

2. 下载windows-dns-logs-analytics_10.tgz并安装 (https://splunkbase.splunk.com/app/3012/)

3. 这个APP大部分可以利用,但是他没有遵循CIM标准,导致跟ES的结合造成问题,因此我们必须以这个app为原型进行修改,如果不需要介入ES,那么后文中有部分设置不需要修改(所谓的app,大家可以直接想象成插件程序,就像add-on一样,不过add-on在splunk里面是以TA的形式出现,而APP比TA更加强大,拥有各种已定制功能,比如DashBoard)

4. 下载完了app后,点击“Install app from file”进行安装

  6. 所有新app的安装都需要重启服务器

7. /home/splunk/bin/splunkrestart

8. 完了后就需要在在LINUX中进行操作了

9. 进入/HOME/SPLUNK/etc/apps/TA-windowsdns

10. 在local 文件夹下面建立一个indexes.conf的文件用来创建index数据库

11. vi /home/splunk/etc/apps/TA-windowsdns/local/indexes.conf

12. 过个几分钟,这时回到Web这里,你应该已经可以查询到DNS访问记录

13. 我们可以查询到相应的且你可以看到所有的fields已经正确的解析出来了。

14. 第一次有点慢,是因为不关field解析出来了,还把域名对应的IP地址,即answer地址给一起查询出来了,这个过程有点慢,不需要反解析IP的朋友可以待会学我一样停掉这个选项,

15. 由于DNS查询量相当大,而我们完全没有必要去关注内网IP查询公司内网域名的记录,所以,我们需要先筛选这部分数据从而节省volume

16. 编辑system目录下面的props配置文件

17. vi/home/splunk/etc/system/local/props.conf

18. 添加如下部分

19. 由于原始的DNS日志文件格式是这样的,DNS查询记录是(4)wpad(7)xyzodc(2)ad(0),这样非常不好阅读

20. 所以在TA-windowsdns已经匹配并置换成了.cas2.northport.com.my.

21. 但是这对我们在进行数据源筛选的时候会造成麻烦,所以,我们从源头来解决问题

22. 我们应用SEDCMD-msdns = s/(d+)/./g来替换(4)为“.”

23. 接着 vi/home/splunk/etc/system/local/transforms.conf

24. 添加如下部分

25. 可自行替换mycompany到你自己公司的域名,或者添加其他可以被忽略的白名单域名

26. Okay,做完上面的部分那么我可以发现所有的白名单域名访问记录已经不再可被查询到了,干扰项已经基本排除了。

27. 接着我们需要对TA-windowsdns的app进行一些手术

28. 进入/home/splunk/etc/apps/TA-windowsdns

29. vi /home/splunk/etc/apps/TA-windowsdns/local/props.conf 添加basedomain的解析和正确query的解析

30. 屏蔽掉DNS解析以加快速度。(如果不在意速度,可以保留,这个answer地址解析回来的IP地址在以后有大用,比如用来比对IP地址信任度 –IP Reputation,这个不在本文中阐述)

  31. 修改完了,整体看上去

32. 重启服务之后,那么就可以看到完整的DNS查询记录,Splunk中的DNS查询就配置好了

Part III: SPLUNK对DNS的监控和优化

1.接着我们来配置DNS的日志监控

2.首先我们需要先安装Getwatchlist Add-on(https://splunkbase.splunk.com/app/635/)

3.装完了我们是看不到任何UI的,因为他仅仅提供了命令功能,具体使用方法可以参考https://splunkbase.splunk.com/app/635/#/details在这里,我们简单的调用该方法即可

4. 保存并创建一个Scheduled Alert,我这里设定每天下午6点自动下载MalwareDomain列表,并输出为malwaredomain.csv文件

5. 当下载完毕后自动自行对应的脚本命令,该命令保存在TA-windowsdns/bin/scripts目录下面或者系统目录下面,即$SPLUNK_HOME/bin/scripts

  6. TA-windowsdns本身是不带bin/scripts目录的,我们要手工创建

7. mkdir/home/splunk/etc/apps/TA-windowsdns/bin

8. mkdir/home/splunk/etc/apps/TA-windowsdns/bin/scripts

9. 创建python脚本

10. vi /home/splunk/etc/apps/TA-windowsdns/bin/scripts/cpmalware.py

11. 脚本的核心是给每行的malwaredomain添加通配符,原始文件是这样子的:

  12. 改造过后是这样子的:

13. 为什么要做这样的一个变化呢?因为SPLUNK在做LOOKUP的时候默认采用全匹配,除非当用户访问的”www.xyz.com”完全匹配了malwaredomain列表中的”www.xyz.com”,才能匹配成功,否则,你是查询不到数据的,而往往malwaredomain中的是”xyz.com”,那么用户的query就会匹配失败,所以做了以上的手术。

14. 接下来我们还需要对TA-windowsdns中的transforms.conf进行修改以便实现部分匹配

  22. 添加如下部分

  24. 收工!

25. 现在可以对DNS日志进行监控,当满足条件可以设定自动发送报警邮件,或者进行其他处理,比如通过防火墙添加拦截封锁该响应IP地址,等等。

27. 为了满足CIM需求,需要额外进行一些小的修改,不过,如果没有安装ES的可以不用考虑,只需要对DNS查询语句进行一些小的修改就可以

28. 贴出完整的符合CIM标准的props.con和transforms.conf (请注意,跟前文有少少不同)

29. props.conf

  30. transforms.conf

  31. 还需要修改lookups下面的这个csv文件

编者注:SPLUNK用来做大数据分析应用到安全方面可以帮助解决很多问题,尤其是可以用来做各种预分析和后处理工作。SPLUNK也是一个非常大的系统,可被利用的方向非常之多,这篇文章仅是冰山一角,如有错漏,还望斧正。谢谢。





====================================分割线================================


本文转自d1net(转载)

目录
相关文章
|
24天前
|
小程序 前端开发 关系型数据库
uniapp跨平台框架,陪玩系统并发性能测试,小程序源码搭建开发解析
多功能一体游戏陪练、语音陪玩系统的开发涉及前期准备、技术选型、系统设计与开发及测试优化。首先,通过目标用户分析和竞品分析明确功能需求,如注册登录、预约匹配、实时语音等。技术选型上,前端采用Uni-app支持多端开发,后端选用PHP框架确保稳定性能,数据库使用MySQL保证数据一致性。系统设计阶段注重UI/UX设计和前后端开发,集成WebSocket实现语音聊天。最后,通过功能、性能和用户体验测试,确保系统的稳定性和用户满意度。
|
1月前
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
50 7
|
2月前
|
存储 监控 算法
企业内网监控系统中基于哈希表的 C# 算法解析
在企业内网监控系统中,哈希表作为一种高效的数据结构,能够快速处理大量网络连接和用户操作记录,确保网络安全与效率。通过C#代码示例展示了如何使用哈希表存储和管理用户的登录时间、访问IP及操作行为等信息,实现快速的查找、插入和删除操作。哈希表的应用显著提升了系统的实时性和准确性,尽管存在哈希冲突等问题,但通过合理设计哈希函数和冲突解决策略,可以确保系统稳定运行,为企业提供有力的安全保障。
|
2月前
|
安全 前端开发 Android开发
探索移动应用与系统:从开发到操作系统的深度解析
在数字化时代的浪潮中,移动应用和操作系统成为了我们日常生活的重要组成部分。本文将深入探讨移动应用的开发流程、关键技术和最佳实践,同时分析移动操作系统的核心功能、架构和安全性。通过实际案例和代码示例,我们将揭示如何构建高效、安全且用户友好的移动应用,并理解不同操作系统之间的差异及其对应用开发的影响。无论你是开发者还是对移动技术感兴趣的读者,这篇文章都将为你提供宝贵的见解和知识。
|
2月前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
122 3
|
3月前
|
机器学习/深度学习 人工智能 数据处理
【AI系统】NV Switch 深度解析
英伟达的NVSwitch技术是高性能计算领域的重大突破,旨在解决多GPU系统中数据传输的瓶颈问题。通过提供比PCIe高10倍的带宽,NVLink实现了GPU间的直接数据交换,减少了延迟,提高了吞吐量。NVSwitch则进一步推动了这一技术的发展,支持更多NVLink接口,实现无阻塞的全互联GPU系统,极大提升了数据交换效率和系统灵活性,为构建强大的计算集群奠定了基础。
200 3
|
2月前
|
安全 搜索推荐 数据挖掘
陪玩系统源码开发流程解析,成品陪玩系统源码的优点
我们自主开发的多客陪玩系统源码,整合了市面上主流陪玩APP功能,支持二次开发。该系统适用于线上游戏陪玩、语音视频聊天、心理咨询等场景,提供用户注册管理、陪玩者资料库、预约匹配、实时通讯、支付结算、安全隐私保护、客户服务及数据分析等功能,打造综合性社交平台。随着互联网技术发展,陪玩系统正成为游戏爱好者的新宠,改变游戏体验并带来新的商业模式。
|
3月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
196 3
|
3月前
|
前端开发 Android开发 UED
移动应用与系统:从开发到优化的全面解析####
本文深入探讨了移动应用开发的全过程,从最初的构思到最终的发布,并详细阐述了移动操作系统对应用性能和用户体验的影响。通过分析当前主流移动操作系统的特性及差异,本文旨在为开发者提供一套全面的开发与优化指南,确保应用在不同平台上均能实现最佳表现。 ####
57 0
|
3月前
|
存储 自然语言处理 数据可视化
3倍提升效率:医疗病理信息抽取与关系图谱展示系统解析
该项目旨在通过NLP技术将医疗病理报告中的非结构化文本转化为结构化数据,实现信息的高效抽取、存储及可视化展示。利用Python、JavaScript等技术栈,结合Echarts等工具,构建病理信息的关系图谱,支持多条件检索与图表互动,提高医生及研究人员的工作效率。预期成果包括数据结构化、关系图谱可视化、快速检索及数据统计分析等功能。项目预计2-4周完成。

相关产品

  • 云解析DNS
  • 推荐镜像

    更多