【云+社区年度征文】云直播:你该如何关闭直播推流鉴权

2020-12-13 02:09:58 浏览数 (1)

导读:

使用腾讯云直播时,每次推流都需要生成推流地址,这么做虽然很安全,但不是很便利,关闭直播鉴权的话,又容易被盗用,产生高额的费用,而且还可能被盗用于违法违规活动,本文将从腾讯云提供的各种技术手段,分享实际运营过程中如何兼顾安全和便利;

近期收到腾讯云的告警通知,内容如下:

温馨的告警通知温馨的告警通知

领导凌晨3点才看到这通知,表示很慌,给我发微信,我没有回,他觉得完了,我“死”了,然后他大概给我打了20多个电话吧,终于在他决定报警之前,把我给叫醒了,开口第一句话居然是“大半夜的,你怎么还睡觉了呢”

这个段子出自李雪琴这个段子出自李雪琴

我觉得不行,这日子不能这么过了,第二天我就好好折腾一番腾讯云直播,居然发现有好多好用的东西;

名词解读

腾讯云直播:https://cloud.tencent.com/document/product/267

鉴权:指云服务商针对客户的签名内容进行解密,验证内容合法性,对于无法解密或者内容不合法的请求拒绝服务,以此来确保合法客户的得到相应的服务。

什么是直播推流鉴权

安全防盗链是指推流和播放 URL 中的 txSecret 字段,它的作用是防止攻击者伪造您的后台生成推流 URL 或者非法盗取您的播放地址进行谋利。

上面文字内容引用自腾讯云直播文档 云直播防盗链的计算

符合腾讯云标准的推流 URL,它由下面四个部分组成:

直播推流URL组成部分直播推流URL组成部分

腾讯云通过推流URL中的txSecret来校验推流客户端是否取得业务服务器的授权,通过txTime字段来判断该授权是否过期;

授权参数txSecret 的生成方法是 = MD5(KEY StreamName txTime)这里的key则是在腾讯云直播控制台域名管理中配置的推流防盗链Key

1、进入云直播域名管理 ,选择其中一个推流域名

2、切换到推流配置tab,即可看到鉴权配置

如果推流鉴权处于关闭状态,则每次推流时,推流URL不需要携带txTime和txSecret参数即可,如下:

代码语言:javascript复制
rtmp://livepush.tcloud.com/live/anystreamid

如果在知晓播放域名的情况下,攻击者可通过任意直播流ID往我的腾讯云账号写入直播流,然后通过播放域名拼接出播放地址,实现在未拿到我授权的情况下的推流和播放:

1、通过注册我的app账号,抓包拿到推流域名 livepush.tcloud.com 和播放域名 liveplay.tcloud.com;

2、攻击者拼接推流地址 rtmp://livepush.tcloud.com/live/pornstream 并推了一些违法违规内容;

3、攻击者拼接播放地址 http://liveplay.tcloud.com/live/pornstream 并且在攻击者的app上使用;

风险点

在没有推流鉴权的情况下,会面临哪些风险呢?

1、直播账号被大量盗用,产生高额的流量费用,作为一个打工人,可能就因此被辞退了,而老板也可能因此欠下一大笔钱。

2、直播账号被盗推一些涉黄、涉政、涉爆等违法违规内容,老板可能因此被抓,公司被封。

不想开直播推流鉴权

虽然有风险,但有些场景下还是想关闭直播推流鉴权:

1、测试业务

线上业务可能每次推流时,app会去服务器请求合法的推流URL,但在测试场景下,每次都去获取一遍,还是挺麻烦的,尤其是使用第三方推流工具时,需要复制来粘贴去的,费事费力,领导还催着上线。

2、监控摄像头

购买的无线网络摄像头一般支持RTMP推流,如果推流地址的txTime过期了,同时网络中断一下,推流就会中断,重试时也被腾讯云直播拒绝,最后不得不再次手工更新推流地址,如果摄像头有数百个,对于运营同学来说,将是一个噩梦。

