SSH服务安全配置
字数 1438
更新时间 2026-01-01 23:02:50

SSH服务安全配置

  1. 核心概念
    SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中提供安全的远程登录、命令执行、文件传输等服务。安全配置是指对SSH服务器软件(通常是sshd)的设置进行调整,以关闭不安全的功能、启用更强的保护机制,从而抵抗暴力破解、中间人攻击、信息泄露等威胁。

  2. 关键配置文件
    SSH服务器的行为几乎完全由配置文件控制。主配置文件通常位于 /etc/ssh/sshd_config。任何修改后,必须重启SSH服务(如执行systemctl restart sshd)或重新加载配置(如执行systemctl reload sshd)才能生效。在修改前,务必备份原文件。

  3. 基础加固措施(必做项)

    • 修改默认端口:将Port指令从默认的22改为一个大于1024的非常用端口(如Port 2345)。这能大幅减少自动化扫描和低水平暴力破解攻击。
    • 禁止root用户直接登录:设置PermitRootLogin no。管理员应先以普通用户登录,再通过susudo切换权限,这增加了攻击者获取最高权限的难度。
    • 使用密钥认证,禁用密码认证
      • 生成公钥-私钥对(在客户端使用ssh-keygen命令)。
      • 将公钥(默认为~/.ssh/id_rsa.pub)内容添加到服务器对应用户的~/.ssh/authorized_keys文件中。
      • 在配置文件中设置PasswordAuthentication noPubkeyAuthentication yes。这是防止暴力破解密码最有效的手段。
    • 限制用户和用户组:使用AllowUsers(如AllowUsers alice bob)或AllowGroups(如AllowGroups sshusers)指令,明确指定允许通过SSH登录的用户或用户组,实现白名单控制。
  4. 高级安全增强

    • 使用更强的加密算法:禁用已被认为不安全或过时的算法。例如,可以添加以下配置:
      KexAlgorithms curve25519-sha256,ecdh-sha2-nistp521
      Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
      MACs hmac-sha2-512-etm@openssh.com
      
    • 限制访问频率和连接数:通过MaxAuthTries(如设置为3)限制每个连接允许的最大认证次数。更精细的频率限制通常需要配合fail2ban或系统防火墙(如iptablesfirewalld)实现,以自动封禁多次尝试失败的IP地址。
    • 设置空闲会话超时:通过ClientAliveInterval(客户端无响应多少秒后发送保活消息)和ClientAliveCountMax(发送多少次保活消息后断开连接)的组合来防止空闲会话长期占用连接。例如ClientAliveInterval 300ClientAliveCountMax 0,表示300秒(5分钟)无活动则断开连接。
    • 限制监听的网络接口:如果服务器有多个网卡,通过ListenAddress指令指定SSH只监听在管理内网IP上,如ListenAddress 192.168.1.100,避免服务暴露在公网。
  5. 审计与监控
    SSH的所有重要活动(成功、失败的登录,认证错误等)都会记录在系统日志中(通常是/var/log/auth.log/var/log/secure)。应定期检查这些日志,或使用日志分析工具(如logwatchauditd)或安全信息与事件管理(SIEM)系统进行集中监控和告警,以便及时发现异常访问行为。

