1. 程式人生 > >【Linux】創建安全的SSH登錄賬戶

【Linux】創建安全的SSH登錄賬戶

port res pre 密碼認證 bit all 文件內容 總結 Opens

在實際的產品服務發布環境中,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 test2
AllowGroup 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

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

【總結】

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

【Linux】創建安全的SSH登錄賬戶