????Web服務(wù)器日志記錄了Web服務(wù)器接收處理請求及運行時錯誤等各種原始信息。通過Web日志可以清楚的得知用戶在什么IP、什么時間、用什么操作系統(tǒng)炊琉、什么瀏覽器的情況下訪問了你網(wǎng)站的哪個頁面,是否訪問成功又活。通過對WEB日志進(jìn)行的安全分析苔咪,可以還原攻擊場景,不僅可以幫助我們追蹤到攻擊者柳骄,同時也可以找到了網(wǎng)站存在的安全漏洞并進(jìn)行修復(fù)团赏。
我們來看一條Apache的訪問日志:
127.0.0.1 - - [11/Jun/2018:12:47:22 +0800] "GET /login.html HTTP/1.1" 200 786 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"
本文通過介紹Web日志安全分析時的思路和常用的一些技巧。
? ? 在對Web日志分析過程中可以通過兩個思路進(jìn)行展開分析耐薯,逐步深入舔清,還原整個攻擊過程。
第一種:確定入侵的時間范圍曲初,以此為線索体谒,查找這個時間范圍內(nèi)可疑的日志,進(jìn)一步排查臼婆,最終確定攻擊者营密,還原攻擊過程。
第二種:一般攻擊者在入侵網(wǎng)站后目锭,通常會上傳一個后門文件,以方便自己以后訪問纷捞,我們也可以以該文件為線索來展開分析痢虹。
? ? 常用分析工具:
Window下,推薦用 EmEditor 進(jìn)行日志分析主儡,支持大文本奖唯,搜索效率還不錯。
Linux下糜值,使用Shell命令組合查詢分析
Shell+Linux命令實現(xiàn)日志分析丰捷,一般結(jié)合grep、awk等命令等實現(xiàn)了幾個常用的日志分析統(tǒng)計技巧寂汇。
Apache日志分析:
1病往、列出當(dāng)天訪問次數(shù)最多的IP命令:
cut -d- -f 1 log_file|uniq -c | sort -rn | head -20
2、查看當(dāng)天有多少個IP訪問:
awk '{print $1}' log_file|sort|uniq|wc -l
3骄瓣、查看某一個頁面被訪問的次數(shù):
grep "/index.php" log_file | wc -l
4停巷、查看每一個IP訪問了多少個頁面:
awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file
5、將每個IP訪問的頁面數(shù)進(jìn)行從小到大排序:
awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n
6、查看某一個IP訪問了哪些頁面:
grep ^111.111.111.111 log_file| awk '{print $1,$7}'
7畔勤、去掉搜索引擎統(tǒng)計當(dāng)天的頁面:
awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' |sort | uniq | wc -l
8蕾各、查看2018年6月21日14時這一個小時內(nèi)有多少IP訪問:
awk '{print $4,$1}' log_file | grep 21/Jun/2018:14 | awk '{print $2}'| sort | uniq | wc -l
刪除一個月前的日志:
rm -f /www/logs/access.log.$(date -d '-1 month' +'%Y-%m')*
統(tǒng)計爬蟲:
grep -E 'Googlebot|Baiduspider' /www/logs/www.example.com/access.2011-02-23.log | awk '{ print $1 }' | sort | uniq
統(tǒng)計瀏覽器:
cat /www/logs/example.com/access.2010-09-20.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon' | sort | uniq -c | sort -r -n | head -n 100
IP統(tǒng)計:
# grep '22/May/2012' /tmp/myid.access.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -r -n | head -n 10
? 2206 219.136.134.13
? 1497 182.34.15.248
? 1431 211.140.143.100
? 1431 119.145.149.106
? 1427 61.183.15.179
? 1427 218.6.8.189
? 1422 124.232.150.171
? 1421 106.187.47.224
? 1420 61.160.220.252
? 1418 114.80.201.18
統(tǒng)計網(wǎng)段:
# cat /www/logs/www/access.2010-09-20.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 200
統(tǒng)計域名:
cat /www/logs/access.2011-07-27.log |awk '{print $2}'|sort|uniq -c|sort -rn|more
統(tǒng)計HTTP Status:
# cat /www/logs/access.2011-07-27.log |awk '{print $9}'|sort|uniq -c|sort -rn|more
5056585? ?304
1125579? ? 200
? 7602? ? ? ? 400
? ? ? 5? ? ? ? ? 301
統(tǒng)計URL:
cat /www/logs/access.2011-07-27.log |awk '{print $7}'|sort|uniq -c|sort -rn|more
文件流量統(tǒng)計:
cat /www/logs/access.2011-08-03.log |awk '{sum[$7]+=$10}END{for(i in sum){print sum[i],i}}'|sort -rn|more
grep ' 200 ' /www/logs/access.2011-08-03.log |awk '{sum[$7]+=$10}END{for(i in sum){print sum[i],i}}'|sort -rn|more
URL訪問量統(tǒng)計:
# cat www.access.log | awk '{print $7}' | egrep '\?|&' | sort | uniq -c | sort -rn | more
查出運行速度最慢的腳本:
grep -v 0$ access.2010-11-05.log | awk -F '\" ' '{print $4" " $1}' web.log | awk '{print $1" "$8}' | sort -n -k 1 -r | uniq > /tmp/slow_url.txt
IP和URL抽取:
# tail -f /www/logs/www.365wine.com/access.2012-01-04.log | grep '/test.html' | awk '{print $1" "$7}'
推薦:https://bypass007.github.io/Emergency-Response-Notes/LogAnalysis/%E7%AC%AC3%E7%AF%87%EF%BC%9AWeb%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90.html
推薦:https://www.jb51.net/article/53954.htm
推薦:https://www.jb51.net/article/58017.htm
推薦:https://cloud.tencent.com/developer/article/1051427