Linux创建安全的SSH登录账户
Posted pumasun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux创建安全的SSH登录账户相关的知识,希望对你有一定的参考价值。
在实际的产品服务发布环境中,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 [email protected] ‘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 [email protected] 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登录账户的主要内容,如果未能解决你的问题,请参考以下文章
Linux ❀ RHCE自研教学笔记 - Redhat 8.2 SSH服务教研笔记