前言
今天同事說他前幾天買的xx雲的服務器,被暴力破解了。然後我偷偷看了下我自己買的雲服務器,不看不知道,一看嚇一跳。
lastb
lastb
用於列出登入系統失敗的用戶相關信息。
# 顯示前10行,顯示的行數可以通過參數 -n 指定
$ lastb | head
我們可以通過ip地址查詢,查詢到登錄失敗的ip地址信息
如何防止別人暴力破解
修改ssh
端口
$ vim /etc/ssh/sshd_config
把端口22
修改成其他端口,保存:wq
,然後重啓sshd
服務
$ systemctl restart sshd.service
重新連接服務器的時候,需要修改連接端口
$ ssh root@host -p port
禁用密碼登錄,用RSA
公鑰登錄
所謂"公鑰登錄",原理很簡單,就是用戶將自己的公鑰儲存在遠程主機上。登錄的時候,遠程主機會向用戶發送一段隨機字符串,用戶用自己的私鑰加密後,再發回來。遠程主機用事先儲存的公鑰進行解密,如果成功,就證明用戶是可信的,直接允許登錄shell,不再要求密碼。
這種方法要求用戶必須提供自己的公鑰。如果沒有現成的,可以直接用ssh-keygen生成一個:
$ ssh-keygen
運行上面的命令以後,系統會出現一系列提示,可以一路回車。其中有一個問題是,要不要對私鑰設置口令(passphrase),如果擔心私鑰的安全,這裏可以設置一個。
運行結束以後,在$HOME/.ssh/目錄下,會新生成兩個文件:id_rsa.pub和id_rsa。前者是你的公鑰,後者是你的私鑰。
這時再輸入下面的命令,將公鑰傳送到遠程主機host上面:
$ ssh-copy-id user@host
好了,從此你再登錄,就不需要輸入密碼了。
如果還是不行,就打開遠程主機的/etc/ssh/sshd_config這個文件,檢查下面幾行前面"#"註釋是否取掉。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然後,重啓遠程主機的ssh服務。
$ systemctl restart sshd.service
測試用密鑰登錄
$ ssh -i .ssh/id_rsa root@host -p port
登錄成功後,可以關閉密碼登錄
$ vim /etc/ssh/sshd_config
打開遠程主機的/etc/ssh/sshd_config
這個文件,將 PasswordAuthentication yes
修改爲 PasswordAuthentication no
PasswordAuthentication no
重啓sshd
服務
$ systemctl restart sshd.service
小結
其實也不用上面的操作,把密碼設置複雜一點也行。