作者:暗無天日
來源:https://lujun9972.github.io/blog/2018/10/11/安全的ssh設置/
![安全的SSH設置](http://p2.ttnews.xyz/loading.gif)
偶爾登陸了一次騰訊雲主機的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
閱讀更多 javafirst 的文章