一,、使用E.L.K安全分析Nginx日志 1.Nginx日志介紹: Nginx是高性能的、輕量級Web,、反向代理和電子郵件代理服務(wù)器,,由俄羅斯訪問量第二的Rambler.ru站點(diǎn)開發(fā); 簡稱"ngx",,由于出色的性能,低資源消耗,,在高并發(fā)應(yīng)用系統(tǒng)中應(yīng)用廣泛,; Web Server領(lǐng)域,在互聯(lián)網(wǎng),、電商,、能源、交通行業(yè)廣泛應(yīng)用(新浪,、網(wǎng)易,、騰訊等); 與Apache并駕齊驅(qū),,完成任務(wù)相似,,因此日志文件的特征也相似。 2.Nginx日志分析: nginx日志文件的輪詢方法,,與apache類似,; nginx日志文件分為:訪問日志(access.log)、錯(cuò)誤日志(error.log),; 默認(rèn)日志目錄在安裝目錄里的logs,,可在nginx.conf配置文件,查看到具體日志目錄和日志配置的字段和格式(NGINX combined log format)等信息,。 分析的原則: <1>.事件發(fā)生的時(shí)間: 以timestamp為基礎(chǔ),,為時(shí)間軸,帶著時(shí)間戳印記的nginx日志,,導(dǎo)入分析平臺(tái)或程序進(jìn)行分析,; 確定安全事件發(fā)生的具體時(shí)間窗口,定位時(shí)間點(diǎn),。 <2>.件事如何發(fā)生的: 關(guān)注Get,、POST、PUT等HTTP請求的方法,; Webshell,、SQL注入、XSS跨站腳本攻擊,、反序列化漏洞,、遠(yuǎn)程命令執(zhí)行、目錄穿越(cd ../../../../../etc/passwd等攻擊,,在URI里傳參數(shù),,尤其要留意傳入的參數(shù),e.g.ipconfig,、ifconfig,、whoami、id,、alert,、union、 select *等,; 服務(wù)器的響應(yīng)狀態(tài):status codes,,500、501,、404,、200、302,、401等,; 服務(wù)器發(fā)送的字節(jié)數(shù):bytes(木馬、CC,、DDos攻擊),。 <3>.發(fā)生攻擊的具體位置: 關(guān)注請求的資源地址URI,從深度(shell上傳)和廣度(敏感目錄文件)上面留意,; 請求資源所傳遞的參數(shù)(注入): 關(guān)注user agents用戶客戶端的信息(腳本),; 請求資源的客戶端IP(client_ip),; 服務(wù)器響應(yīng)的IP,如果被植入木馬,,可以快速前往該服務(wù)器進(jìn)行調(diào)查取證和處理,; Referer引用和推薦站點(diǎn)的位置,例如,,XSS,、CSRF,跨域類型的攻擊,。 3.使用E.L.K安全分析Nginx日志: <1>.E.L.K介紹: E.L.K,,是Elasticsearch、Logstash,、Kibana簡稱,,三者是核心套件。 Elasticsearch,,實(shí)時(shí)全文搜索和分析引擎,,提供搜集、分析,、存儲(chǔ)數(shù)據(jù)三大功能,;是一套開放REST和JAVA API等結(jié)構(gòu),提供高效搜索功能,、可擴(kuò)展的分布式系統(tǒng),。它構(gòu)建于Apache Lucene搜索引擎庫之上; Logstash,,是一個(gè)用來搜集,、分析、過濾日志的工具,。它支持幾乎任何類型的日志,,包括:訪問日志,、錯(cuò)誤日志和自定義應(yīng)用程序日志,。它可以從許多來源接收日志,這些來源包括syslog,、消息傳遞(Redis,、RabbitMQ)和 JMX,它能夠以多種方式輸出數(shù)據(jù),,包括電子郵件,、websockets、Elasticsearch,; Kibana,,是一個(gè)基于Web圖形界面,,用于搜索、分析和可視化存儲(chǔ)在 Elasticsearch指標(biāo)中的日志數(shù)據(jù),。它利用Elasticsearch的REST接口來檢索數(shù)據(jù),,不僅允許用戶創(chuàng)建他們自己的數(shù)據(jù)的定制儀表板視圖,還允許他們以特殊 的方式查詢和過濾數(shù)據(jù),。 <2>.elasticsearch相關(guān)的信息: elasticsearch data的存放目錄:/data/es-data,; elasticsearch的配置文件:/etc/elasticsearch/elasticsearch.yml; 啟動(dòng)elasticsearch服務(wù):/etc/init.d/elasticsearch start,; 和elasticsearch交互:curl -i -XGET 'IP:9200/_count?pretty'(9200為elasticsearch的默認(rèn)端口) <3>.LogStash的相關(guān)信息: 應(yīng)用所在目錄:/usr/share/logstash/,; logstash配置文件所在位置:/etc/logstash/conf.d; nginx日志字段的格式處理:/usr/share/logstash/patterns 啟動(dòng)logstash處理nginx日志:logstash -f /etc/logstash/conf.d/nginx3.conf <4>.Kibana的相關(guān)信息: 應(yīng)用所在目錄:/usr/local/kibana,; kibana的配置文件:/usr/local/kibana/config/kibana.yml,; 開啟:/usr/local/kibana/bin/kibana <5>.Nginx日志全球使用分布:
二、JBoss日志分析與調(diào)查取證 1.JBoss日志介紹: JBoss是一個(gè)開源的J2EE應(yīng)用服務(wù),,在國內(nèi),、在全球,應(yīng)用都很廣泛,; JBoss代碼遵循LGPL許可,,可以在任何商業(yè)應(yīng)用中免費(fèi)使用; JBoss有多個(gè)版本:JBoss AS4,、AS5,、AS6、AS7等,; 是一個(gè)管理EJB的中間件,、容器和服務(wù)器,支持EJB 1.1,、EJB 2.0,、EJB3規(guī)范; JBoss AS是JBoss Enterprise Application Platform的上游商業(yè)應(yīng)用的基礎(chǔ),,為了使兩個(gè)產(chǎn)品具備差異化,,避免用戶混淆,2016年10月,,JBoss AS修改名字為:WildFly,。 2.日志分析: 查看上文Nginx日志分析原則。 3.JBoss漏洞介紹: JBoss爆發(fā)的漏洞數(shù)量與其他著名的中間件(Weblogic,、Jenkins,、WebSphere等)相比,數(shù)量相對較少,。然而近幾年Java反序列化漏洞肆虐,,JBoss亦深受其害,。 <1>.JBoss高危漏洞主要類型: 利用未授權(quán)訪問進(jìn)入JBoss后臺(tái)進(jìn)行文件上傳的漏洞(Getshell): CVE-2007-1036、CVE-2010-0738,、CVE-2005-5750,。 利用Java反序列化遠(yuǎn)程代碼執(zhí)行的漏洞: CVE-2015-4852和CVE-2015-7501(Apache Commons Collections基礎(chǔ)庫反序列化)、CVE-2017-7504,、CVE-2017-12149,、CVE-2013-4810 JBoss Seam2模板注入漏洞(CVE-2010-1871)。 <2>.JBoss在產(chǎn)品存在的主要漏洞情況: Jboss AS4: jmx-console弱密碼或密碼泄露導(dǎo)致getshell; admin-console弱密碼或者密碼泄露導(dǎo)致getshell. Jboss AS5: jmx-console弱密碼或密碼泄露導(dǎo)致getshell,; admin-console弱密碼或者密碼泄露導(dǎo)致getshell,; CVE-2013-4810(JMXInvokerServlet、EJBInvokerServlet遠(yuǎn)程命令執(zhí)行漏洞),; Jboss java反序列化漏洞,。 Jboss AS6: Jboss java反序列化漏洞(e.g. CVE-2017-12149); jmx-console弱密碼或密碼泄露導(dǎo)致getshell,,也叫RMI遠(yuǎn)程方法調(diào)用getshell,; admin-console弱密碼或者密碼泄露導(dǎo)致getshell; Jboss AS7: Java反序列化漏洞,; console后臺(tái)弱密碼或密碼泄露導(dǎo)致getshell,。 4.JBoss日志分析: <1>.JBoss 6.1.0,日志配置文件:(AS4,、5類似): 位置:C:\jboss-6.1.0.Final\server\default\deploy\jboss-logging.xml(7默認(rèn)記錄訪問日志的功能沒啟用,。) <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:實(shí)現(xiàn)的Java類名,設(shè)置成:org.apache.catalina.valves.AccessLogValve,; directory:存放日志文件的目錄,; pattern:需要記錄的日志信息的字段、格式,、布局,,如果是common或者combined,說明是使用的標(biāo)準(zhǔn)記錄格式,,也有自定義的格式,; prefix: 日志文件名的前綴,如果沒有指定,,缺省值是access_log.(要注意后面有個(gè)小點(diǎn)),; resolveHosts:將遠(yuǎn)端主機(jī)的IP通過DNS查詢轉(zhuǎn)換成主機(jī)名,,設(shè)為true,。如果為false,忽略DNS查詢,,報(bào)告遠(yuǎn)端主機(jī)的IP地址; sufix:日志文件的后綴名,。(sufix=”.log”)(要注意后面有個(gè)小點(diǎn)),; rotatable:缺省值為true,決定日志是否要輪詢和翻轉(zhuǎn),,如果為false則永不翻轉(zhuǎn),,并且忽略fileDateFormat,謹(jǐn)慎使用,; condition:打開條件日志,; fileDateFormat:允許在日志文件名稱中使用定制的日期格式,日志的格式也決定了日志文件翻轉(zhuǎn)的頻率,。 %a :遠(yuǎn)端IP %A :本地IP %b: 發(fā)送的字節(jié)數(shù),,不包含HTTP頭,如果為0,,使用”-” %B: 發(fā)送的字節(jié)數(shù),,不包含HTTP頭 %h: 遠(yuǎn)端主機(jī)名(如果resolveHosts=false),遠(yuǎn)端的IP %H:請求協(xié)議 %l :從identd返回的遠(yuǎn)端邏輯用戶名,,總是返回’-’ %m: 請求的方法 %p :收到請求的本地端口號 %q :查詢字符串 %r 請求的第一行 %s 響應(yīng)的狀態(tài)碼 %S 用戶的sessionID %t 日志和時(shí)間,,使用通常的log格式 %u 認(rèn)證以后的遠(yuǎn)端用戶(如果存在的話,否則為’-’) %U 請求的URI路徑 %v 本地服務(wù)器的名稱 %D 處理請求的時(shí)間,,以毫秒為單位 %T 處理請求的時(shí)間,,以秒為單位 5.使用E.L.K安全分析Nginx日志: 參考上文Nginx分析。 |
|