在实际的产品服务发布环境中,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 serveruser@servername '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 test@testhost test2AllowGroup 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
ssh-keygen -H -f ~/.ssh/known_hosts
使用以上命令可以将known_hosts的内容加密,但是要注意,此命令执行后原有的内容会备份到known_hosts.old文件中。删掉这个文件!
5.隐藏SSH登录后的系统信息。用户登录后,一般的都会但是系统的基本信息和每日更新、补丁的状态,我们应该尽可能减少信息的公布。
解决方法:假如服务器端的SSH账户为test,touch /home/test/.hushlogin
【总结】
安全这个话题,通常只有被黑客攻击后才会想起来,但是为时已晚。默认的配置总是最方便也总是被大众所知的,所以,花点时间配置一下服务器也是值得的。
转载于:https://www.cnblogs.com/pumasun/p/9253810.html
其他:
通过 ssh 免密登录时总是提示需要输入密码时,请检查 ssh 权限是否合适:
~/.ssh/authorized_keys 其中 .ssh 目录的权限设置为 700 ,authorized_keys 文件的权限应设置为 600 ,文件和目录的 owner 必须为当前用保护。
新创建的 linux 用户没有 .ssh 目录,需在其家目录下手动创建或通过该账户生成 ssh 秘钥等信息。
文章来源: https://twgreatdaily.com/zh-hans/a3KHE3ABjYh_GJGVPGoP.html