CentOS系統中,Tomcat日志默認存儲在$CATALINA_HOME/logs目錄下,主要包括以下幾類關鍵日志:
logs/localhost_access_log.<日期>.txt),記錄所有HTTP請求的詳細信息(客戶端IP、請求時間、方法、URL、響應狀態碼等);訪問日志是識別異常流量的核心來源,需重點監控以下指標:
高頻錯誤狀態碼:
/admin目錄);異常請求頻率:
netstat -antp | grep java查看Tomcat連接數是否異常。可疑IP與請求來源:
whois命令查詢IP歸屬地;/wp-admin.php、/phpmyadmin),可能是自動化攻擊工具的行為。異常請求參數與方法:
<script>、union select、1=1)、編碼內容(如%3Cscript%3E解碼為<script>、PHNjcmlwdD4=解碼為<script>)或超長字符串(如超過1000字符的參數),可能是SQL注入、XSS攻擊或命令執行;catalina.out(或logs/catalina.<日期>.log)中的錯誤信息能直接反映系統異常,需重點關注:
內存問題:
出現OutOfMemoryError: Java heap space(堆內存溢出)、OutOfMemoryError: Metaspace(元空間溢出)等錯誤,可能是惡意請求導致內存耗盡(如大量上傳文件、循環遞歸調用)。
線程問題:
出現java.lang.OutOfMemoryError: unable to create new native thread(無法創建新線程)或Deadlock detected(死鎖),可能是線程池被大量請求占滿(如DDoS攻擊)。
安全異常:
出現Access denied for user(數據庫訪問被拒絕)、ServletException: Attempt to access unauthorized resource(試圖訪問未授權資源)、Invalid session ID(無效會話ID)等錯誤,可能是攻擊者嘗試破解密碼、越權訪問或偽造會話。
命令行工具:
grep:過濾關鍵信息(如grep "404" access_log.*.txt查看所有404錯誤;grep "OutOfMemoryError" catalina.out查看內存溢出日志);awk:統計請求頻率(如awk '{print $1}' access_log.*.txt | sort | uniq -c | sort -nr統計每個IP的請求數,排序后查看高頻IP);sed:提取關鍵字段(如sed -n 's/.*\[\(.*\)\].*\(\/.*\).*/\1 \2/p' access_log.*.txt提取時間與URL)。日志分析工具:
監控系統資源:
使用top、htop查看CPU使用率(如Tomcat進程占用CPU超過80%)、free -m查看內存使用情況(如剩余內存不足100MB)、iftop查看網絡帶寬(如流入流量突然激增),確認是否因異常流量導致資源瓶頸。
檢查網絡連接:
使用netstat -antp | grep java查看Tomcat的連接數(如ESTABLISHED連接數超過1000)、ss -s查看socket統計信息(如總連接數異常),判斷是否遭受DDoS攻擊。