加固系统安全,防范ssh暴力破解

近期校园网中发现多起针对Linux服务器的ssh暴力破解行为,请各位老师同学检查实验室或个人使用的服务器ssh安全性配置,防患于未然。

1.服务器ssh安全自查:

步骤1. 检查服务器密码强度

请不要使用简单的字母数字组合作为密码,密码应包含大小写字母、数字、特殊符号的组合。

步骤2. 检查服务器免密登录用户

检查root用户及sudo权限用户的authorized_keys文件中是否被写入攻击者的密钥。可通过以下指令输出确认:

  root用户: cat /root/.ssh/authorized_keys

  其他用户: cat ~/.ssh/authorized_keys

检查输出的公钥是否为用户自己的公钥,如遇到未知公钥的记录请务必删除。攻击者一般是通过高权限用户的弱口令漏洞入侵系统,之后将自己的公钥写入authorized_keys中,这样即使用户更换过密码攻击者也可以继续免密远程登录系统,因此务必确保服务器中可信的公钥都是用户已知的。

步骤3. 检查ssh服务配置

检查ssh服务配置是否安全,是否存在空密码、是否允许root用户远程登录等,请参考下节中ssh的安全配置。

2.ssh服务配置安全加固:

初级加固

  ssh服务端的默认配置路径为: /etc/ssh/sshd_config,通过编辑器打开找到如下几个选项进行设置。

  PermitEmptyPasswords no #禁止使用空密码

  PermitRootLogin no #禁止root用户远程登录

  Port 22 #将默认的22端口改为其他非常规端口, 如8022/2468等

  设置完成后保存,并重启sshd服务:

  sudo service sshd restart

  这样ssh的安全性已经得到了一定程度的提升,用户还可以通过配置密钥登录、禁用密码登录等使得安全性进一步提高。

中级加固

  首先介绍如何配置通过密钥登录,接下来以Linux/Mac/WLS系统为例,Windows用户可以使用MobaXterm的local terminal实现和Linux一样的操作,也可以使用PuTTY等工具图形化配置密钥登录,详见文章末尾的参考链接。

步骤1. 生成本地密钥

Linux/Mac/WLS用户可以在命令行下通过 ssh-keygen 指令直接生成。 生成的密钥保存在命令行提醒的位置,其中id_rsa为私钥,不可轻易分享,id_rsa.pub为公钥。

步骤2. 将公钥复制到需免密登录的服务器

Linux/Mac/WLS用户可以在命令行下执行将公钥复制到服务器:

  ssh-copy-id username@remote_host -p 22

注意,如果修改过ssh默认端口,则将22更换为新的端口即可。根据提示输入用户密码即可开始复制,完成后会提示“Number of key(s) added: 1”,这样免密登录就配置好了。

步骤3. 确认密钥登录配置成功

退出服务器,重新通过ssh命令连接:

  ssh username@remote_host -p 22

如果免密直接登入服务器,即说明密钥登录配置成功。

步骤4. 配置密钥登录,并禁用密码登录

注意: 请务必确认密钥登录配置成功后再执行该步骤,否则配置完成后将无法通过密码远程登录服务器。

进一步修改/etc/ssh/sshd_config,找到如下参数并配置:

  PubkeyAuthentication yes # 允许通过密钥进行登录验证

  PasswordAuthentication no # 禁止通过密码进行登录验证

  ChallengeResponseAuthentication no # 关闭问答密码机制

步骤5. 重启sshd服务

sudo service sshd restart

配置完成后,ssh的安全性已经得到了很大的提升,一般的攻击者已经很难通过ssh入侵服务器了。但攻击者还可能会对服务器进行持续的ssh登录尝试扫描,在系统的错误登录信息日志中留下很多记录,为了过滤掉这些恶意扫描,可以结合fail2ban + iptables 进一步加固。

高级加固

  fail2ban是一款入侵防御软件,能够运行在大多数Linux服务器上,保护计算机服务器免受暴力破解的攻击,详情请参考《fail2ban安装》

3.相关资料:

  ssh加固1:https://www.cnblogs.com/lsgxeva/p/11424736.html

  ssh加固2:https://www.jianshu.com/p/10a2e85ea69f

  ssh免密登录配置:https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-ubuntu-20-04

  Windows putty免密登录: https://blog.csdn.net/weiyang_tang/article/details/96987068