「筆記」SSH 那些事兒

在實際的產品服務釋出環境中,Linux伺服器通常禁止使用遠端ROOT賬戶登入,僅僅允許最小許可權的遠端賬戶使用SSH登入後,再切換賬戶達到管理伺服器的目的。下面我們就總結一下如何建立安全的SSH登入賬戶。

【執行環境】

CentOS,OpenSSH

1。在客戶端生成證書秘鑰對,生成的檔案預設存在~/。ssh/目錄下,包括id_rsa與id_rsa。pub兩個檔案。

ssh_keygen

2。從~/。ssh/目錄下,複製id_ras。pub檔案內容到伺服器端登入賬戶下~/。ssh/authorized_keys檔案中。這樣就可以從客戶端直接使用證書登入遠端伺服器了。

cat ~/。ssh/id_rsa。pub | ssh serveruser@servername ‘cat >> 。ssh/authorized_keys’

3。配置OpenSSH伺服器,禁止使用密碼登入。在伺服器端編輯/etc/ssh/sshd_config檔案,將PasswordAuthentication設定為no,預設為yes。

-PasswordAuthentication yes+PasswordAuthentication no

禁用challenge-response。因為如果使用了PAM的challenge-response認證,就會跳過密碼認證直接登入。

ChallengeResponseAuthentication no

4。禁止使用root賬戶登入,將PermitRootLogin設定為no,預設為yes或prohibit-password。

-PermitRootLogin yes-PermitRootLogin no

【更安全的策略】

經過以上設定,我們的SSH登入就基本安全了。但是,我們可以更進一步~

1。限定使用者(user)、使用者組(group)和訪問主機(host)。

在sshd_config檔案中,有以下四個標籤,可以分別指定允許、禁止的使用者和使用者組

DenyUsers

AllowUsers

DenyGroups

AllowGroups

例如

AllowUsers test@testhost test2AllowGroup testgroup test2group

僅僅允許testhost主機透過test賬戶訪問或者test2從任意機器訪問。

僅僅允許屬於testgroup或test2group的使用者

2。修改OpenSSH的埠。

這個就不多說了,預設埠22一定是攻擊的目標。

3。限制訪問主機和可執行的命令。

在authorized_key檔案中,除了rsa_key指定了公鑰之外,還可以新增from,commad,no-pty,no-port-forwarding等選項進行登入使用者限制。

常用設定如下

from=‘hostname1,hostname2,’‘ - 此證書允許指定的IP或主機使用command=’command‘ - 登入之後僅能執行指定的命令no-pty - 禁止分配pty(不允許互動登入)no-port-forwarding - 禁止埠轉發

4。加密known_hosts。

客戶端訪問過服務端後,會在。ssh/目錄下known_hosts儲存你的訪問記錄,包括IP/hostname,加密演算法,秘鑰。如果你使用的是公共伺服器或者你的密碼被盜了。那後果就非常嚴重了!

ssh-keygen -H -f ~/。ssh/known_hosts

ssh-keygen -H -f ~/。ssh/known_hosts

使用以上命令可以將known_hosts的內容加密,但是要注意,此命令執行後原有的內容會備份到known_hosts。old檔案中。刪掉這個檔案!

5。隱藏SSH登入後的系統資訊。使用者登入後,一般的都會但是系統的基本資訊和每日更新、補丁的狀態,我們應該儘可能減少資訊的公佈。

解決方法:假如伺服器端的SSH賬戶為test,touch /home/test/。hushlogin

【總結】

安全這個話題,通常只有被駭客攻擊後才會想起來,但是為時已晚。預設的配置總是最方便也總是被大眾所知的,所以,花點時間配置一下伺服器也是值得的。

轉載於:https://www。cnblogs。com/pumasun/p/9253810。html

其他:

透過 ssh 免密登入時總是提示需要輸入密碼時,請檢查 ssh 許可權是否合適:

~/。ssh/authorized_keys 其中 。ssh 目錄的許可權設定為 700 ,authorized_keys 檔案的許可權應設定為 600 ,檔案和目錄的 owner 必須為當前用保護。

新建立的 linux 使用者沒有 。ssh 目錄,需在其家目錄下手動建立或透過該賬戶生成 ssh 秘鑰等資訊。