PBR引流BMF

场景描述

通过在路由器上配置基于端口的PBR,实现将指定流量引至BMF进行安全分析而后回注路由器的目的。

因为PBR比默认路由优先级高,因此配置PBR时要注意回注的流量能否正确路由的问题

实验环境搭建

要实现PBR引流BMF,我们需要下面几个要素:

  1. 流量
  2. 路由器
  3. BMF

利用手头的资源,决定使用Linux系统充当路由器,通过配置namespace构造流量。下面是实验环境的拓扑图:


PBR引流BMF拓扑图
I. pbr-router
  1. 环境准备:使用裸机安装CentOS 7发行版,并安装Open vSwitch (以下简称ovs)。网络方面,除管理口外还要UP两个口egress ingress (根据自己设备指定值,如em2 eth2等),直连egress与BMFfilteringress与BMFdelivery
  2. 创建三个namespace router src dst、三个ovs网桥br-pbr br-egress br-ingress,将egress物理口加入br-egressingress物理口加入br-ingress。再创建两个ovs patch口用于连接三个ovs网桥
# 创建namespace
ip netns add src
ip netns add dst
ip netns add router
# 创建ovs网桥
ovs-vsctl add-br br-pbr
ovs-vsctl add-br br-ingress
ovs-vsctl add-br br-egress
# 使用patch port连接ovs网桥
ovs-vsctl \
-- add-port br-pbr pbr-patch-ingress \
-- set Interface pbr-patch-ingress type=patch options:peer=ingress-patch-pbr \
-- add-port br-ingress ingress-patch-pbr \
-- set Interface ingress-patch-pbr type=patch options:peer=pbr-patch-ingress 
ovs-vsctl \
-- add-port br-pbr pbr-patch-egress \
-- set Interface pbr-patch-egress type=patch options:peer=egress-patch-pbr \
-- add-port br-egress egress-patch-pbr \
-- set Interface egress-patch-pbr type=patch options:peer=pbr-patch-egress 
# 将物理口加入ovs网桥
ovs-vsctl add-port br-ingress ingress
ovs-vsctl add-port br-egress egress
  1. 创建一对veth pair,分别放到namespace src和ovs的br-pbr中,用作请求的源端。再创建一对veth pair,分别放到namespace dst和ovs的br-pbr中,用作请求的目的端
# 创建veth对
ip link add veth-src type veth peer name veth-src-br
ip link add veth-dst type veth peer name veth-dst-br
ip link add dev src netns veth-src
ip link add dev dst netns veth-dst
ip netns exec src ifconfig veth-src 192.168.0.2/24 up
ip netns exec dst ifconfig veth-dst 192.168.2.2/24 up
ip netns exec src ifconfig lo up
ip netns exec dst ifconfig lo up
# 将veth一段加入ovs网桥
ovs-vsctl add-port br-pbr veth-src-br
ovs-vsctl add-port br-pbr veth-dst-br
  1. 创建四个ovs的internal port,放入namespace router中。其中,qr-0-1为src的默认网关,qr-1-1为dst的默认网关,qg-e为PBR出口,qg-i为PBR回注口。

四个port在不同网段。qg-enf-in同网段,qg-inf-out同网段。并且,router namespace中要配置nf-in静态arp

# 创建四个ovs internal port
ovs-vsctl add-port br-pbr qr-0-1\
-- set Interface qr-0-1 type=internal
ovs-vsctl add-port br-pbr qr-1-1\
-- set Interface qr-1-1 type=internal
ovs-vsctl add-port br-pbr qg-e\
-- set Interface qg-e type=internal
ovs-vsctl add-port br-pbr qg-i\
-- set Interface qg-i type=internal
# 将ovs internel port加入router namespace
ip link set dev qr-0-1 netns router
ip link set dev qr-1-1 netns router
ip link set dev qg-i netns router
ip link set dev qg-e netns router
ip netns exec router ifconfig qr-0-1 192.168.0.1/24 up
ip netns exec router ifconfig qr-1-1 192.168.1.1/24 up
ip netns exec router ifconfig qg-e 172.16.0.1/24 up
ip netns exec router ifconfig qg-i 172.16.1.1/24 up
ip netns exec router ifconfig lo up
# 设置网关和arp
ip netns exec src ip ro add default via 192.168.0.1
ip netns exec dst ip ro add default via 192.168.1.1
ip netns exec router arp -s 172.16.0.2 <MAC>
  1. routernamespace中并配置PBR
  • qr-0-1进来的流量,下一跳为nf-in的IP
  • qr-1-1进来的流量,下一跳为nf-in的IP
# 开启linux内核转发
ip netns exec router sysctl -w net.ipv4.ip_forward=1
# 创建pbr路由表
echo "1  pbr" >> /etc/iproute2/rt_tables
ip netns exec router ip ro add default via 172.16.0.2 table pbr
# 第一条策略路由
ip netns exec router ip ru add from all iif qr-0-1 table pbr
# 第二条策略路由
ip netns exec router ip ru add from all iif qr-1-1 table pbr
II. BMF service-node
  1. 环境准备:使用裸机安装CentOS 7发行版,除管理口外还要UP两个口nf-in nf-out (根据自己设备指定值,如em2 eth2等),将两个口接入BMF,配置好Policy
# 开启linux内核转发
sysctl -w net.ipv4.ip_forward=1
# UP两块网卡,并配置IP地址
ifconfig nf-in 172.16.0.2/24 up
ifconfig ne-out 172.16.1.2/24 up
  1. 配置PBR
  • nf-in进来的流量,下一跳为qg-i的IP

要配置qg-i静态arp

# 开启linux内核转发
sysctl -w net.ipv4.ip_forward=1
# 创建pbr路由表
echo "1  pbr" >> /etc/iproute2/rt_tables
ip ro add default via 172.16.1.1 table pbr
# 第一条策略路由
ip ru add from all iif nf-in table pbr
# 添加静态arp
arp -s 172.16.1.1 <MAC>
实验环境下流量走向
  1. pbr-router的srcnamespace发送向dst的请求报文,会根据namespace中配置的默认路由经由src-port到达qr-0-1
  2. qr-0-1收到的请求报文命中PBR,知道下一跳为nf-in,于是从qg-e发出,在ovs内部经由patch口到达br-egress,最终由egress物理口发出,达到BMF中的nf-in
  3. nf-in收到的请求报文命中PBR,知道下一跳为qg-i,于是从nf-out发出,穿过BMF到达ingress物理口,在ovs内部经由patch口到达qg-i
  4. qg-i收到的请求未命中PBR,因此走默认路由,于是从qr-1-1发出,经由dst-port到达dst
  5. dst发送的报文流向与src的请求报文是相似的,不再赘述
问题及解决方案
  1. service-node数据包未能转发,策略路由不生效
    答:这是由Linux内置的“反向路由过滤”功能引起的。它是Linux利用反向路由查询防止IP地址欺骗攻击的策略。通过检查收到的数据包源IP是否可路由决定是否丢弃数据包。详见这篇文章
    解决办法是关闭配置了策略路由的网口的反向路由过滤功能
# service-node
sysctl -w net.ipv4.conf.nf-in.rp_filter=0
# pbr-router
ip netns exec router sysctl -w net.ipv4.conf.qg-i.rp_filter=0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容