一、使用E.L.K安全分析Nginx日志 1.Nginx日志介绍: Nginx是高性能的、轻量级Web、反向代理和电子邮件代理服务器,由俄罗斯访问量第二的Rambler.ru站点开发; 简称"ngx",由于出色的性能,低资源消耗,在高并发应用系统中应用广泛; Web Server领域,在互联网、电商、能源、交通行业广泛应用(新浪、网易、腾讯等); 与Apache并驾齐驱,完成任务相似,因此日志文件的特征也相似。 2.Nginx日志分析: nginx日志文件的轮询方法,与apache类似; nginx日志文件分为:访问日志(access.log)、错误日志(error.log); 默认日志目录在安装目录里的logs,可在nginx.conf配置文件,查看到具体日志目录和日志配置的字段和格式(NGINX combined log format)等信息。 分析的原则: <1>.事件发生的时间: 以timestamp为基础,为时间轴,带着时间戳印记的nginx日志,导入分析平台或程序进行分析; 确定安全事件发生的具体时间窗口,定位时间点。 <2>.件事如何发生的: 关注Get、POST、PUT等HTTP请求的方法; Webshell、SQL注入、XSS跨站脚本攻击、反序列化漏洞、远程命令执行、目录穿越(cd ../../../../../etc/passwd等攻击,在URI里传参数,尤其要留意传入的参数,e.g.ipconfig、ifconfig、whoami、id、alert、union、 select *等; 服务器的响应状态:status codes,500、501、404、200、302、401等; 服务器发送的字节数:bytes(木马、CC、DDos攻击)。 <3>.发生攻击的具体位置: 关注请求的资源地址URI,从深度(shell上传)和广度(敏感目录文件)上面留意; 请求资源所传递的参数(注入): 关注user agents用户客户端的信息(脚本); 请求资源的客户端IP(client_ip); 服务器响应的IP,如果被植入木马,可以快速前往该服务器进行调查取证和处理; Referer引用和推荐站点的位置,例如,XSS、CSRF,跨域类型的攻击。 3.使用E.L.K安全分析Nginx日志: <1>.E.L.K介绍: E.L.K,是Elasticsearch、Logstash、Kibana简称,三者是核心套件。 Elasticsearch,实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构,提供高效搜索功能、可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上; Logstash,是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括:访问日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括syslog、消息传递(Redis、RabbitMQ)和 JMX,它能够以多种方式输出数据,包括电子邮件、websockets、Elasticsearch; Kibana,是一个基于Web图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊 的方式查询和过滤数据。 <2>.elasticsearch相关的信息: elasticsearch data的存放目录:/data/es-data; elasticsearch的配置文件:/etc/elasticsearch/elasticsearch.yml; 启动elasticsearch服务:/etc/init.d/elasticsearch start; 和elasticsearch交互:curl -i -XGET 'IP:9200/_count?pretty'(9200为elasticsearch的默认端口) <3>.LogStash的相关信息: 应用所在目录:/usr/share/logstash/; logstash配置文件所在位置:/etc/logstash/conf.d; nginx日志字段的格式处理:/usr/share/logstash/patterns 启动logstash处理nginx日志:logstash -f /etc/logstash/conf.d/nginx3.conf <4>.Kibana的相关信息: 应用所在目录:/usr/local/kibana; kibana的配置文件:/usr/local/kibana/config/kibana.yml; 开启:/usr/local/kibana/bin/kibana <5>.Nginx日志全球使用分布:
二、JBoss日志分析与调查取证 1.JBoss日志介绍: JBoss是一个开源的J2EE应用服务,在国内、在全球,应用都很广泛; JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用; JBoss有多个版本:JBoss AS4、AS5、AS6、AS7等; 是一个管理EJB的中间件、容器和服务器,支持EJB 1.1、EJB 2.0、EJB3规范; JBoss AS是JBoss Enterprise Application Platform的上游商业应用的基础,为了使两个产品具备差异化,避免用户混淆,2016年10月,JBoss AS修改名字为:WildFly。 2.日志分析: 查看上文Nginx日志分析原则。 3.JBoss漏洞介绍: JBoss爆发的漏洞数量与其他著名的中间件(Weblogic、Jenkins、WebSphere等)相比,数量相对较少。然而近几年Java反序列化漏洞肆虐,JBoss亦深受其害。 <1>.JBoss高危漏洞主要类型: 利用未授权访问进入JBoss后台进行文件上传的漏洞(Getshell): CVE-2007-1036、CVE-2010-0738、CVE-2005-5750。 利用Java反序列化远程代码执行的漏洞: CVE-2015-4852和CVE-2015-7501(Apache Commons Collections基础库反序列化)、CVE-2017-7504、CVE-2017-12149、CVE-2013-4810 JBoss Seam2模板注入漏洞(CVE-2010-1871)。 <2>.JBoss在产品存在的主要漏洞情况: Jboss AS4: jmx-console弱密码或密码泄露导致getshell; admin-console弱密码或者密码泄露导致getshell. Jboss AS5: jmx-console弱密码或密码泄露导致getshell; admin-console弱密码或者密码泄露导致getshell; CVE-2013-4810(JMXInvokerServlet、EJBInvokerServlet远程命令执行漏洞); Jboss java反序列化漏洞。 Jboss AS6: Jboss java反序列化漏洞(e.g. CVE-2017-12149); jmx-console弱密码或密码泄露导致getshell,也叫RMI远程方法调用getshell; admin-console弱密码或者密码泄露导致getshell; Jboss AS7: Java反序列化漏洞; console后台弱密码或密码泄露导致getshell。 4.JBoss日志分析: <1>.JBoss 6.1.0,日志配置文件:(AS4、5类似): 位置:C:\jboss-6.1.0.Final\server\default\deploy\jboss-logging.xml(7默认记录访问日志的功能没启用。) <2>.配置字段解释: 配置字段示例: <Valve className="org.apache.catalina.valves.AccessLogValve" prefix="localhost_access_log." suffix=".log" pattern="%h %l %u %t %r %s %b" directory="${jboss.server.home.dir}/log" resolveHosts="false" /> 分析: lassName:实现的Java类名,设置成:org.apache.catalina.valves.AccessLogValve; directory:存放日志文件的目录; pattern:需要记录的日志信息的字段、格式、布局,如果是common或者combined,说明是使用的标准记录格式,也有自定义的格式; prefix: 日志文件名的前缀,如果没有指定,缺省值是access_log.(要注意后面有个小点); resolveHosts:将远端主机的IP通过DNS查询转换成主机名,设为true。如果为false,忽略DNS查询,报告远端主机的IP地址; sufix:日志文件的后缀名。(sufix=”.log”)(要注意后面有个小点); rotatable:缺省值为true,决定日志是否要轮询和翻转,如果为false则永不翻转,并且忽略fileDateFormat,谨慎使用; condition:打开条件日志; fileDateFormat:允许在日志文件名称中使用定制的日期格式,日志的格式也决定了日志文件翻转的频率。 %a :远端IP %A :本地IP %b: 发送的字节数,不包含HTTP头,如果为0,使用”-” %B: 发送的字节数,不包含HTTP头 %h: 远端主机名(如果resolveHosts=false),远端的IP %H:请求协议 %l :从identd返回的远端逻辑用户名,总是返回’-’ %m: 请求的方法 %p :收到请求的本地端口号 %q :查询字符串 %r 请求的第一行 %s 响应的状态码 %S 用户的sessionID %t 日志和时间,使用通常的log格式 %u 认证以后的远端用户(如果存在的话,否则为’-’) %U 请求的URI路径 %v 本地服务器的名称 %D 处理请求的时间,以毫秒为单位 %T 处理请求的时间,以秒为单位 5.使用E.L.K安全分析Nginx日志: 参考上文Nginx分析。 |
|