問題具體表現爲
1、在每天Tomcat的日誌中會出現一定頻率的timed out 異常日誌
2、並在nginx 日誌中會發現一定量的http 499的異常日誌。
經過多天的排查發現 是因爲之前 我們服務器有漏洞被別人攻擊時使用了4505、4506 兩個端口,運維的同事禁用掉了這兩個端口。具體如下:
# Generated by iptables-save v1.4.21 on Sun May 3 16:41:37 2020
*filter
:INPUT ACCEPT [124757829:60046613934]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [120559135:20459927880]
#-A INPUT -p tcp -m tcp --dport 4505:4506 -j DROP
但是業務系統中並沒有使用這兩個端口,當時排查時忽略掉這個細節。
但是這個超時的現象就是從被攻擊當天開始出現的,
find / -mtime 5
查到當天被修改過的文件就只有這一個,所以再次引起我的注意,去掉端口限制後發現應用恢復正常。
大寫的尷尬, 爲什麼禁用這兩個端口會導致 應用不正常的超時呢?
後來調用命令查看請求Tomcat的tcp 連接會隨機的使用一個沒有應用使用的端口進行通信。
netstat -apn|grep 20112
會發現確實如此,答案水落石出。。。。