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

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

题外话:当了很久的潜水员和伸手党,实在觉得有愧于心,但又拿不出太好的东西。想了很久,发现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(转载)

目录
相关文章
|
1天前
|
机器学习/深度学习 存储 人工智能
让模型评估模型:构建双代理RAG评估系统的步骤解析
在当前大语言模型(LLM)应用开发中,评估模型输出的准确性成为关键问题。本文介绍了一个基于双代理的RAG(检索增强生成)评估系统,使用生成代理和反馈代理对输出进行评估。文中详细描述了系统的构建过程,并展示了基于四种提示工程技术(ReAct、思维链、自一致性和角色提示)的不同结果。实验结果显示,ReAct和思维链技术表现相似,自一致性技术则呈现相反结果,角色提示技术最为不稳定。研究强调了多角度评估的重要性,并提供了系统实现的详细代码。
22 10
让模型评估模型:构建双代理RAG评估系统的步骤解析
|
9天前
|
域名解析 缓存 网络协议
域名系统DNS_基础知识
域名系统(DNS)使我们能够通过易记的域名访问互联网资源,而非直接使用IP地址。DNS采用层次树状结构,由多个分量组成,如顶级域名(如.com或.cn)位于最右侧。域名长度限制为255个字符,各级域名由相应管理机构监管,顶级域名由ICANN管理。DNS分为国家顶级域名、通用顶级域名和反向域等。域名解析涉及根域名、顶级域名及权限域名服务器,通过递归和迭代查询完成。为提高效率,DNS使用分布式服务器和高速缓存技术。
|
1月前
|
机器学习/深度学习 自然语言处理 负载均衡
揭秘混合专家(MoE)模型的神秘面纱:算法、系统和应用三大视角全面解析,带你领略深度学习领域的前沿技术!
【8月更文挑战第19天】在深度学习领域,混合专家(Mixture of Experts, MoE)模型通过整合多个小型专家网络的输出以实现高性能。从算法视角,MoE利用门控网络分配输入至专家网络,并通过组合机制集成输出。系统视角下,MoE需考虑并行化、通信开销及负载均衡等优化策略。在应用层面,MoE已成功应用于Google的BERT模型、Facebook的推荐系统及Microsoft的语音识别系统等多个场景。这是一种强有力的工具,能够解决复杂问题并提升效率。
47 2
|
1月前
|
测试技术 uml 开发者
使用UML进行系统建模:深入解析与实践指南
【8月更文挑战第19天】UML作为一种强大的建模语言,为系统建模提供了全面的支持。通过合理使用UML,可以显著提高软件开发的效率和质量,促进团队成员之间的有效沟通。然而,UML并非万能,它需要根据项目的具体情况进行灵活应用和调整。希望本文能为你在使用UML进行系统建模时提供一些有益的参考和指导。
|
20天前
|
图形学 开发者 UED
Unity游戏开发必备技巧:深度解析事件系统运用之道,从生命周期回调到自定义事件,打造高效逻辑与流畅交互的全方位指南
【8月更文挑战第31天】在游戏开发中,事件系统是连接游戏逻辑与用户交互的关键。Unity提供了多种机制处理事件,如MonoBehaviour生命周期回调、事件系统组件及自定义事件。本文介绍如何有效利用这些机制,包括创建自定义事件和使用Unity内置事件系统提升游戏体验。通过合理安排代码执行时机,如在Awake、Start等方法中初始化组件,以及使用委托和事件处理复杂逻辑,可以使游戏更加高效且逻辑清晰。掌握这些技巧有助于开发者更好地应对游戏开发挑战。
43 0
|
21天前
|
图形学 C# 开发者
Unity粒子系统全解析:从基础设置到高级编程技巧,教你轻松玩转绚丽多彩的视觉特效,打造震撼游戏画面的终极指南
【8月更文挑战第31天】粒子系统是Unity引擎的强大功能,可创建动态视觉效果,如火焰、爆炸等。本文介绍如何在Unity中使用粒子系统,并提供示例代码。首先创建粒子系统,然后调整Emission、Shape、Color over Lifetime等模块参数,实现所需效果。此外,还可通过C#脚本实现更复杂的粒子效果,增强游戏视觉冲击力和沉浸感。
38 0
|
21天前
|
C# Windows 开发者
超越选择焦虑:深入解析WinForms、WPF与UWP——谁才是打造顶级.NET桌面应用的终极利器?从开发效率到视觉享受,全面解读三大框架优劣,助你精准匹配项目需求,构建完美桌面应用生态系统
【8月更文挑战第31天】.NET框架为开发者提供了多种桌面应用开发选项,包括WinForms、WPF和UWP。WinForms简单易用,适合快速开发基本应用;WPF提供强大的UI设计工具和丰富的视觉体验,支持XAML,易于实现复杂布局;UWP专为Windows 10设计,支持多设备,充分利用现代硬件特性。本文通过示例代码详细介绍这三种框架的特点,帮助读者根据项目需求做出明智选择。以下是各框架的简单示例代码,便于理解其基本用法。
59 0
|
23天前
|
消息中间件 Java RocketMQ
微服务架构师的福音:深度解析Spring Cloud RocketMQ,打造高可靠消息驱动系统的不二之选!
【8月更文挑战第29天】Spring Cloud RocketMQ结合了Spring Cloud生态与RocketMQ消息中间件的优势,简化了RocketMQ在微服务中的集成,使开发者能更专注业务逻辑。通过配置依赖和连接信息,可轻松搭建消息生产和消费流程,支持消息过滤、转换及分布式事务等功能,确保微服务间解耦的同时,提升了系统的稳定性和效率。掌握其应用,有助于构建复杂分布式系统。
34 0
|
26天前
|
存储 API 数据库
Django后端架构开发:构建在线云媒资系统思路解析
Django后端架构开发:构建在线云媒资系统思路解析
32 0
|
28天前
|
开发框架 Android开发 开发者
探索移动应用的无限可能:从开发到系统深度解析
【8月更文挑战第24天】在数字时代的浪潮中,移动应用与操作系统构成了我们日常生活的数字基石。本文将深入探讨移动应用的开发流程、跨平台框架的应用,以及移动操作系统的核心机制,旨在为读者揭示如何利用这些技术构建更智能、更高效的移动解决方案。通过实际代码示例,我们将一起见证技术如何转化为创新的力量。

相关产品

  • 云解析DNS
  • 推荐镜像

    更多