Windows应急响应和系统加固(10)——Nginx日志分析以及JBoss日志分析
nginx日志分析以及jboss日志分析
一、使用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分析。
推荐阅读
-
Windows应急响应和系统加固(7)——Windows操作系统日志分析
-
Windows应急响应和系统加固(8)—— Windows IIS日志提取和安全检查分析
-
Windows应急响应和系统加固(12)——SQL Server/MySQL/Oracle日志提取和安全分析
-
Windows应急响应和系统加固(11)——Weblogic各类漏洞的日志分析和调查取证
-
Windows应急响应和系统加固(10)——Nginx日志分析以及JBoss日志分析
-
Windows应急响应和系统加固(9)——Windows Apache日志提取和安全分析
-
Windows应急响应和系统加固(10)——Nginx日志分析以及JBoss日志分析
-
Windows应急响应和系统加固(7)——Windows操作系统日志分析
-
Windows应急响应和系统加固(9)——Windows Apache日志提取和安全分析
-
Windows应急响应和系统加固(11)——Weblogic各类漏洞的日志分析和调查取证