如何加强 SSH 安全:内网和专用网络环境下的防护策略

文章目录

  • [如何加强 SSH 安全:内网和专用网络环境下的防护策略](#如何加强 SSH 安全:内网和专用网络环境下的防护策略)
  • 限制访问来源
  • 禁用密码登录,使用密钥认证
  • [启用 Fail2ban 或 SSH 防爆破](#启用 Fail2ban 或 SSH 防爆破)
  • [限制 SSH 用户](#限制 SSH 用户)
  • [更改 SSH 端口](#更改 SSH 端口)
  • 使用跳板机(堡垒机)
  • [启用 SSH 审计](#启用 SSH 审计)
  • [使用基于 VPN 的 SSH 访问](#使用基于 VPN 的 SSH 访问)
  • 强制多因素认证(MFA)
  • [绑定 SSH 到特定网卡](#绑定 SSH 到特定网卡)
  • [监控 SSH 会话](#监控 SSH 会话)
  • [配置 SSH ProxyCommand](#配置 SSH ProxyCommand)
  • 总结

如何加强 SSH 安全:内网和专用网络环境下的防护策略

在许多企业和机构中,SSH 是日常管理服务器的重要工具。即使在内网或专用网络环境中使用,SSH 依然存在潜在风险。本文将详细介绍多种 SSH 安全加固措施,从访问控制、认证方式到审计监控,全方位提升 SSH 安全性。


限制访问来源

通过防火墙或安全组限制

  • 防火墙(iptables、firewalld): 配置防火墙规则,仅允许特定 IP 地址或网段访问 SSH 服务端口。例如:

    bash 复制代码
    # iptables 示例:只允许192.168.1.0/24网段访问SSH
    iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j DROP
  • 安全组: 在云环境中,通过安全组规则限定哪些 IP 或子网能够连接到 SSH 服务。

网络策略(Network Policy)

在 Kubernetes 或其他容器平台上,可以利用网络策略限制 SSH 访问的来源,进一步减少安全风险。


禁用密码登录,使用密钥认证

密码认证相对容易受到暴力破解攻击,建议:

  • 关闭密码登录: 编辑 /etc/ssh/sshd_config,添加或修改以下配置:

    bash 复制代码
    PasswordAuthentication no
    PermitRootLogin no

    PasswordAuthentication no

    • 作用:禁用密码认证 ,即不允许使用密码登录 SSH,必须使用 密钥认证(公钥登录)。
    • 影响:如果没有正确配置 SSH 密钥对(public/private key),可能会导致无法远程登录。

    PermitRootLogin no

    • 作用:禁止 root 用户通过 SSH 直接登录,提高系统安全性。
    • 影响:即使知道 root 密码,也无法通过 SSH 直接以 root 身份登录,必须先以普通用户登录,然后再使用 susudo 提升权限。
  • 启用基于密钥的认证: 配置 SSH Key,实现更高的安全性。将公钥添加到 ~/.ssh/authorized_keys 中,并确保私钥安全存储。


启用 Fail2ban 或 SSH 防爆破

为了防止暴力破解攻击,可以使用 Fail2ban 对 SSH 登录失败进行监控,并自动封禁恶意 IP:

  • 安装 Fail2ban:

    bash 复制代码
    # CentOS
    yum install fail2ban -y
    
    # Ubuntu/Debian
    apt install fail2ban -y
  • 配置 /etc/fail2ban/jail.local

    ini 复制代码
    [sshd]
    enabled = true
    port = 22
    maxretry = 3
    bantime = 600

这样,当 SSH 登录失败次数超过限制后,系统会自动阻断该 IP 一段时间。


限制 SSH 用户

为了减少攻击面,应当仅允许必要的用户使用 SSH:

  • 允许指定用户登录:

    bash 复制代码
    AllowUsers user1 user2
  • 禁止特定用户登录:

    bash 复制代码
    DenyUsers root test

通过精确控制登录用户,可以防止非授权人员的访问。


更改 SSH 端口

默认的 SSH 端口(22)容易受到扫描和攻击。通过修改 SSH 端口,可以在一定程度上降低攻击风险:

  • 修改 /etc/ssh/sshd_config 中的端口配置:

    bash 复制代码
    Port 22022
  • 修改后,请确保相应的防火墙或安全组规则中允许新端口的流量。


使用跳板机(堡垒机)

在生产环境中,建议采用堡垒机来集中管理 SSH 访问:

  • 跳板机优势: 通过堡垒机对内部所有 SSH 会话进行统一监控和审计,避免直接暴露服务器。
  • 实施方法: 用户首先登录到堡垒机,然后再通过堡垒机访问内网服务器,所有操作均被记录和监控。

启用 SSH 审计

为便于事后审计和安全事件溯源,应启用 SSH 访问日志记录:

  • 使用 auditd: 安装 auditd 并配置规则,例如监控 SSH 配置文件变化:

    bash 复制代码
    yum install audit -y
    auditctl -w /etc/ssh/sshd_config -p wa -k ssh-config
  • 使用 go-audit: 作为 auditd 的替代方案,go-audit 同样可以帮助记录详细的 SSH 操作日志。


使用基于 VPN 的 SSH 访问

即使 SSH 服务仅用于内网,通过 VPN 隧道进行访问能提供额外的隔离:

  • 常用 VPN 解决方案: OpenVPN、WireGuard、IPSec 等均可实现安全隧道,确保数据传输在加密通道中进行。

强制多因素认证(MFA)

在内网环境中,引入多因素认证可进一步提升 SSH 登录安全性:

  • Google Authenticator 或 Duo Security: 结合 OTP(一次性密码)进行双重验证。
  • 配置示例:
    • 安装 Google Authenticator:

      bash 复制代码
      apt install libpam-google-authenticator -y  # Ubuntu/Debian
      yum install google-authenticator -y         # CentOS/RHEL
    • 修改 /etc/pam.d/sshd

      ini 复制代码
      auth required pam_google_authenticator.so
    • 修改 /etc/ssh/sshd_config 启用 ChallengeResponseAuthentication:

      ini 复制代码
      ChallengeResponseAuthentication yes
    • 重启 SSH 服务:

      bash 复制代码
      systemctl restart sshd

绑定 SSH 到特定网卡

如果服务器有多个网卡,可通过绑定让 SSH 服务只监听内网地址:

  • /etc/ssh/sshd_config 中设置:

    ini 复制代码
    ListenAddress 192.168.1.10
  • 配合 /etc/hosts.allow 限制访问来源:

    ini 复制代码
    sshd: 192.168.1.0/24

监控 SSH 会话

实时监控 SSH 会话能帮助管理员及时发现异常行为:

  • 使用 auditd: 监控 SSH 操作日志,对关键文件进行实时监控。

  • 使用 pam_tty_audit:/etc/pam.d/sshd 中启用:

    ini 复制代码
    session required pam_tty_audit.so enable=*

这样,所有 SSH 会话中的命令都会被记录,便于事后调查。


配置 SSH ProxyCommand

对于分布式或多跳环境,使用 SSH ProxyCommand 能进一步增强访问控制:

  • 示例命令:

    bash 复制代码
    ssh -o ProxyCommand="ssh -W %h:%p bastion-host" user@target-host

这可以将 SSH 连接通过堡垒机(bastion-host)进行转发,进一步隔离内部网络。


总结

在内网或专用网络中部署 SSH 并不意味着安全性可以放松。通过限制访问来源、禁用密码登录、采用密钥认证、启用 Fail2ban、使用堡垒机、配置审计日志以及引入多因素认证等多重措施,可以显著降低内部风险和潜在攻击面。同时,结合 VPN 和网络策略等技术手段,使 SSH 服务即使不暴露在公网,也能应对来自内部网络的威胁。

相关推荐
VidDown4 小时前
在线视频下载器技术解析:原理、工具与合规实践
网络·音视频·实时音视频·视频编解码·视频下载
努力努力再努力wz4 小时前
【高性能网络库与HTTP Server系列】:基于主从 Reactor 模型实现高性能 C++ 网络库与 HTTP Server
开发语言·网络·数据结构·数据库·c++·网络协议·http
HackTwoHub4 小时前
某单位 CMS 完整渗透链、SQL 注入→后台拿权→绕过宝塔 Waf 上线 shell
数据库·人工智能·sql·安全·网络安全·系统安全·安全架构
Mr.HeBoYan4 小时前
DPDK为什么越来越少使用rte_ring?——从Lock-Free到Run-to-Completion,重新理解现代DPDK架构演进(上)
linux·网络·算法·性能优化·架构·dpdk
山东穆柯传感器4 小时前
车间安监验收不通过?安全地毯选对厂家一次达标
安全
Kyrie6785 小时前
OpenSSH 10.4 发布:后量子签名时代来临
安全
IVVi0jToe5 小时前
高效C++线程池设计与实现
java·c++·安全
z小猫不吃鱼5 小时前
06 权重幅值剪枝、剪枝后微调与稀疏网络训练:模型剪枝中的三个基本问题
网络·算法·剪枝
2301_780356705 小时前
全视通智慧医院解决方案:构建数智化医疗新生态
大数据·网络·人工智能
白白白飘6 小时前
【8】补充与拓展:Langchain的联网搜索Agent,使用Tavily工具
服务器·网络·langchain