作者:暗无天日
来源:https://lujun9972.github.io/blog/2018/10/11/安全的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
閱讀更多 javafirst 的文章