在linux操作系統(tǒng)中,日志分析是一個(gè)關(guān)鍵的技術(shù)領(lǐng)域,能夠協(xié)助我們發(fā)現(xiàn)系統(tǒng)異常、解決故障、提升性能以及檢測入侵行為。以下是基于Linux系統(tǒng)執(zhí)行日志分析的一些基本技巧與流程:
日志文件的存放位置
Linux系統(tǒng)的日志文檔一般儲存在 /var/log 文件夾內(nèi)。以下列舉了一些典型的日志文檔及其涵蓋的內(nèi)容:
- /var/log/messages:保存系統(tǒng)常規(guī)性的通知。
- /var/log/syslog:儲存系統(tǒng)的眾多信息。
- /var/log/auth.log 或 /var/log/secure:儲存系統(tǒng)的身份驗(yàn)證日志及相關(guān)安全數(shù)據(jù)。
- /var/log/boot.log:記錄系統(tǒng)的開機(jī)日志。
- /var/log/httpd/ 或 /var/log/nginx/:保存Web服務(wù)器的訪問及錯(cuò)誤日志。
- /var/log/mysql/Error.log:記錄mysql數(shù)據(jù)庫的錯(cuò)誤日志。
常用的日志分析指令
-
grep:用來在日志文檔里尋覓含有特定形式的行。例如,搜尋包含“Failed password”的ssh失敗登錄嘗試:
cat /var/log/auth.log | grep -a "Failed password for root"
-
awk:用于文本處理,可提取日志中的特定字段。例如,提取IP地址:
cat /var/log/auth.log | grep -a "Failed password for root" | awk '{print $11}'
-
sort 和 uniq:用于對日志進(jìn)行排序和去重。例如,統(tǒng)計(jì)每個(gè)IP地址的失敗登錄嘗試次數(shù):
cat /var/log/auth.log | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr
-
journalctl:用于查閱和管理systemd日志。例如,查閱FetchLinux服務(wù)的日志:
journalctl -u fetchlinux.service
-
tail 和 head:用于查看日志文檔的即時(shí)內(nèi)容或特定片段。例如,即時(shí)查看日志文檔的最后10行:
tail -f /var/log/messages head -n 20 /var/log/messages
日志分析實(shí)際運(yùn)用案例
-
Web服務(wù)器非正常終止分析:
-
使用 grep 確認(rèn)異常源頭:
grep "Segmentation fault" /var/log/error_log | wc -l
-
使用 strace 實(shí)時(shí)監(jiān)測進(jìn)程動(dòng)態(tài):
strace -p <pid></pid>
-
分析崩潰緣由,修復(fù)配置失誤。
-
-
入侵行動(dòng)追查:
-
篩選可疑IP:
awk '{print $1}' /var/log/Access.log | sort | uniq -c | sort -nr
-
聯(lián)系異常操作,深入追蹤攻擊鏈條。
-
日志分析工具推薦
- logwatch:用于自動(dòng)產(chǎn)生系統(tǒng)日志總結(jié)。
- elk(elasticsearch, Logstash, Kibana):用于日志的集中保留、剖析和可視化。
- Splunk:強(qiáng)大的日志剖析平臺,適用于大型公司。
借助上述辦法和工具,我們可以高效地實(shí)行Linux系統(tǒng)的日志剖析,助力運(yùn)維和安全專家迅速識別問題并施行對應(yīng)步驟。