安全的SSH設置

作者:暗無天日
來源:https://lujun9972.github.io/blog/2018/10/11/安全的ssh設置/
安全的SSH設置

偶爾登陸了一次騰訊雲主機的root用戶,驚訝地發現有大量失敗登陸的記錄,把我嚇了一跳。

使用 lastb 查了一下,發現登陸名稱是千奇百怪。其中實驗次數最多的用戶名分別為:

sudo lastb|awk '{print $1}' |sort |uniq -c |sort -n -k 1 |tail
160 guest
218 hadoop
248 git
252 ubuntu
356 user
406 postgres
420 test
486 oracle
1161 admin
147101 root

之前我一直以為我這小破主機應該是沒人會在意的,所以沒有對SSH服務進行什麼配置。現在看起來我還是太naive了。

迫於無奈,只好對SSH服務進行加固處理。目前找到的加固方法有下面幾個:

確定 sshd_config 的權限

確定 sshd_config 只有root才能讀寫,其他用戶不能進行任何操作

sudo chown root:root /etc/ssh/sshd_config
sudo chmod og-rwx /etc/ssh/sshd_config

修改ssh服務端口

這一步的效果很顯著,只從改了ssh服務端口後,就在沒有看到任何登陸失敗的提示了

Port XXXX

只啟用SSH Protocol 2

Protocol 1的安全性相對要差一些

Protocol 2

不允許空密碼登陸

PermitEmptyPasswords no

不允許root登陸

從上面對 lastb 的結果分析可以得知, root 是被實驗最多的用戶,沒有之一。

因此禁用 root 登陸很有必要:

PermitRootLogin no

若你覺得一股腦兒完全禁用root登陸太過了,而希望只在特定的主機上允許root登陸,則可以禁止 root 用密碼登陸

PermitRootLogin prohibit-password

然後在特定主機上建立公私密鑰認證關係即可。

限制只能登陸特定用戶

我們可以使用 DenyUsers, AllowUsers, DenyGroups 和 AllowGroups 關鍵字來限定允許登陸的用戶。

當某個用戶登陸時,該用戶依次經過 DenyUsers, AllowUsers, DenyGroups 和 AllowGroups的測試,只有在所有測試都通過的情況下才允許登陸。

AllowUsers ramesh john jason
AllowGroups sysadmin dba
DenyUsers cvs apache jane
DenyGroups developers qa

修改未登陸的超時時間

用戶未登陸成功的情況下,默認120秒後會登出。這個時間可以縮短,比如60.

LoginGraceTime 1m

但要注意,若該值縮減為 0 則表示沒有時間限制

設置會話空閒一段時間後自動退出

設置空間一段時間自動退出有兩種方法,

一種是設置 TMOUT 環境變量,比如在 ~/.bash_profile 中加上

export TMOUT=100

還有一種方法是設置 sshd_config

ClientAliveInterval 100
ClientAliveCountMax 0


分享到:


相關文章: