SSH 連接和 TCP 數據包
我有一個 IP YY.YY.YY.YY 的 ssh 伺服器在埠 5022 上偵聽,它顯示以下流量(使用 TCPDUMP),其中 XX.XX.XX.XX 是外部未知 IP,
10:34:58.879055 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: S 1093512123:1093512123(0) win 29200 <mss 1460,sackOK,timestamp 4152861140 0,nop,wscale 7> (DF) [tos 0x68] 10:34:58.879222 YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: S 1017497190:1017497190(0) ack 1093512124 win 16384 <mss 1460,nop,nop,sackOK,nop,wscale 6,nop,nop,timestamp 4107297338 4152861140> (DF) 10:34:58.902942 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: . ack 1 win 229 <nop,nop,timestamp 4152861164 4107297338> (DF) [tos 0x68] 10:34:58.902980 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: P 1:24(23) ack 1 win 229 <nop,nop,timestamp 4152861164 4107297338> (DF) [tos 0x68] 10:34:58.916629 YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: P 1:22(21) ack 24 win 271 <nop,nop,timestamp 4107297338 4152861164> (DF) 10:34:58.939061 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: . ack 22 win 229 <nop,nop,timestamp 4152861201 4107297338> (DF) [tos 0x68] 10:34:58.939120 YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: P 22:1054(1032) ack 24 win 271 <nop,nop,timestamp 4107297338 4152861201> (DF) 10:34:58.939603 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: P 24:672(648) ack 22 win 229 <nop,nop,timestamp 4152861201 4107297338> (DF) [tos 0x68] 10:34:58.941607 YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: F 1054:1054(0) ack 672 win 271 <nop,nop,timestamp 4107297338 4152861201> (DF) 10:34:58.961672 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: F 672:672(0) ack 1054 win 245 <nop,nop,timestamp 4152861223 4107297338> (DF) [tos 0x68] 10:34:58.961721 YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: F 1054:1054(0) ack 673 win 271 <nop,nop,timestamp 4107297338 4152861223> (DF) 10:34:58.963932 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: . ack 1055 win 245 <nop,nop,timestamp 4152861226 4107297338> (DF) [tos 0x68]
我害怕的是標誌 S、P 和 F,這意味著同步、推送、完成……
我不擅長網路,但我可以認為連接損害了我的伺服器嗎?該IP和muy伺服器之間是否有完整的流量,或者只是連接嘗試?
謝謝。
Syn、Push、Fin 是 TCP 數據包的正常標誌。他們自己並沒有說明您的伺服器是否受到損害。
- syn 表示想要開始一個新的連接
- 推送意味著想要在連接上發送數據
- Fin 表示想要關閉連接
查看流量,我猜測它甚至在嘗試對伺服器進行身份驗證之前就失敗了:
10:34:58.879055 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: S 1093512123:1093512123(0) win 29200 <mss 1460,sackOK,timestamp 4152861140 0,nop,wscale 7> (DF) [tos 0x68] 10:34:58.879222 YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: S 1017497190:1017497190(0) ack 1093512124 win 16384 <mss 1460,nop,nop,sackOK,nop,wscale 6,nop,nop,timestamp 4107297338 4152861140> (DF) 10:34:58.902942 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: . ack 1 win 229 <nop,nop,timestamp 4152861164 4107297338> (DF) [tos 0x68]
這是 3 次 TCP 握手,由想要連接到 YY.YY.YY.YY 的 XX.XX.XX.XX 發起。Syn 標誌表明這是一個新連接的開始。
10:34:58.902980 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: P 1:24(23) ack 1 win 229 <nop,nop,timestamp 4152861164 4107297338> (DF) [tos 0x68] 10:34:58.916629 YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: P 1:22(21) ack 24 win 271 <nop,nop,timestamp 4107297338 4152861164> (DF) 10:34:58.939061 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: . ack 22 win 229 <nop,nop,timestamp 4152861201 4107297338> (DF) [tos 0x68]
在每個 SSH 連接開始時,每一方都會發送一個“橫幅”,這是一個簡短的文本,說明它使用哪種 SSH 軟體。這些數據包看起來像 XX.XX.XX.XX 將其標語發送到 YY.YY.YY.YY;然後 YY.YY.YY.YY 承認它並將其橫幅發送給 XX.XX.XX.XX;然後 XX.XX.XX.XX 承認它。
10:34:58.939120 YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: P 22:1054(1032) ack 24 win 271 <nop,nop,timestamp 4107297338 4152861201> (DF) 10:34:58.939603 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: P 24:672(648) ack 22 win 229 <nop,nop,timestamp 4152861201 4107297338> (DF) [tos 0x68]
根據SSH協議,在發送banner之後,每一方都會發送一條消息,說明它支持哪些加密算法,支持哪些密鑰交換協議等,以便雙方協商加密連接時使用的加密密鑰.
10:34:58.941607 YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: F 1054:1054(0) ack 672 win 271 <nop,nop,timestamp 4107297338 4152861201> (DF) 10:34:58.961672 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: F 672:672(0) ack 1054 win 245 <nop,nop,timestamp 4152861223 4107297338> (DF) [tos 0x68] 10:34:58.961721 YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: F 1054:1054(0) ack 673 win 271 <nop,nop,timestamp 4107297338 4152861223> (DF) 10:34:58.963932 XX.XX.XX.XX.59800 > YY.YY.YY.YY.5022: . ack 1055 win 245 <nop,nop,timestamp 4152861226 4107297338> (DF) [tos 0x68]
顯然 YY.YY.YY.YY 不喜歡 XX.XX.XX.XX 發送的內容(可能沒有他們都支持的算法?或者 XX.XX.XX.XX 發送了格式錯誤的數據包?),所以不要繼續對於密鑰交換,它決定告訴 XX.XX.XX.XX(通過使用 Fin 標誌)它想要關閉連接而不是進一步繼續連接。XX.XX.XX.XX 也使用 Fin 標誌來關閉連接(要麼是因為它也確定無法進行密鑰交換,要麼是因為它得到了 YY.YY.YY.YY 的 Fin)。
理論上使用 XX.XX.XX.XX 的人可以修復 XX.XX.XX.XX 以支持更多的算法,以便成功完成密鑰交換並嘗試暴力登錄。