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

AWS EC2挂载ELB时SFTP日志获取用户真实IP的处理方案

解决SFTP日志显示ELB内部IP而非用户真实IP的方案

这是负载均衡后端服务常见的源IP丢失问题,我整理了几个经过验证的实用方案,按直接解决的优先级排序:

方案1:启用ELB的Proxy Protocol(推荐直接解决)

Proxy Protocol是TCP层的协议扩展,能让ELB把客户端的真实IP和端口信息直接传递给后端的SFTP服务器。具体操作步骤如下:

  1. 在ELB上开启Proxy Protocol
    进入你的ELB配置界面,找到对应SFTP的TCP监听(通常是22端口),开启Proxy Protocol转发选项并保存配置。不同云厂商的操作路径略有差异,但核心都是打开这个协议开关。

  2. 修改SFTP服务器的sshd配置
    编辑OpenSSH的配置文件/etc/ssh/sshd_config,添加或调整以下内容:

    # 如果所有SFTP连接都来自ELB,可全局开启Proxy Protocol
    ProxyProtocol yes
    
    # 更安全的方式:仅对ELB内部IP段启用该规则
    # Match Address 10.1.0.0/16  # 替换为你的ELB内部IP段
    #     ProxyProtocol yes
    

    注意:Match规则需要放在配置文件末尾,否则会影响后续的全局配置。

  3. 重启sshd服务使配置生效
    执行命令重启服务:

    sudo systemctl restart sshd
    

    完成后,SFTP日志里就会直接记录客户端的真实公网IP了。

  4. 安全加固
    由于启用Proxy Protocol后,非ELB的客户端因无法发送协议头部会被拒绝连接,建议通过防火墙限制仅允许ELB的IP段访问22端口:

    sudo iptables -A INPUT -p tcp --dport 22 -s ELB内部IP段 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 22 -j DROP
    

方案2:通过ELB访问日志关联真实IP(适合无法修改SFTP配置的场景)

如果暂时无法调整SFTP服务器的配置,可以利用ELB的访问日志间接匹配真实IP:

  1. 开启ELB的访问日志功能
    在ELB配置中启用访问日志,日志会包含客户端真实IP、ELB内部IP、连接时间、目标端口等关键信息。

  2. 关联两类日志
    SFTP日志中记录的ELB内部IP、连接时间,和ELB日志中的对应字段一一匹配,就能通过时间戳和连接上下文找到对应的客户端真实IP。你可以写简单的Shell/Python脚本自动关联,或者用ELK这类日志分析工具做可视化匹配。

关键注意事项

  • Proxy Protocol仅适用于TCP类型的ELB监听,SFTP基于SSH(TCP协议),完全适配;HTTP/HTTPS场景常用的X-Forwarded-For头不适用于SFTP。
  • 启用Proxy Protocol后,务必确保只有ELB能访问SFTP端口,避免其他合法客户端因无法发送协议头部而连接失败。

内容的提问来源于stack exchange,提问作者Pramod Gouda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:22:51