各位大大好,目前手上有個關於SSH限制的棘手問題。
情境如下:
客戶的CentOS主機前,有一個實體防火牆,主機接在內網。
但是不清楚客戶的網路外包商是怎麼設定的,從LINUX中看到的所有經過防火牆進來的外部封包,來源通通是防火牆的IP,也就是看不出這些封包是從哪邊來的。
問題來了,這個客戶的LINUX一直被try ssh,我們是軟體廠商,只要我們的軟體變慢,他們就反應問題,而多次查詢的結果可以確定是網路連線被他這些大量try連線的封包塞住。雖然已經多次建議他們要從實體防火牆把22僅針對我們的IP開放,但是不知是溝通不良還是客戶不懂(應該是後者),總之無法從這條路下手。
嘗試過從LINUX中的防火牆阻擋,但是因為上述原因,無法分辨封包來自哪裡,所以會把我們自己擋在外面。
目前想尋求的方法是可以緩解大量建立連線的問題。
我用過pam_tally2的方式去阻擋,但是pam_tally雖然會在錯誤嘗試多次之後,讓他變成鎖定,但是無法杜絕建立連線的這一段。
從ssh設定檔去禁止root登入的設定也做了,但是實測發現,連線還是可以建立,只是輸入密碼會被拒絕而已。
想請問有沒有可以從帳號去封鎖連線建立的方式? 目前觀察到是這台機器一直被用root去嘗試登入,所以想先做的是:嘗試連線建立時使用的帳號是root,可以讓他連密碼都不用試就直接中斷連線。
查了你用的 pam_tally2 , 只是阻擋特定user. 但是port 仍然是開放可以持續被try.
我建議你使用 fail2ban 這個工具, 偵測到異常的時候 會直接從 網路封鎖. 時間到在打開
這樣系統壓力才會降低.
LINUX中看到的所有經過防火牆進來的外部封包,來源通通是防火牆的IP
這看起來是網路規劃上的錯誤
大多是真正的來源在進入防火牆中經過一層NAT
導致目的端收到的封包來自於防火牆IP
所以還是要從網路設定的調整處理
不然怎麼分辨到底哪裡來的攻擊
以前就在某家公司看過 NAS的連線全部都是同一個IP
例如一個帳號同時多個登入 根本就沒辦法分辨誰真誰假
網路會亂調的真的不少
有沒有打算將ssh的port改個port。
我早期的主機也是常被這樣被試著連線。也很困擾。
後來我將22port改到6622 5522 4422 ....反正就是一個不會影響的port。
這個問題就解決了。
不過防火那邊就得要去開通這個port就是了。