如何解决:

其实腾讯云提供了一些技术手段来规避无推流鉴权所带来的风险

1、开启播放域名带宽封顶

适用于测试环境和监控摄像头场景

对于测试业务或监控场景来说,并不需要大量的下行播放带宽,一般来说,也就几个人同时播放,按照播放码率2Mbps来计算,同时有50个人播放,带宽也就100Mbps,而日常测试工作中,很少有50个人同时播放,设置播放域名100Mbps的带宽封顶,足够使用了,若有超出,应该是有其他异常情况发生了(被盗用或用于线上业务等)

操作指引如下链接:播放域名带宽封顶配置 https://cloud.tencent.com/document/product/267/42600

2、开启播放域名鉴权

适用于监控摄像头场景

监控摄像头一般安装在户外高处,每次更新摄像头配置都挺麻烦的,如果是部署在客户的环境下,每次都得出差搞,就更麻烦了。

不过播放摄像头的页面是可以动态更新的,播放地址可以携带鉴权参数,这样即使直播账号被盗推,攻击者也无法播放他的内容。

操作指引如下链接:播放鉴权配置 https://cloud.tencent.com/document/product/267/32463

3、直播事件回调实现推流监控

适用于测试环境和监控摄像头场景

云直播提供直播回调功能,当有直播推流事件发生时,腾讯云主动把推流相关信息发送请求到业务服务器,这样自己的腾讯云直播账号下的任何一次推流,业务服务器都可以感知到,一旦出现异常的直播推流,即可告警出来;

比如测试环境的直播流ID是test_userid_xxx格式,其中userid为测试人员的账号ID;

而监控摄像头的直播流ID是monitor_deviceid_xxx格式,其中deviceid为摄像头编号ID;

业务服务器如果收到其他格式的直播流ID,或者userid/deviceid不是平台已注册的账号ID/设备ID,则可能是异常推流,可以及时告警出来,然后人工封禁掉;

a)根据指引配置直播事件回调:直播回调 https://cloud.tencent.com/document/product/267/20388

b)当收到异常推流事件时,通过云监控的自定义消息发出告警: https://cloud.tencent.com/document/product/248/6218

c)也可以直接调用云直播接口对直播做断流处理,甚至禁止推流;

断开直播流: https://cloud.tencent.com/document/product/267/20469

禁推直播流:https://cloud.tencent.com/document/product/267/20468

如果是人工处理,也可以在云直播控制台操作禁用 https://cloud.tencent.com/document/product/267/20380

4、开启域名绑定

适用于测试环境和监控摄像头场景

同一个直播账号下,可能有多个业务在使用,因此推流域名和播放域名可能有数十个之多,有些业务是可以开启推流鉴权,有些业务开启推流鉴权则很带来一些不便;

默认情况下,播放域名和推流域名之间是没有绑定关系的;

配置了push1、push2、push3推流域名,play1、play2、play3播放域名;

push1域名推了某条直播流,用三个播放域名都能播放,如果这几个域名对应了三个业务,虽然push1、push2域名开启了推流鉴权,但由于push3是监控或测试场景的,关闭了推流鉴权,即时对play3播放域名开启了带宽封顶,攻击者依然可以通过play1、play2播放域名实现盗用。

此时可以通过提交工单,要求添加(push1、play1)(push2、play2)(push3、play3)的对应关系,即是说,push3推的流,只有play3播放域名可以播放

操作指引:联系我们 https://cloud.tencent.com/document/product/267/19904

推流域名和播放域名绑定推流域名和播放域名绑定

5、其他手段

当然也还有其他手段来实现直播内容安全,比如:

a) 直播鉴黄:https://cloud.tencent.com/document/product/267/32741

b) 数字版权保护: https://cloud.tencent.com/document/product/1000

c) 人工审核

等各项手段来确保直播内容可控且合法合规;

看了这么多,大家有没有其他手段可以兼顾便利和安全呢,欢迎点赞收藏留言给小编

0 人点赞