SSH服务安全配置

  1. 核心概念
    SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中提供安全的远程登录、命令执行、文件传输等服务。安全配置是指对SSH服务器软件(通常是sshd)的设置进行调整,以关闭不安全的功能、启用更强的保护机制,从而抵抗暴力破解、中间人攻击、信息泄露等威胁。

  2. 关键配置文件
    SSH服务器的行为几乎完全由配置文件控制。主配置文件通常位于 /etc/ssh/sshd_config。任何修改后,必须重启SSH服务(如执行systemctl restart sshd)或重新加载配置(如执行systemctl reload sshd)才能生效。在修改前,务必备份原文件。

  3. 基础加固措施(必做项)

    • 修改默认端口:将Port指令从默认的22改为一个大于1024的非常用端口(如Port 2345)。这能大幅减少自动化扫描和低水平暴力破解攻击。
    • 禁止root用户直接登录:设置PermitRootLogin no。管理员应先以普通用户登录,再通过susudo切换权限,这增加了攻击者获取最高权限的难度。
    • 使用密钥认证,禁用密码认证
      • 生成公钥-私钥对(在客户端使用ssh-keygen命令)。
      • 将公钥(默认为~/.ssh/id_rsa.pub)内容添加到服务器对应用户的~/.ssh/authorized_keys文件中。
      • 在配置文件中设置PasswordAuthentication noPubkeyAuthentication yes。这是防止暴力破解密码最有效的手段。
    • 限制用户和用户组:使用AllowUsers(如AllowUsers alice bob)或AllowGroups(如AllowGroups sshusers)指令,明确指定允许通过SSH登录的用户或用户组,实现白名单控制。
  4. 高级安全增强

    • 使用更强的加密算法:禁用已被认为不安全或过时的算法。例如,可以添加以下配置:
      KexAlgorithms curve25519-sha256,ecdh-sha2-nistp521
      Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
      MACs hmac-sha2-512-etm@openssh.com
      
    • 限制访问频率和连接数:通过MaxAuthTries(如设置为3)限制每个连接允许的最大认证次数。更精细的频率限制通常需要配合fail2ban或系统防火墙(如iptablesfirewalld)实现,以自动封禁多次尝试失败的IP地址。
    • 设置空闲会话超时:通过ClientAliveInterval(客户端无响应多少秒后发送保活消息)和ClientAliveCountMax(发送多少次保活消息后断开连接)的组合来防止空闲会话长期占用连接。例如ClientAliveInterval 300ClientAliveCountMax 0,表示300秒(5分钟)无活动则断开连接。
    • 限制监听的网络接口:如果服务器有多个网卡,通过ListenAddress指令指定SSH只监听在管理内网IP上,如ListenAddress 192.168.1.100,避免服务暴露在公网。
  5. 审计与监控
    SSH的所有重要活动(成功、失败的登录,认证错误等)都会记录在系统日志中(通常是/var/log/auth.log/var/log/secure)。应定期检查这些日志,或使用日志分析工具(如logwatchauditd)或安全信息与事件管理(SIEM)系统进行集中监控和告警,以便及时发现异常访问行为。

SSH服务安全配置 核心概念 SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中提供安全的远程登录、命令执行、文件传输等服务。 安全配置 是指对SSH服务器软件(通常是 sshd )的设置进行调整,以关闭不安全的功能、启用更强的保护机制,从而抵抗暴力破解、中间人攻击、信息泄露等威胁。 关键配置文件 SSH服务器的行为几乎完全由配置文件控制。主配置文件通常位于 /etc/ssh/sshd_config 。任何修改后,必须重启SSH服务(如执行 systemctl restart sshd )或重新加载配置(如执行 systemctl reload sshd )才能生效。在修改前,务必备份原文件。 基础加固措施(必做项) 修改默认端口 :将 Port 指令从默认的22改为一个大于1024的非常用端口(如 Port 2345 )。这能大幅减少自动化扫描和低水平暴力破解攻击。 禁止root用户直接登录 :设置 PermitRootLogin no 。管理员应先以普通用户登录,再通过 su 或 sudo 切换权限,这增加了攻击者获取最高权限的难度。 使用密钥认证,禁用密码认证 : 生成公钥-私钥对(在客户端使用 ssh-keygen 命令)。 将公钥(默认为 ~/.ssh/id_rsa.pub )内容添加到服务器对应用户的 ~/.ssh/authorized_keys 文件中。 在配置文件中设置 PasswordAuthentication no 和 PubkeyAuthentication yes 。这是防止暴力破解密码最有效的手段。 限制用户和用户组 :使用 AllowUsers (如 AllowUsers alice bob )或 AllowGroups (如 AllowGroups sshusers )指令,明确指定允许通过SSH登录的用户或用户组,实现白名单控制。 高级安全增强 使用更强的加密算法 :禁用已被认为不安全或过时的算法。例如,可以添加以下配置: 限制访问频率和连接数 :通过 MaxAuthTries (如设置为 3 )限制每个连接允许的最大认证次数。更精细的频率限制通常需要配合 fail2ban 或系统防火墙(如 iptables 、 firewalld )实现,以自动封禁多次尝试失败的IP地址。 设置空闲会话超时 :通过 ClientAliveInterval (客户端无响应多少秒后发送保活消息)和 ClientAliveCountMax (发送多少次保活消息后断开连接)的组合来防止空闲会话长期占用连接。例如 ClientAliveInterval 300 和 ClientAliveCountMax 0 ,表示300秒(5分钟)无活动则断开连接。 限制监听的网络接口 :如果服务器有多个网卡,通过 ListenAddress 指令指定SSH只监听在管理内网IP上,如 ListenAddress 192.168.1.100 ,避免服务暴露在公网。 审计与监控 SSH的所有重要活动(成功、失败的登录,认证错误等)都会记录在系统日志中(通常是 /var/log/auth.log 或 /var/log/secure )。应定期检查这些日志,或使用日志分析工具(如 logwatch 、 auditd )或安全信息与事件管理(SIEM)系统进行集中监控和告警,以便及时发现异常访问行为。