【干货】日志管理与分析(一) |
您所在的位置:网站首页 › 无人机空中停车 › 【干货】日志管理与分析(一) |
近日,有幸拜读《日志管理与分析权威指南》一书,本书由三位业界资深安全专家编著,从日志的基本概念开始,由浅入深讲述了整个日志生命周期的详细过程,从日志的概念、数据概念、人工分析日志、以及日志与合规的依从性、自动化分析日志引申到SIEM日志管理。而其一作者Anton A.Chuvakin博士是日志管理、SIEM和PCI DSS依从性领域公认的安全专家,他的博客www.securitywarrior.org是该领域中最受欢迎的博客之一,下面附一张Anton A.Chuvakin博士的博客截图。
题主并不是日志分析专家,只是借着学习后的总结分享出来,每个人在不同时机看的东西不一样,欢迎指正~ 简单地说,日志消息就是计算机系统、设备、软件等在某种触发下反应生成的东西。确切的触发在很大程度上取决于日志消息的来源。例如,UNix操作系统会记录用户登录和注销的消息,防火墙将记录ACL通过和拒绝的消息,磁盘存储系统在故障发生或者在某些系统认为将会发生故障的情况下会生成日志消息。 日志数据就是一条日志消息里用来告诉你为什么生成消息的信息,例如,web服务器一般会在有人访问web页面请求资源(图片、文件等等)的时候记录日志。如果用户访问的页面需要通过认证,日志消息将会包含用户名。 日志消息可以分成下面的几种通用类型:信息:这种类型的消息被设计成告诉用户和管理员一些没有风险的事情发生了。例如,Cisco IOS将在系统重启的时候生成消息。不过,需要注意的是,如果重启发生在非正常维护时间或是业务时间,就有发出报警的理由。 调试:软件系统在应用程序代码运行时发生调试信息,是为了给软件开发人员提供故障检测和定位问题的帮助。 警告:警告消息是在系统需要或者丢失东西,而又不影响操作系统的情况下发生的。 错误:错误日志消息是用来传达在计算机系统中出现的各种级别的错误。例如,操作系统在无法同步缓冲区到磁盘的时候会生成错误信息。 警报:警报表明发生了一些有趣的事,一般情况下,警报是属于安全设备和安全相关系统的,但并不是硬性规定。在计算机网络中可能会运行一个入侵防御系统IPS,检查所有入站的流量。它将根据数据包的内容判断是否允许其进行网络连接。如果IPS检测到一个恶意连接,可能会采取任何预先配置的处置。IPS会记录下检测结果以及所采取的行动。 02 日志数据的传输与收集 计算机或者其他设备都实现了日志记录子系统,能够在确定有必要的时候生成日志消息,具体的确定方式取决于设备。另外,必须有一个用来接收和收集日志消息的地方,这个地方一般被称为日志主机。日志主机是一个计算机系统,一般来说可能是linux和windows服务器系统,它是集中收集日志消息的地方。使用集中日志收集器的优点如下:可以集中存储从多个地方得到的日志消息。 可以在上面备份你的日志。 可以在上面进行日志数据的分析。 那么,日志消息如何传输?最常见的方法是通过syslog协议。syslog协议是日志消息交换的一种标准。常见于Linux系统中,也使用在windows平台上。syslog基本上都实现了客户端和服务端组件,两者之间通过用户数据报协议(UDP)通信,但是为了可靠传输,很多开源和商业syslog实现同样也支持传输控制协议(TCP)。 syslog并不是传输和收集日志数据的唯一机制。例如,微软为windows开发了自己的日志记录系统,称为windows事件日志。用户登录注销,应用程序消息等都以专有的格式存储。有开源和商业的应用程序用来将windows事件日志转换成syslog的格式,以发送给syslog服务器。 简单网络管理协议(SNMP)是一种用来管理网络设备的基于标准的协议。 数据库已经变成了应用程序存储日志消息的简便途径。应用程序可以将它的日志消息写进数据库模式,而不是生成一条syslog消息。在某些情况下,syslog服务器本身也可以直接写入关系型数据库,特别是在结构化存储、分析和报告日志消息的情况下有着极大的优势。 最后,也有一些专有的日志记录格式。第三方设备和应用程序实现了用于生成和检索日志消息的专有机制。在这个领域,供应商可能以C或者java类库的形式给你提供应用编程接口(API),或者由你自行实现协议。可将windows事件日志看作一种专有格式,但时常人们将其看作非官方日志记录标准,类似syslog,因此这种方式很流行。syslog:基于UDP的客户端/服务器协议。这是最常见和普遍的日志记录机制。 SNMP:SNMP最初是为了管理网络中的设备而创造的,然而多年来许多非网络系统已采用SNMP作为发出日志消息和其他状态类型数据的方式。 windows事件日志:微软的专有日志记录格式。 数据库:以结构化的方式来存储和检索日志消息。 常用的专有协议:LEA:日志提取API是Checkpoint用于从它的防火墙和安全产品线收集日志的API。 SDEE:安全设备事件交换是思科用于从它的IPS设备产品线收集日志消息的基于可扩展标记语言的协议。 E-Streamer:E-Streamer是Sourcefire公司为其IPS开发的专有协议。 选用以syslog方式采集日志数据非常方便,且具有下述原因: 第一,Syslog协议广泛应用在编程上,许多日志函数都已采纳syslog协议,syslog用于许多保护措施中。可以通过它记录任何事件。通过系统调用记录用户自行开发的应用程序的运行状况。研究和开发一些系统程序是日志系统的重点之一,例如网络设备日志功能将网络应用程序的重要行为向 syslog接口呼叫并记录为日志,大部分内部系统工具(如邮件和打印系统)都是如此生成信息的,许多新增的程序(如tcpwrappers和SSH)也是如此工作的。通过syslogd(负责大部分系统事件的守护进程),将系统事件可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录到远端设备上的事件。 第二,当今网络设备普遍支持syslog协议。几乎所有的网络设备都可以通过syslog协议,将日志信息以用户数据报协议(UDP)方式传送到远端服务器,远端接收日志服务器必须通过syslogd监听UDP 端口514,并根据syslog.conf配置文件中的配置处理本机,接收访问系统的日志信息,把指定的事件写入特定文件中,供后台数据库管理和响应之用。意味着可以让任何事件都登录到一台或多台服务器上,以备后台数据库用off-line(离线) 方法分析远端设备的事件。 第三,Syslog协议和进程的最基本原则就是简单,在协议的发送者和接收者之间不要求严格的相互协调。事实上,syslog信息的传递可以在接收器没有被配置甚至没有接收器的情况下开始。反之,在没有清晰配置或定义的情况下,接收器也可以接收到信息。 03 日志来源 日志来源主要分为两类:基于“推” 基于“拉” 对于基于“推”的日志来源,设备或者应用程序向本地磁盘或者通过网络发出消息。如果通过网络,你必须配备一个日志收集器来接收消息。3种主要的基于“推”来源是syslog、SNMP和windows事件日志。日志消息通过这些协议传输。从技术上说,windows事件日志包含协议、传输机制、存储和读取。 对于基于“拉”的日志来源,应用程序从来源拉取日志消息。这种方法几乎总是依赖客户-服务器模型。以这种方式运行的系统通常以专有格式保存日志数据。例如,Checkpoint提供OPSEC C程序库,开发人员可以用它编写应用程序,拉取Checkpoint防火墙日志。其他产品使用MSSQL、Qracle、Mysql等数据库存储数据。从数据库拉取日志稍微容易一些,可以用脚本或程序完成。 上面提到的三种最常见的日志来源协议,首先是syslog。 syslog最初是用于收集调试信息的,因此,它对于安全日志分析有一些限制,不是最优的,尽管如此,syslog已经成为了基于Linux的系统中记录应用程序事件的最常用方法。 SNMP设计用于满足网络管理员不断增长的需求。SNMP几乎集成到所有你能想到的网络中,包括许多网络安全设备。SNMP是查询和配置设备的一种协议。虽然SNMP协议整体来说不是一个日志记录系统,但是可以看作日志消息的类型。虽然许多网络设备能够通过syslog发送事件消息,但是有些设备不能,特别是旧设备,因此SNMP是从设备获得其他途径不能收集的事件信息的一种方式。 Microsoft在很久以前就决定要创造自己的日志生成和收集系统。这一系统被称作事件日志。现在的事件日志有一些高级特性。事件日志主要用于收集和查看两类日志: Windows日志 应用程序日志 Windows日志至少包括应用程序、安全和系统。最重要的是安全日志,登录、注销、资源访问记录的地方。一、系统日志: 记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。系统日志包括系统日志、应用程序日志和安全日志。 二、网站日志: 1.记录web服务器接收处理请求以及运行时错误等各种原始信息以.log结尾的文件。我们通过对日志进行统计、分析、综合,就能有效地掌握网站运行状况,发现和排除错误原因,了解客户访问分布等,更好的加强系统的维护和管理。 2.日志也是了解搜索引擎工作原理和搜索引擎对网页抓取频率的最佳途径。通过这个文件,可以了解搜索引擎什么时间、抓取了哪些页面,以及可以知道是主搜索蜘蛛还是从搜索蜘蛛抓取了您的网站等的信息。 3.通过不同的log日志级别来记录以往的操作行为,可以很轻易地分析得到: 4.通过分析网站日志Log文件我们可以看到用户、搜索引擎蜘蛛访问网站和管理人员操作的行为数据,这些数据能让我们分析出用户和蜘蛛对网站的偏好以及网站安全操作及健康情况。因此在网站日志分析中,我们主要需要分析的是蜘蛛行为和操作行为。5.在分析日志时,对于单日日志文件我们需要分析的内容有:访问次数、停留时间、抓取量、目录抓取统计、页面抓取统计、蜘蛛访问IP、HTTP状态码、蜘蛛活跃时段、蜘蛛爬取路径等;对于多日日志文件我们需要分析的内容有:蜘蛛访问次数趋势、停留时间趋势、整体抓取趋势、各目录抓取趋势、抓取时间段、蜘蛛活跃周期等。 网站日志数据分析解读: 1、访问次数、停留时间、抓取量 从这三项数据中我们可以得知:平均每次抓取页面数、单页抓取停留时间和平均每次停留时间。 平均每次抓取页面数=总抓取量/访问次数 单页抓取停留=每次停留/每次抓取 平均每次停留时间=总停留时间/访问次数从这些数据我们可以看出蜘蛛的活跃程度、亲和程度、抓取深度等,总访问次数、停留时间、抓取量越高、平均抓取页面、平均停留时间,表明网站页面越受搜索引擎喜欢。而单页抓取停留时间表明网站页面访问速度,时间越长,表明网站访问速度越慢,对搜索引擎抓取收录较不利,我们应尽量提高网页加载速度,减少单而立停留时间,让爬虫资源更多的去抓取收录。 2、目录抓取统计通过日志分析我们可以看到网站哪些目录受蜘蛛喜欢、抓取目录深度、重要页面目录抓取状况、无效页面目录抓取状况等。对于重要目录,我们需要通过内外调整增加权重及爬取;对于无效页面,在robots.txt中进行屏蔽。 3、访问状态码蜘蛛经常出现的状态码如301、404等,出现这些状态码要及时处理,以避免对网站造成坏的影响。 4、蜘蛛爬取路径 在网站日志中我们可以跟踪到特定IP的访问路径,则能发现对于本网站结构下蜘蛛的爬取路径偏好。由此,我们可以适当的引导蜘蛛的爬取路径,让蜘蛛更多的爬取重要、有价值、新更新页面。其中爬取路径中我们可以分析页面物理结构路径偏好以及url逻辑结构爬取偏好。 04 日志存储技术 日志的存储和快速检索分析是企业中的一个关键问题。中小企业保存的日志记录会很快地增长到TB或PB级。这些数据在企业中会以各种不同的格式存储。 开发自己的日志保存策略时,应该审视以下各项: 1)评估适用的依从性需求: 在当今的许多行业中,诞生了一大批健全的依从性需求。这方面的例子包括支付卡行业数据安全标准(PCI DSS)。它规定了非常具体的日志保存周期--1年。PCI DSS涉及到日志需求的内容我在《日志管理与分析(二)》中会涉及到。 2)评估企业的风险态势: 内部和外部的风险驱动网络不同部分的保存周期。对企业来说,每个风险领域的时间长度以及日志的重要性可能有很大的不同。如果你的日志主要用于内部威胁调查,则需要较长的保存周期。因为事故常常是多年都未曾发现的。 3)关注各种日志来源和生成日志的大小: 防火墙、服务器、数据库、web代理服务,不仅基于需要,也基于典型日志体积及每个日志记录的大小和类型。各种设备或应用程序生成的日志体积有很大的不同,例如,主防火墙会生成大量的日志内容,因此为了满足此数据的长期保存需求,通常只存储30天的日志。然而,应该仔细评估某些企业的依从性需求以及主防火墙的关键程度,决定是否采用更长的保存周期。 4)评估可用的存储选项: 日志存储选项包括硬盘、DVD、WORM、磁带、RDBMS、日志特定存储,以及基于云的存储。这方面的决策主要取决于价格、容量、访问速度,最重要的是以合理的周期得到正确日志记录的能力。 企业中的日志保存的时间和空间需求是压倒一切的第一需求。 4.1日志存储格式 我们的网络设备、应用程序以及操作系统产生多种不同的日志格式,在许多情况下,日志会被存储为基于文本、二进制或者压缩的格式。 4.1.1 基于文本的日志文件 基于文本的日志记录是目前最丰富的日志类型,这归功于生成这类日志时较低的系统成本,以及现有的许多计算机语言中包含了可以很轻松地生成基于文本日志的框架。许多流行的系统采用了基于文本的日志文件格式,因为这种格式有着许多的优点:应用程序写入基于文本的日志文件,从CPU以及I/O资源来说代价很低。 文本格式是典型可读格式,可用常规文本工具(如grep和awk,都是各种lunix操作系统变种的固有工具)处理和查阅。 许多常见的基于文本的日志格式已经存在,例如syslog。使得运营和安全团队易于使用一种通用方法来集中化以及解析日志,创造一个更完善的日志管理系统。 未来5、7甚至10年后阅读这些日志的工具的可用性。从现在开始的10年内,保留一台windows NT服务器来阅读遗留的iis6.0web服务器日志,并进行确证分析,几乎是不可能的。 二进制日志文件在磁盘空间利用上很高效,然而,无法进行很大的压缩。压缩的二进制文件的大小可能是原生文件的90%。相比之下,基于文本的文件压缩后可能仅占原文件的10%左右。与文本文件日志记录相比,二进制文件所需的存储空间会比较大。 示例:二进制日志的内容如下图所示:完全地隐藏日志记录行为; 隐藏日志记录,并伪造一个日志记录守护进程,满足攻击者的心理。 1. 隐藏日志记录 使用内核能力或linux专用可加载内核模块(LKM)来隐藏守护进程是众所周知的。本质上,当我们谈论日志记录的rootkit技术时,通常有两个额外的选择:可以隐藏其他运行进程(例如我们的日志记录进程)的单独隐藏模块或者通用隐藏程序。大多数的rootkit都基于这一原理。 专用隐藏登录模块,Honeynet Project的Sebek工具基于此方法。这种方法也就可以隐藏其他程序。 最后要注意一点,如果攻击者采用类似原理的rootkit,他仍然可能干扰我们对日志记录的隐藏。 2. 利用误导隐藏日志记录 如果我们运用上述技术,并留下默认的日志记录基础设施,让攻击者去杀死他,大部分攻击者都很可能不在进一步攻击,并认为没有其他的日志机制。 这只需要创建一个单独的syslog实例,并连接到基础设施,保留默认的实例,启用一些功能,使他不会干扰真正的日志记录。 06 简单分析技术 人工阅读日志应该保留,用作地狱中的惩罚。在缺乏好的自动化工具时,人们总是不得不进行人工审核。 为什么需要进行日志分析:依从性和监管的要求 了解网络条件 基础设施ROI 安全度量 事故响应 6.1简单日志查看器 6.1.1 实时审核 在大部分unix和linux变种上,有多种工具能够辅助日志分析。有些在实时日志查看上有所帮助,而其他则有助于审核历史日志。 从经典工具开始: # tail -f/var/log/messages将单独的事件当做XML处理。 用事件订阅功能,在远程主机上订阅事件。 保存过滤器为自定义视图。 在应用程序日志中记录你的自定义事件。 运行一个任务,对事件作出相应。 6.1.3简单日志操纵 在Linux上用tail和less实时查看日志,并用许多文件查看器(cat、more或者less)查看存储的文件。 使用简单工具的目标: 1)日志过滤:我们只想看到特定的内容。 2)日志重新格式化:修改我们查看的方式。3)日志总结:查看紧凑的视图。 如上所述,tail和grep结合可以进行简单的过滤,grep还有助于在大的日志文件上进行更为高级的过滤: # grep -ev ‘ssh|telnet’ /var/log/messages 查看除了包含ssh和telnet之外的所有信息。 # grep -f patterns /var/log/messages 查看匹配文件’patterns ’中模式的所有消息。 改进grep的其他命令还有tail和head。他们用于查看日志的开头部分和结束部分。 Log Parser和Log ParserLizard:筛查windows日志的最好手段 在windows上,事件查看器可以过滤、排序日志和将日志提取到文件中。在典型的windows系统上,过滤限于:事件类型 事件分类 事件ID 源计算机 源应用程序或者系统组件名称 用户名称 日期和事件范围 为了进行windows日志的更高级分析,我们可以使用LogParser和Log Parser Lizard。Log Parser是一个MicrosoftWindows插件程序,为你提供一个类似Sql的Windows事件日志接口。LogParser本身就是一个命令行工具,在分析工作中难以使用,这就是Log Parser的用武之地。 6.1.4人工日志审核的局限性 到现在已经很明显,人工和使用简单的工具和命令进行的日志审核无疑在日志分析中占据一席之地。但是不应该依赖它作为日志分析的主要机制。 人工日志审核有明显的局限性:人工日志审核无法随着日志文件尺寸的增大而伸缩:我们查看了8行日志,但是现实的任务是查看800万行日志。在大规模的企业环境中,日志常常以每秒20000条记录的速度产生。在比这低得多的日志记录速度上,人工日志分析就已经无法继续且变得越来越低效。 人工日志审核只能用于简单的日志:告诉你具体的故障部位时,可以人工解读它,但是在日志来源较为模糊且没有文档时,这种方法必然失败。解读每一行的工作量将从一秒钟的快速思考变成几个小时的在线和其他来源研究。 简单的工具和人工审核可能无法获得计算环境中所发生情况的全貌,而更高级的工具能够从日志数据中还原这些情况。 除了令人困惑和模糊的格式之外,在许多情况下分析需要关联来自多个源的日志。这种活动确实可以人工进行,但是需要的时间将大大增加(与只查看一个日志文件相比)。这种关联最好留给自动工具完成。 最后,这种活动通常极其乏味。而且通常效率很低 可以看出,人工日志审核有明显的局限性,在日志管理与分析(二)会有关于日志分析工具。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |