使用Filebeat采集日志结合logstash过滤出你想要的日志
使用外国大佬的开源项目,基本不要改什么就可快速搭建一套单机版ELK用于练手。
注意 :logstash已被我改造,如果以该项目构建ELK记得更改logstashconf。
ELK项目github链接: https://githubcom/deviantony/docker-elk
这里对es不做过多描述,主要针对filebeat和logstash讲解。
Filebeat是一个轻量级的托运人,用于转发和集中日志数据。Filebeat作为代理安装在服务器上,监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。
Filebeat的工作原理:启动Filebeat时,它会启动一个或多个输入,这些输入将查找您为日志数据指定的位置。对于Filebeat找到的每个日志,Filebeat启动一个收集器。每个收集器为新内容读取单个日志,并将新日志数据发送到libbeat,libbeat聚合事件并将聚合数据发送到您为Filebeat配置的输出。
官方流程图如下:
Logstash是一个具有实时流水线功能的开源数据收集引擎。Logstash可以动态统一来自不同来源的数据,并将数据标准化为您选择的目的地。为各种高级下游分析和可视化用例清理和民主化所有数据。
Logstash的优势:
接着进入正文,先讲下我的需求。
ELK以搭好,由elasticsearch+logstash+kibana 组成,
本文的filebeat作用是采集特定目录下的日志,并将其发送出去,但是它只能采集并无法对数据进行筛选,这时候就用到logstash了,logstash拥有众多插件可提供过滤筛选功能,由于logstash本身是基于jdk的,所以占用内存较大,而filebeat相较下,占用的内存就不是很多了。有图有真相:
所以可采用如下的方案采集筛选日志:
参考配置,只列出我用到的,详情见官方文档:
注:60以上该filebeatyml需要挂载到/usr/share/filebeat/filebeatyml,另外还需要挂载/usr/share/filebeat/data/registry 文件,避免filebeat容器挂了后,新起的重复收集日志。
我用到的logstash并不是用来采集日志的,而是对日志进行匹配筛选,所以不要跟随项目启动,只需单独启动,暴露5044端口,能接收到filebeat发送日志即可,也就是说,它只是起到一个加工并转发给elasticsearch的作用而已。
配置参考:
备注:
上面我自定义的格式是:
测试项目以上传到github
地址: https://githubcom/liaozihong/ELK-CollectionLogs
参考链接:
ELK 之Filebeat 结合Logstash
Grok Debugger
ELK logstash 配置语法(24th)
Filebeat官方文档
Logstash官方文档
http://wenkubaiducom/view/8053931cff00bed5b9f31d8ahtml
详细步骤
建立一个中央日志服务器
1建立中央日志服务器前的准备工作
配置良好的网络服务(DNS和NTP)有助于提高日志记录工作的精确性。在默认情况下,当有其他机器向自己发送日志消息时,中央日志服务器将尝试解析该机器的FQDN(fullyqualifieddomainname,完整域名)。(你可以在配置中央服务器时用“-x”选项禁止它这样做。)如果syslog守护进程无法解析出那个地址,它将继续尝试,这种毫无必要的额外负担将大幅降低日志记录工作的效率。类似地,如果你的各个系统在时间上不同步,中央日志服务器给某个事件打上的时间戳就可能会与发送该事件的那台机器打上的时间戳不一致,这种差异会在你对事件进行排序分析时带来很大的困扰;对网络时间进行同步有助于保证日志消息的时间准确性。如果想消除这种时间不同步带来的麻烦,先编辑/etc/ntpconf文件,使其指向一个中央时间源,再安排ntpd守护进程随系统开机启动就可以了。
2配置一个中央日志服务器
只须稍加配置,就可以用syslog实现一个中央日志服务器。任何一台运行syslog守护进程的服务器都可以被配置成接受来自另一台机器的消息,但这个选项在默认情况下是禁用的。在后面的讨论里,如无特别说明,有关步骤将适用于包括SUSE和RedHat在内的大多数Linux发行版本。我们先来看看如何激活一个syslog服务器接受外来的日志消息:
1 编辑/etc/sysconfig/syslog文件。
在“SYSLOGD_OPTIONS”行上加“-r”选项以允许接受外来日志消息。如果因为关于其他机器的DNS记录项不够齐全或其他原因不想让中央日志服务器解析其他机器的FQDN,还可以加上“-x”选项。此外,你或许还想把默认的时间戳标记消息(--MARK--)出现频率改成比较有实际意义的数值,比如240,表示每隔240分钟(每天6次)在日志文件里增加一行时间戳消息。日志文件里的“--MARK--”消息可以让你知道中央日志服务器上的syslog守护进程没有停工偷懒。按照上面这些解释写出来的配置行应该是如下所示的样子:
SYSLOGD_OPTIONS="-r-x-m240"
2重新启动syslog守护进程。修改只有在syslog守护进程重新启动后才会生效。如果你只想重新启动syslog守护进程而不是整个系统,在RedHat机器上,执行以下两条命令之一:
/etc/rcd/initd/syslogstop;/etc/rcd/initd/syslogstart
/etc/rcd/initd/syslogrestart
3如果这台机器上运行着iptables防火墙或TCPWrappers,请确保它们允许514号端口上的连接通过。syslog守护进程要用到514号端口。
4为中央日志服务器配置各客户机器
让客户机把日志消息发往一个中央日志服务器并不困难。编辑客户机上的/etc/syslogconf文件,在有关配置行的操作动作部分用一个“@”字符指向中央日志服务器,如下所示:
另一种办法是在DNS里定义一个名为“loghost”的机器,然后对客户机的syslog配置文件做如下修改(这个办法的好处是:当你把中央日志服务器换成另一台机器时,不用再修改每一个客户机上的syslog配置文件):
authpriv@loghost
接下来,重新启动客户机上的syslog守护进程让修改生效。让客户机在往中央日志服务器发送日志消息的同时继续在本地进行日志工作仍有必要,起码在调试客户机的时候不必到中央日志服务器查日志,在中央日志服务器出问题的时候还可以帮助调试。
Web日志记录了web服务器接收处理请求,以及其运行时的错误等各种原始信息。通过对日志进行统计、分析、综合,就能有效地掌握服务器的运行状况,发现和排除错误、了解客户访问分布等,方便管理员更好地加强服务器的维护和管理。另外,Web日志也是判断服务器安全的一个重要依据,通过其可以分析判断服务器是否被入侵,并通过其可以对攻击者进行反向跟踪等。因此,对于Web日志攻击者往往以除之而后快。
一、攻击者清除日志的常用伎俩 1、Web服务器系统中的日志 以WindowsServer 2003平台的Web服务器为例,其日志包括:安全日志、系统日志、应用程序日志、WWW日志、FTP日志等。对于前面的三类日志可以通过“开始→运行”输入eventvwrmsc打开事件查看器进行查看,WWW日志和FTP日志以log文件的形式存放在硬盘中。具体来说这些日志对应的目录和文件为: (1)安全日志文件:C:WINDOWSsystem32configSecEventEvt (2)系统日志文件:C:WINDOWSsystem32configSysEventEvt (3)应用程序日志文件:C:WINDOWSsystem32configAppEventEvt (4)FTP日志默认位置:C:WINDOWSsystem32LogfilesMSFTPSVC1 (5)WWW日志默认位置:C:WINDOWSsystem32LogfilesW3SVC12、非法清除日志 上述这些日志在服务器正常运行的时候是不能被删除的,FTP和WWW日志的删除可以先把这2个服务停止掉,然后再删除日志文件,攻击者一般不会这么做的。系统和应用程序的日志是由守护服务Event Log支持的,而它是没有办法停止的,因而是不能直接删除日志文件的。攻击者在拿下Web服务器后,一般会采用工具进行日志的清除,其使用的工具主要是CL和CleanIISLog。 (1)利用CL彻底清除日志 这个工具可以彻底清除IIS日志、FTP日志、计划任务日志、系统日志、安全日志等,使用的操作非常简单。 在命令下输入“cl -logfiles 127001”就可以清除Web服务器与Web和FTP和计划任务相关的日志。其原理就是先把FTP、WWW、Task Scheduler服务停止再删除日志,然后再启动三个服务。(图2)celialin 该工具还可以选择性地清除相应的日志,比如输入“cl -eventlog All”就会清除Web服务器中与系统相关的日志。另外,此工具支持远程清理,这是攻击者经常采用的方法。首先他们通过命令“netuse ipipc$ 密码/user:用户名”在本地和服务器建立了管理员权限的IPC管理连接,然后用“CL -LogFile IP”命令远程清理服务日志。(图3)
(2)利用CleanIISLog选择性地清理IIS日志 比如攻击者通过Web注入方式拿下服务器,这样他的入侵痕迹(IP地址)都留在了IIS日志里。他们利用该工具只把其在IIS日志中的IP地址进行清除,这样就不会让对方管理员起疑心。 在命令中执行“CleanIISLog IP”就可以清除IIS日志中有关该IP的连接记录同时保留其它IP记录。如果管理做了防范,比如更改了IIS日志的路径,攻击者在确定了日志的路径后,也可以通过该工具进行清除,其操作是,在命令行下执行“CleanIISLog IIS日志路径 IP地址”来清除指定IIS路径的IP记录。(图4)二、打造日志服务器保护日志 通过上面的演示可以看到,如果将服务器的日志保存在本地是非常不安全的。而且,如果企业中的服务器非常多的话,查看日志会非常麻烦。基于以上考虑,打造专门的日志服务器,即有利于服务器日志的备份又有利用于集中管理。 笔者的做法是,搭建一个FTP服务器用来日志的集中和备份,可以在服务器中通过专门的工具或者计划任务来实现日志的自动上传备份。这部分内容比较简单,笔者就不演示了。其实不仅可以将服务器日志备份到专门的日志服务器上,日志服务器还可以实现网络设备的日志备份。 以路由器为例,首先在其上进行设置,指定记录日志的服务器,最后通过FTP协议将日志数据传输到FTP服务器上。搭建FTP服务器可以利用IIS的FTP或者Serv-u,但是笔者觉得IIS的FTP在权限分配上不够方便,而Serv-u有漏洞太多,因此推荐TYPSoft FTP。 1、架设日志服务器 TYPSoft FTP是绿色软件,下载解压后双击ftpservexe文件,启动typsoft fip主程序。启动后,点击主界面菜单中的“设定→用户”,建立新账户log。接着在用户界面中设置log账号所对应的用户密码和日志保存的目录,最后点击“保存”按钮使设置生效,这样日志服务器就架好了。(图5)2、日志服务器的指定 当搭建好日志服务器后,只需要到相应的网络设置中通过SYSLOG或LOG命令指定要保存日志的服务器地址即可,同时加上设置好的账户名和密码即可完成传输配置工作。下面笔者就以Cisco6509设备上配置及指定日志服务器为例。 正常登录到设备上然后在全局配置模式下输入logging 192168110,它的意思是在路由器上指定日志服务器地址为192168110。接着输入logging trap,它的意思是设置日志服务器接收内容,并启动日志记录。trap后面可以接参数0到7,不同级别对应不同的情况,可以根据实际情况进行选择。如果直接使用logging trap进行记录的话是记录全部日志。配置完毕后路由交换设备可以发送日志信息,这样在第一时间就能发现问题并解决。日志服务器的IP地址,只要是能在路由交换设备上ping通日志服务器的IP即可,不一定要局限在同一网段内。因为FTP属于TCP/IP协议,它是可以跨越网段的。(图6) 总结:本文从攻击者的角度解析对Web日志的删除和修改,目的是让大家重视服务器日志的保护。另外,搭建专门的日志服务器不仅可以实现对日志的备份,同时也更利用对日志的集中管理。
1、相信经常进行编程的朋友都知道,当程序出错的时候可以查看服务器日志来了解解决错误。那么,以Win2008为例,讲述怎么查看服务器日志。
2、方法/步骤:
(1)进Win2008服务器,点击开始,找到控制面板。
(2)点击进入控制面板,找到管理工具。
(3)找到管理工具,点击事件查看器。
(4)进入事件查看器,展开Windows日志,点击系统,右侧会显示出信息。
(5)查看事件查看器的右方,我们会看到属性选项,红框中已经圈出。
(6)点击属性后,我们会看到服务器日志的路径。
(7)打开C:\Windows\System32\winevt,再打开Logs文件夹,就会看到服务器日志。
0条评论