如何安全管理SSH密钥以防止香港VSP服务器被入侵

 

管理 SSH 密钥是保护香港VPS服务器安全的核心措施之一。


1. 什么是 SSH 密钥?

SSH 密钥是基于公钥加密的认证方式,包含以下两部分:

  • 私钥:存储在客户端,用于身份认证。必须严格保护,禁止泄露。
  • 公钥:存储在服务器上,用于验证私钥的合法性。

使用 SSH 密钥可以替代传统的用户名密码认证,避免因弱密码而被暴力破解。


2. 生成和配置 SSH 密钥

2.1 生成 SSH 密钥对

在客户端生成 SSH 密钥对(Linux/MacOS/Windows WSL):

  1. 打开终端,运行以下命令:

    bash
     
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
    • -t rsa:使用 RSA 算法。
    • -b 4096:密钥长度为 4096 位(更安全)。
    • -C:添加注释(如邮箱地址)。
  2. 选择密钥存储路径(默认是 ~/.ssh/id_rsa),并设置密钥密码(强烈建议设置)。


2.2 将公钥部署到服务器

  1. 使用以下命令将公钥传输到服务器:

    bash
     
    ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip
    
    • 替换 usernameserver_ip 为服务器的用户名和 IP 地址。
    • 该命令会将公钥添加到服务器的 ~/.ssh/authorized_keys 文件中。
  2. 或手动添加:

    • 将公钥内容复制到服务器上的 ~/.ssh/authorized_keys 文件:
      bash
       
      cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      
    • 确保文件权限正确:
      bash
       
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys
      

2.3 禁用密码登录

为了防止暴力破解和弱密码攻击,禁用 SSH 密码登录:

  1. 编辑 SSH 配置文件:
    bash
     
    sudo nano /etc/ssh/sshd_config
    
  2. 修改以下参数:
    plaintext
     
    PasswordAuthentication no
    PubkeyAuthentication yes
    ChallengeResponseAuthentication no
    
  3. 保存文件后,重启 SSH 服务:
    bash
     
    sudo systemctl restart sshd
    

3. SSH 密钥安全管理措施

3.1 强化私钥保护

  1. 设置密钥密码

    • 为私钥设置强密码,防止密钥文件被复制后直接使用。
    • 如果需要为现有私钥添加密码:
      bash
       
      ssh-keygen -p -f ~/.ssh/id_rsa
      
  2. 限制私钥文件权限

    • 确保私钥文件只有所有者可读写:
      bash
       
      chmod 600 ~/.ssh/id_rsa
      
  3. 存储私钥的安全位置

    • 存储在本地设备的默认位置(如 ~/.ssh)。
    • 不要将私钥存储在云存储、共享文件夹或未经加密的移动存储设备中。

3.2 使用 SSH Agent 管理密钥

  1. 启动 SSH Agent:
    bash
     
    eval "$(ssh-agent -s)"
    
  2. 将私钥添加到 SSH Agent:
    bash
     
    ssh-add ~/.ssh/id_rsa
    
  3. 验证添加的密钥:
    bash
     
    ssh-add -l
    
  4. 配置 SSH Agent 自动加载密钥(Linux/MacOS):
    • ~/.bashrc 文件中添加以下内容:
      bash
       
      eval "$(ssh-agent -s)"
      ssh-add ~/.ssh/id_rsa
      

3.3 定期检查和更换密钥

  1. 定期更换密钥

    • 定期生成新的密钥对,并替换旧的公钥。
    • 删除旧的公钥:
      bash
       
      nano ~/.ssh/authorized_keys
      
      删除对应的公钥行后保存。
  2. 检查授权密钥

    • 登录服务器,检查 ~/.ssh/authorized_keys 文件中是否有未知公钥。
    • 删除不认识的公钥。

3.4 限制公钥的使用范围

  1. 为公钥设置特定的使用限制:

    • ~/.ssh/authorized_keys 文件的每一行公钥前添加限制参数:
      plaintext
       
      from="192.168.0.0/24",command="/path/to/script.sh",no-port-forwarding,no-X11-forwarding ssh-rsa AAAAB3...
      
    • 说明
      • from:限制公钥仅允许来自特定 IP 或网段的连接。
      • command:限制公钥只能执行特定命令。
      • no-port-forwarding:禁用端口转发。
      • no-X11-forwarding:禁用 X11 转发。
  2. 配置示例:

    plaintext
     
    from="203.0.113.0/24",no-port-forwarding,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3...
    

3.5 监控 SSH 登录行为

  1. 查看登录日志

    • 检查登录成功和失败记录:
      bash
       
      sudo cat /var/log/auth.log | grep sshd
      
  2. 安装 Fail2Ban 防止暴力破解

    • 安装 Fail2Ban:
      bash
       
      sudo apt install fail2ban
      
    • 配置 /etc/fail2ban/jail.local 文件:
      plaintext
       
      [sshd]
      enabled = true
      port = ssh
      maxretry = 5
      bantime = 3600
      
    • 重启 Fail2Ban 服务:
      bash
       
      sudo systemctl restart fail2ban
      
  3. 实时监控登录活动

    • 使用工具(如 logwatchZabbix)监控 SSH 登录行为。

4. 保护 SSH 服务本身

4.1 更改默认端口

  • 修改 SSH 默认端口(22)为非标准端口:
    1. 编辑配置文件:
      bash
       
      sudo nano /etc/ssh/sshd_config
      
    2. 修改以下行:
      plaintext
       
      Port 2222
      
    3. 重启 SSH 服务:
      bash
       
      sudo systemctl restart sshd
      

4.2 限制登录用户

  • 允许特定用户登录:
    1. 编辑配置文件:
      bash
       
      sudo nano /etc/ssh/sshd_config
      
    2. 添加以下行:
      plaintext
       
      AllowUsers your_user
      
    3. 保存后重启 SSH 服务。

4.3 启用双因素认证(2FA)

  • 配置 Google Authenticator:
    1. 安装 PAM 模块:
      bash
       
      sudo apt install libpam-google-authenticator
      
    2. 设置 2FA:
      bash
       
      google-authenticator
      
    3. 编辑 /etc/pam.d/sshd,添加:
      plaintext
       
      auth required pam_google_authenticator.so
      
    4. 编辑 /etc/ssh/sshd_config,启用 2FA:
      plaintext
       
      ChallengeResponseAuthentication yes
      
    5. 重启 SSH 服务。

5. 总结

通过以下措施,可以显著提高 SSH 密钥管理的安全性,防止香港VPS服务器被入侵:

  1. 生成安全的密钥对:使用强加密算法和长密钥。
  2. 保护私钥:设置密码、限制权限、存储在安全位置。
  3. 禁用密码登录:强制使用 SSH 密钥认证。
  4. 限制公钥使用范围:绑定 IP、禁用端口转发等功能。
  5. 启用防护措施:安装 Fail2Ban、防火墙、2FA 等。

定期检查 SSH 配置和密钥状态,监控服务器登录行为,才能有效防止VPS服务器潜在的安全威胁。

超过 50,000 人的信任 网硕互联期待你加入我们的会员。