蜜罐项目-端口流量转发(透传ip)方案调研
字数 1326 2025-08-22 18:37:21

蜜罐项目端口流量转发(透传IP)方案调研与实践指南

0x00 前言

在蜜罐部署方案中,常遇到需要在多个节点监听端口并将流量转发到中央蜜罐的需求,同时要求蜜罐能记录原始攻击者IP。本文详细调研了多种端口流量转发方案,重点测试了IP透传能力,为蜜罐轻量级部署提供技术参考。

0x01 端口流量转发方案详解

1.1 rinetd方案

基本特性

  • 轻量级TCP端口转发工具
  • 无法透传原始IP(蜜罐只能看到转发节点的IP)

部署方法

# 安装rinetd
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -xvf rinetd.tar.gz
cd rinetd
make && make install

配置文件示例

# /etc/rinetd.conf
# 绑定地址 绑定端口 转发地址 转发端口
0.0.0.0 10000 192.168.40.148 10000

优缺点

  • 优点:配置简单,资源占用低
  • 缺点:无法透传IP,需通过日志关联分析原始IP

1.2 haproxy方案

1.2.1 基础转发模式

部署步骤

wget http://www.haproxy.org/download/2.1/src/haproxy-2.1.5.tar.gz
tar -xzf haproxy-2.1.5.tar.gz
cd haproxy-2.1.5/
make -j $(nproc) PREFIX=/home/ha/haproxy TARGET=linux-glibc USE_NS=
make install

配置文件

# /etc/haproxy/haproxy.cfg
global
defaults
    log global
    mode tcp
    option dontlognull
    timeout connect 5000
    timeout client 50000
    timeout server 50000

frontend name-in
    bind *:10000
    default_backend name-out

backend name-out
    server server1 192.168.40.148 maxconn 20480

问题:基础模式无法透传原始IP

1.2.2 IP透传模式

关键修改

  1. 重新编译haproxy:
make -j $(nproc) PREFIX=/home/ha/haproxy TARGET=linux-glibc USE_LINUX_TPROXY=1 USE_NS=
  1. 修改配置文件:
global
defaults
    log global
    mode tcp
    source 0.0.0.0 usesrc clientip  # 关键配置
    option dontlognull
    timeout connect 5000
    timeout client 50000
    timeout server 50000
  1. 蜜罐机器路由配置:
route add -net 192.168.0.0/16 gw 192.168.40.147
  1. Proxy节点路由配置:
/sbin/iptables -F
/sbin/iptables -t mangle -N DIVERT
/sbin/iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
/sbin/iptables -t mangle -A DIVERT -j MARK --set-mark 1
/sbin/iptables -t mangle -A DIVERT -j ACCEPT
/sbin/ip rule add fwmark 1 lookup 100
/sbin/ip route add local 0.0.0.0/0 dev lo table 100

优缺点

  • 优点:可实现TCP协议IP透传
  • 缺点:
    • 不支持UDP协议
    • 需修改蜜罐路由表,可能影响网络

1.3 nginx方案

1.3.1 基础转发配置

安装与配置

yum install nginx
vim /etc/nginx/nginx.conf

配置文件

stream {
    upstream master {
        server 192.168.40.147:10000;
    }
    server {
        listen 9999;
        listen 10000 udp;
        proxy_timeout 20s;
        proxy_pass master;
        proxy_buffer_size 512k;
    }
}

1.3.2 IP透传模式

蜜罐机器配置

stream {
    upstream dns_master {
        server 192.168.40.147:10000;
    }
    server {
        listen 9999;
        proxy_responses 1;
        proxy_timeout 2s;
        proxy_bind $remote_addr transparent;
        proxy_pass dns_master;
    }
}

路由配置

  1. A机器配置:
route del default gw 192.168.40.1
route add default gw 192.168.40.148
  1. 蜜罐机器配置:
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
iptables -t mangle -A PREROUTING -p tcp -s 192.168.0.0/16 --sport 10000 -j MARK --set-xmark 0x1/0xffffffff

优缺点

  • 优点:支持TCP/UDP协议
  • 缺点:需修改蜜罐路由表,可能影响网络

1.4 iptables方案

1.4.1 基础转发配置

配置步骤

  1. 开启IP转发:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
  1. 添加iptables规则:
iptables -t nat -A PREROUTING -p tcp --dport 10000 -j DNAT --to-destination 192.168.40.148
iptables -t nat -A PREROUTING -p udp --dport 10000 -j DNAT --to-destination 192.168.40.148
iptables -t nat -A POSTROUTING -p tcp -d 192.168.40.148 --dport 10000 -j SNAT --to-source 192.168.40.147
iptables -t nat -A POSTROUTING -p udp -d 192.168.40.148 --dport 10000 -j SNAT --to-source 192.168.40.147

1.4.2 IP透传模式

配置方法

  1. A机器配置:
iptables -t nat -F
iptables -t nat -A PREROUTING -p tcp -d 192.168.40.147 --dport 10000 -j DNAT --to 192.168.40.148
iptables -t nat -A POSTROUTING -s 192.168.40.148 SNAT --to 192.168.40.147
  1. 蜜罐机器配置:
ip route del default
ip route add default via 192.168.40.1

