
centos伺服器中是否有記錄每次連線的日誌?
所以像是集中式連線日誌之類的東西
答案1
獲得所有 TCP 連線的單一集中日誌的唯一可靠方法是LOG
向軟體防火牆配置新增規則iptables
,該規則將記錄設定了 SYN 和 ACK 位元的任何資料包,即任何 TCP 連線的第二個資料包。/var/log/messages
預設情況下,這些將顯示為內核日誌訊息。
本質上,您需要添加如下所示的 iptables 規則:
iptables -A OUTPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -j LOG --log-prefix "Inbound connection established: "
iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -j LOG --log-prefix "Outbound connection established: "
(您可能希望將這些規則放入現有規則集中,以便它們不會應用於環回接口,因為這可能會為主機內應用程式進程之間的每個本機連接產生兩個條目。)
是的,OUTPUT 鏈中的規則會記錄入站連接,反之亦然,因為這只會記錄實際正在回應的連接:僅記錄 SYN 封包也會記錄將被拒絕的連接嘗試。由於網路上充滿惡意軟體的系統執行連接埠掃描,這通常會為您帶來大量無用的日誌條目:您必須與其他日誌進行交叉檢查,結果卻發現您沒有這樣的日誌條目服務根本在運行,或連接被其他iptables
規則或相關服務拒絕。
對於 UDP 協議來說,情況比較棘手,因為 UDP 是無連接的,基本上只是一個可以建立特定於應用程式的協定的平台。因此,沒有簡單的方法來檢測「連接的第一個資料包」或類似的東西,因為所有這些都完全是特定於應用程式的。
答案2
我認為應該這樣做:
journalctl -fu sshd
或者
journalctl -u sshd -n 100
也就是說,如果您正在運行 systemd,我認為這是預設的。前者將保持警惕。後者相當於透過尾部進行管道傳輸。
(閱讀周圍似乎表明日誌實際上應該位於 /var/log/secure 中)