【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 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 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文件中。删掉这个文件!

5.隐藏SSH登录后的系统信息。用户登录后,一般的都会但是系统的基本信息和每日更新、补丁的状态,我们应该尽可能减少信息的公布。

  解决方法:假如服务器端的SSH账户为test,touch /home/test/.hushlogin

【总结】

安全这个话题,通常只有被黑客攻击后才会想起来,但是为时已晚。默认的配置总是最方便也总是被大众所知的,所以,花点时间配置一下服务器也是值得的。

 

posted @ 2018-07-02 18:01  静かな石  阅读(958)  评论(0编辑  收藏  举报