Nginx日誌分析以及JBoss日誌分析 一、使用E.L.K安全分析Nginx日誌 1.Nginx日誌介紹: Nginx是高性能的、輕量級Web、反向代理和電子郵件代理伺服器,由俄羅斯訪問量第二的Rambler.ru站點開發; 簡稱"ngx",由於出色的性能,低資源消耗,在高併發應用系統中應用廣泛; ...
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分析。