在 Debian 9 服务器上强化 SSH 安全性

信息安全 硬化 打开sh Debian
2021-09-04 12:38:37

我正在运行以下版本的 GNU/Linux Debian:

cat /etc/issue

说:

Debian GNU/Linux 9

使用以下内核:

uname -r

说:

4.9.0-2-amd64

并运行以下版本的 OpenSSH:

apt-cache policy openssh-server | grep Installed

说:

Installed: 1:7.4p1-7

我的目的是加强一点服务器的 SSH 安全性,因为我需要从任何 IP 访问,甚至从任何 VPN 访问。

到目前为止我已经完成的这些步骤:

  1. 禁用直接 root 访问:

    cat /etc/ssh/sshd_config | grep PermitRootLogin
    

    设定为:

    PermitRootLogin no
    
  2. 执行 SSH 协议版本 2:

    cat /etc/ssh/sshd_config | grep Protocol
    

    设定为:

    Protocol 2
    
  3. 将端口更改为随机端口,我不会在这里写,所以说12345:

    cat /etc/ssh/sshd_config | grep Port
    

    设定为:

    Port 12345
    
  4. 我为此在防火墙上打了个洞:

    sudo iptables -A INPUT -p tcp -m tcp --dport 12345 -m comment --comment "ssh" -j ACCEPT
    
  5. 我已经生成了一个 8 KB 长度的新密钥(我知道 CPU 开销和这种大密钥的其他缺点):

    ssh-keygen -t rsa -b 8192
    
  6. 然后我验证了尺寸匹配:

    ll /home/fictional_user/.ssh/id_rsa*
    

    是应该的,以及访问权限:

    -rw------- 1 fictional_user fictional_group 6.3K Mar 16 11:53 /home/fictional_user/.ssh/id_rsa
    -rw-r--r-- 1 fictional_user fictional_group 1.4K Mar 16 11:53 /home/fictional_user/.ssh/id_rsa.pub
    
  7. 我已添加此密钥并验证没有其他密钥:

    eval $(ssh-agent -s)
    ssh-add
    ssh-add -l
    

    结果是:

    8192 SHA256:gibberish /home/fictional_user/.ssh/id_rsa (RSA)
    8192 SHA256:gibberish fictional_user@fictional_computer (RSA)
    
  8. 我已将密钥导入两台机器,它们将维护服务器:

    ssh-copy-id fictional_user@public_ip -p 12345
    
  9. 之后,我完全禁用了密码验证:

    cat /etc/ssh/sshd_config | grep PasswordAuthentication
    

    设定为:

    PasswordAuthentication no
    

问题:我是否忘记了任何事情,或者这是我能做的最大事情?

2个回答

可以做很多事情:

  • 设置使用密钥拉伸算法的私钥来保护密码短语的暴力破解。
  • 在 sshd 中配置AllowUsers,以便只有命名帐户才能获得访问权限
  • 使用 fail2ban 或fwknop进一步防止外部攻击(请记住CVE-2008-0166导致 Debian 用户仅生成 32,767 个可能的密钥之一)
  • 主动监控您的机器是否受到攻击

只是一些想法:

  • sshd 支持 tcpwrappers,这会在您的防火墙关闭时增加保护。
  • 您的文件系统是否支持这些公钥的属性?而是使它们尽可能只读。
  • 考虑使用 ssh-keysigning 来限制密钥可用的时间。