You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NAT后SSH服务器的fail2ban防护方案咨询(公网转发服务器无登录结果、内网服务器无真实源IP)

NAT后SSH服务器的fail2ban防护方案咨询(公网转发服务器无登录结果、内网服务器无真实源IP)

这个场景我太熟了!之前帮朋友处理过几乎一模一样的问题,咱们一步步来拆解几个可行的解决办法,总有一个适合你:

方案一:日志联动+公网服务器端fail2ban封禁

这是最贴合你当前iptables转发架构的方案,不用改现有转发逻辑:

  • 第一步:同步内网服务器的SSH相关日志到公网服务器
    在内网服务器上配置rsyslog(或者你用的其他日志服务),把SSH日志(比如/var/log/auth.log或/var/log/secure)实时发送到公网服务器的syslog服务。具体操作就是在内网的rsyslog配置文件里加一行:auth.* @[公网服务器IP]:514(用UDP端口,怕丢包的话可以换成TCP的@@),然后重启rsyslog服务就行。
  • 第二步:让公网服务器记录转发连接的真实源IP
    在公网服务器上添加一条iptables规则,把所有发往你监听的SSH转发端口的连接都记录到日志里:
    iptables -A INPUT -p tcp --dport [你的公网监听端口] -j LOG --log-prefix "SSH_FORWARD: " --log-level info
    
    这样公网服务器的系统日志里就会出现类似SSH_FORWARD: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx SRC=真实源IP DST=公网服务器IP PROTO=TCP SPT=xxxx DPT=你的监听端口的记录,里面就有咱们需要的真实源IP。
  • 第三步:在公网服务器上配置自定义fail2ban规则
    新建一个fail2ban的filter配置(比如/etc/fail2ban/filter.d/ssh-forward.conf),规则要同时匹配内网发来的登录失败日志(比如Failed password for.*from [公网服务器IP])和公网服务器自己记录的SSH_FORWARD连接日志,通过时间戳关联出对应的真实源IP,然后在jail配置里启用这个filter,用默认的iptables action封禁这个IP就行。

方案二:改用ProxyProtocol让内网服务器拿到真实源IP

如果愿意调整一下转发架构,这个方案更省心:

  • 替换iptables转发为支持ProxyProtocol的服务(比如haproxy或nginx),以haproxy为例,核心配置大概是:
    frontend ssh_frontend
        bind [公网服务器IP]:[监听端口]
        mode tcp
        default_backend ssh_backend
    
    backend ssh_backend
        mode tcp
        server internal_ssh [内网服务器IP]:22 send-proxy
    
  • 在内网服务器的SSH配置里开启ProxyProtocol支持:编辑/etc/ssh/sshd_config,添加一行ProxyProtocolAccept yes(注意OpenSSH版本要6.7以上才支持这个选项),然后重启sshd服务。
    这时候内网服务器的SSH日志里就会直接显示真实源IP了,接下来就和普通服务器一样,在内网服务器上配置fail2ban,直接封禁真实源IP就行。要是想让封禁更彻底,还可以配置fail2ban的跨服务器同步,让内网的fail2ban触发封禁时,自动登录到公网服务器执行iptables封禁命令。

方案三:用SSH反向代理替代iptables转发

如果不想用额外的转发服务,也可以用SSH自身的转发功能:

  • 在公网服务器上创建一个专门用于转发的用户(比如ssh-proxy),然后编辑这个用户的~/.ssh/authorized_keys,添加一行:
    command="ssh -W [内网服务器IP]:22" ssh-rsa [你的客户端公钥]
    
  • 然后在公网服务器的sshd配置里开启GatewayPorts yes,重启sshd。
    这样用户连接公网服务器的指定端口时,会自动转发到内网服务器。这时候公网服务器的sshd日志会记录真实源IP,同时内网的登录验证结果会通过转发通道反馈回来,你可以在公网服务器上配置fail2ban监控sshd日志里的转发连接失败记录,直接封禁源IP。

备注:内容来源于stack exchange,提问作者nanotech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:24:31