大道至简,知易行难
广阔天地,大有作为

SSH服务端禁用密码登陆及常见安全配置

sshd_config配置文件的文档可以参见https://www.ssh.com/ssh/sshd_config。重要的选项包括:
1、配置root登陆方式
让别人以root身份登录自己的服务器是件很危险的事,通过PermitRootLogin参数可以限定root用户通过ssh的登录方式,如禁止登陆、禁止密码登录、仅允许密钥登陆和开放登陆,包括如下的可选项:

参数值 是否允许ssh登陆 登录方式 交互shell
yes 允许 没有限制 没有限制
prohibit-password 允许 除密码外 没有限制
forced-commands-only 允许 仅允许使用密钥 仅允许使用特定命令
no 不允许 N/A N/A

以上选项中,yes和no的功能显而易见,只是很粗暴的允许/禁止root用户进行登陆;prohibit-password在yes的基础上,禁止了root用户使用密码进行登陆;forced-commands-only则是:
If this option is set to “forced-commands-only”, root login with public key authentication will be allowed, but only if the command option has been specified (which may be useful for taking remote backups even if root login is normally not allowed). All other authentication methods are disabled for root.
设置了forced-commands-only之后,root用户仅允许使用密钥登陆且只允许执行在authorized_keys文件对应公钥的command参数中指定的命令,这种方式通常用来供定期需要使用root权限的用户登陆,但是只需要执行规定的脚本、命令的情形,如定期备份等周期性、固化的操作等。根据sshd的手册,command的具体含义是:

sshd的command参数

sshd的command参数

也可以参见参考资料中IBM的链接。
由于没有交互式shell,而command中又只能添加一条命令,所以当想要执行多条命令时可以把该执行的命令全部封装到shell脚本中并在command中填入脚本的绝对路径即可:

在authriozed_keys中指定公钥的command参数

在authriozed_keys中指定公钥的command参数

此时,当以公钥方式方式登录(如果用密码登陆则不会生效)时会发现有:

使用密钥对登陆时触发了command命令的执行并立即关闭连接

使用密钥对登陆时触发了command命令的执行并立即关闭连接

当配置了command参数后,用户通过ssh命令号传入的自定义命令会被忽略。

2、禁用用户名密码认证
用户名密码总是存在泄漏的风险,通过PasswordAuthentication参数可以控制是否使能用户名密码认证(包括空密码):

禁用SSH密码登陆和空密码

禁用SSH密码登陆和空密码

此时,如果尝试使用用户名密码登陆时会收到报错:

SSH禁用密码登陆

SSH禁用密码登陆

参考资料:
1、https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.foto100/authkeyf.htm
2、https://www.novell.com/support/kb/doc.php?id=7007565
3、http://askubuntu.com/questions/449364/what-does-without-password-mean-in-sshd-config-file
4、https://blog.csdn.net/huigher/article/details/52972013

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » SSH服务端禁用密码登陆及常见安全配置

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址