优缺点

  • 优点:系统自带,无需额外安装
  • 缺点:需修改蜜罐默认路由,影响网络

1.5 iptables + GRE隧道方案

1.5.1 A机器配置

  1. 开启路由转发及加载模块:
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe --first-time ip_gre
  1. 配置GRE隧道:
ip link add gre-y type gre local 192.168.40.147 remote 192.168.40.148 ttl 64
ip link set gre-y up
ip addr add 192.168.40.1/24 dev gre-y
  1. 添加iptables规则:
iptables -t nat -I PREROUTING -p tcp --dport 10000 -j DNAT --to-destination 10.1.1.3:10000

1.5.2 蜜罐机器配置

  1. 配置GRE隧道:
ip link add gre-x type gre local 192.168.40.148 remote 192.168.40.147 ttl 64
ip link set gre-x up
ip addr add 192.168.40.148/24 dev gre-x
  1. 配置策略路由:
ip route add default via 192.168.40.147 dev gre-x table 1111
ip rule add pref 1000 from 192.168.40.148 lookup 1111

优缺点

  • 优点:对蜜罐网络影响较小
  • 缺点:配置较复杂

0x02 方案对比总结

方案 协议支持 IP透传能力 对蜜罐影响 复杂度
rinetd TCP 不支持
haproxy TCP/HTTP/HTTPS 支持(需特殊配置) 需改路由表
nginx TCP/UDP 支持(需特殊配置) 需改路由表
iptables TCP/UDP 支持(需特殊配置) 需改默认路由
iptables+GRE TCP/UDP 支持 影响较小

0x03 实践建议

  1. 简单场景:若无IP透传需求,使用rinetd最为简单
  2. TCP服务:推荐haproxy透传方案,性能较好
  3. UDP服务:考虑nginx或iptables+GRE方案
  4. 容器化环境:需特别注意网络命名空间隔离问题,可能需要定制网络方案

注意:所有涉及修改路由表的方案都可能影响蜜罐网络稳定性,建议在测试环境充分验证后再上线生产环境。

蜜罐项目端口流量转发(透传IP)方案调研与实践指南 0x00 前言 在蜜罐部署方案中,常遇到需要在多个节点监听端口并将流量转发到中央蜜罐的需求,同时要求蜜罐能记录原始攻击者IP。本文详细调研了多种端口流量转发方案,重点测试了IP透传能力,为蜜罐轻量级部署提供技术参考。 0x01 端口流量转发方案详解 1.1 rinetd方案 基本特性 : 轻量级TCP端口转发工具 无法透传原始IP(蜜罐只能看到转发节点的IP) 部署方法 : 配置文件示例 : 优缺点 : 优点:配置简单,资源占用低 缺点:无法透传IP,需通过日志关联分析原始IP 1.2 haproxy方案 1.2.1 基础转发模式 部署步骤 : 配置文件 : 问题 :基础模式无法透传原始IP 1.2.2 IP透传模式 关键修改 : 重新编译haproxy: 修改配置文件: 蜜罐机器路由配置: Proxy节点路由配置: 优缺点 : 优点:可实现TCP协议IP透传 缺点: 不支持UDP协议 需修改蜜罐路由表,可能影响网络 1.3 nginx方案 1.3.1 基础转发配置 安装与配置 : 配置文件 : 1.3.2 IP透传模式 蜜罐机器配置 : 路由配置 : A机器配置: 蜜罐机器配置: 优缺点 : 优点:支持TCP/UDP协议 缺点:需修改蜜罐路由表,可能影响网络 1.4 iptables方案 1.4.1 基础转发配置 配置步骤 : 开启IP转发: 添加iptables规则: 1.4.2 IP透传模式 配置方法 : A机器配置: 蜜罐机器配置: 优缺点 : 优点:系统自带,无需额外安装 缺点:需修改蜜罐默认路由,影响网络 1.5 iptables + GRE隧道方案 1.5.1 A机器配置 开启路由转发及加载模块: 配置GRE隧道: 添加iptables规则: 1.5.2 蜜罐机器配置 配置GRE隧道: 配置策略路由: 优缺点 : 优点:对蜜罐网络影响较小 缺点:配置较复杂 0x02 方案对比总结 | 方案 | 协议支持 | IP透传能力 | 对蜜罐影响 | 复杂度 | |------|----------|------------|------------|--------| | rinetd | TCP | 不支持 | 无 | 低 | | haproxy | TCP/HTTP/HTTPS | 支持(需特殊配置) | 需改路由表 | 中 | | nginx | TCP/UDP | 支持(需特殊配置) | 需改路由表 | 中 | | iptables | TCP/UDP | 支持(需特殊配置) | 需改默认路由 | 中 | | iptables+GRE | TCP/UDP | 支持 | 影响较小 | 高 | 0x03 实践建议 简单场景 :若无IP透传需求,使用rinetd最为简单 TCP服务 :推荐haproxy透传方案,性能较好 UDP服务 :考虑nginx或iptables+GRE方案 容器化环境 :需特别注意网络命名空间隔离问题,可能需要定制网络方案 注意 :所有涉及修改路由表的方案都可能影响蜜罐网络稳定性,建议在测试环境充分验证后再上线生产环境。