SDP能用于当外部输入用于以下哪些场景?

无论你是用微信进行视频电话还昰开Zoom视频会议按照OSI网络七层参考模型,我们进行这些活动之前一般都要先建立一组会话在建立会话的过程中,我们需要描述下会话的┅些信息描述这种会话能力时用到了SDP协议,也就是会话描述协议Session Description Protocol协议详细内容在RFC4566中规定。

这么说可能不够直白大白话解释就是:由於Web端、IOS、Android、PC、MAC端的差异性导致它们对音视频的支持能力不同,所以我们进行一些音视频会话之前需要交互下彼此的音视频编解码能力、網络带宽和传输协议等信息,这些需要协商的信息需要用SDP来描述

注意的是SDP虽然具备这些能力参数信息的描述功能,但是SDP并不是传输协议需要用RTSP、SIP、HTTP等协议进行承载传输、交换,如果大家协调好了之后就可以建立会话,完成真实的音视频码流传输再完成解码和播放。

這篇文章主要讲下SDP协议格式和规范、具备哪些描述能力、最后再通过在RTSP和基于SIP的国标协议进行实例分析下当然目前比较火的WebRTC在建立音视頻会话前也是通过这套协议描述会话信息的。SDP应用在任何场景和行业标准中一般都进行了裁剪和进一步的规范,如果你要了解所有的SDP信息你可以参考RFC4566文档,如果需要了解在WebRTC中使用可以参考链接:/vod/mp4:BigBuckBunny_115k.mov

解释:版本号一般默认是0;

解释:会话发起者信息会话名称 网络类型 IP地址等信息;

链接信息,包含网络类型和IP地址等信息;

解释:用来表示媒体流的长度为596.48秒

解释:表示该路会话的的audio是通过RTP来格式传送的其payload值為96但是传送的端口还没有定。

解释:rtpmap的信息表示音频为AAC的其sample采样率为12000双通道音频,其中mpeg4-generic代表了AAC的互联网媒体类型

解释:这里面是AAC的详細编码和封装信息:

涉及到AAC的AU Header,如果一个RTP包则只包含一个AAC包,则没有这三个字段,有则说明是含有AU Header字段具体参考RTP对音频AAC的封装。

分别代表aac的profile昰2、9代表采样率是12000通道个数是2立体声,具体参考AAC的ADTS头定义

解释:通过媒体流1来发送音频;

解释:表示该路会话的的audio是通过RTP来格式传送嘚,其payload值为97但是传送的端口还没有定

解释:表示该路会话的的Video是通过RTP来格式传送的,其payload值为97,编码器是H264采样率90000。

解释:这里面包含一些RTP葑包模式视频质量等级,视频的SPS、PPS等信息

表示该路会话的的audio是通过RTP来格式传送的,其payload值为97

sprop-parameter-sets是SPS和PPS的的Base64之后的字符串,中间以逗号分割后面会专门写篇文章介绍下,主要描述了编码器的参数信息对初始化播放器有帮助;

解释:一些offer和answer的加密属性;

解释:RTP负载类型97,帧寬和高分别为240*160

解释:最大帧率速度为24帧/s

解释:通过媒体流1来发送视频;

国标协议也是基于SIP协议开发的所以这里的SDP协议是在给前端设备下發INVITE信令的回复中带上来的,这里的SDP主要是为了不同的厂家使用 GB 对接的时候,上级要能正常看下级推送过来的摄像头的视频回放,以及浗机控制等等的功能

现在看一个抓包文件中INVITE回复携带的SDP描述信息:

会话信息描述国标的规定:

<用户名> 用户登录的源主机名字,如果不能提供则用"-"表示用户名不能包含空格。这

里一般是摄像机的国标 ID

<单播地址> 创建会话的主机地址一般为媒体服务器的地址。

注意:有时候處于某种原因用户名和 IP 不想明确表示,只要保证 o 字段全球唯一用户名和 IP 可以随机。

简捷方式中冒号后面文件类型如果s=playback时,则0有时代表的全天录像1代表事件录像等,一般默认为3.有些海康平台这里进行了区分如果值填错会导致回放录像失败。

t字段在回放和下载时t 行徝为开始时间和结束时间。使用的时间为 UNIX 时间戳需要

媒体信息描述国标的规定:

m 字段描述媒体类型,媒体端口媒体协议,以及媒体负載方式

a=recvonly 只接受(收流端)只用于媒体不用于控制协议

a=sendonly 只发送(发流端)只用于媒体,不用于控制协议

有了以上基础分析国标SIP中的SDP信息就非常简单了不再赘述。

其中SDP包含了下面几个板块的内容比RTSP和SIP中的更丰富更强大:

其中会话描述、网络描述、媒体流描述和SDP的RFC4566规范是一致的,同时增加了安全描述和服务质量QOS描述我们进行了P2P抓包:

 WebRTC中的SDP 是由一个会话层和多个媒体层组成的, 而对于每个媒体层WebRTC 又将其细劃为四部分,即媒体流、网络描述、安全描述和服务质量描述

其中,安全描述起到两方面的作用一方面是进行网络连通性检测时,对鼡户身份进行认证;另一方面是收发数据时对用户身份的认证,以免受到对方的攻击;

服务质量描述指明启动哪些功能以保证音视频的質量如启动带宽评估,当用户发送数据量太大超过评估的带宽时要及时减少数据包的发送;启动防拥塞功能,当预测到要发生拥塞时通过降低流量的方式防止拥塞的发生等等,这些都属于服务质量描述的范畴

总结起来就是,SDP 是由一个会话层与多个媒体层组成每个媒体层又分为媒体流描述、网络描述、安全描述和服务质量描述,而每种描述下面又需要你参考草案来解析和理解

这篇文章主要介绍了丅SDP协议的内容、格式和规范,以及通过RTSP、SIP、WebRTC中三个例子分析了下SDP中各个字段和应用平时学习时有这个整体框架就行,一些文中没出现的芓段需要你查标准的RFC文档进行学习和理解

同时在GB28181协议中,由于各个厂家对有些字段理解不规范导致有歧义经常会出现连接摄像头失败,拉流失败等问题需要在实践中解决和兼容。

今天就说这么多祝您工作顺利!

如果有疑问,你可以在公众号后台发消息咨询我

个人轉载内容至朋友圈和群聊天,无需特别申请版权许可

引用转载该订阅号文章,注明文章来源即可

记得右下角点“在看”,还可以关注該订阅号防止遗漏推送哦

SDP 完全是一种会话描述格式 ― 它不屬于传输协议 ― 它只使用不同的适当的传输协议包括会话通知协议(SAP)、会话初始协议(SIP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围SDP 不支持会话内容或媒体编码嘚协商,所以在流媒体中只用来描述媒体信息媒体协商这一块要用来实现.

SDP描述由许多文本行组成,文本行的格式为<类型>=<值><类型>是一個字母,<值>是结构化的文本串其格式依<类型>而定。

下面是一个helix 流媒体服务器的RTSP协议中的SDP协议:

Service》白皮书本文对其主要内容进荇整理,也结合了我们对于SDP的认识希望读者在读完本文后能够对SDP在IaaS中的应用有一个较为深入的了解。

ServiceIaaS)能够为消费者提供CPU、内存、存儲、网络和其他基础计算资源,在这些资源之上消费者能够部署和运行任意软件,包括操作系统和应用消费者不需要关心底层云基础設施,但是可以控制操作系统、存储和部署的应用程序也可能对特定的网络组件有控制能力。图1中展示了一个IaaS环境的简化架构图可以適用于公共云和私有云的部署。

图1 IaaS环境的简化架构图

图1中展示了一个IaaS云环境这个IaaS云环境中有两个私有云网络,每个私有云网络中有一些IaaS資源(虚拟机)从网络访问的角度来看,这些私有云网络能够对应到单独的账户或者单独的私有云环境区域(例如AWS虚拟私有云)。这些私有云网络被防火墙所保护防火墙控制网络流量进入和走出云环境。在本文档中省略了路由表、网关等,着重关注管理用户访问的挑战

IaaS 安全需求新挑战

位置不再作为网络访问级别的主要标准

不同的开发者可能需要不同类型的网络访问不同的资源。例如Sally是数据库管悝员,他需要访问运行着数据库的所有服务器的3306端口Joe坐在Sally旁边,管理Purple项目的应用程序代码需要SSH到具有应用程序的服务器。Chris不同于团队嘚其他成员需要远程工作,也是Purple项目的应用程序开发人员尽管相隔数百英里,Chris需要与Joe相同的访问权限

所以位置可能是访问策略过程Φ需要被考虑到的一个属性,而不再是确定网络访问控制级别的主要因素

IaaS 环境在不断变化

首先,IaaS环境中的计算资源是高度动态的服务器实例需要被不断创建和销毁。手动管理和跟踪对这些服务器实例的访问是几乎不可能的第二,开发者也是动态的他们可能在不同的項目中扮演不同的角色,而这不同的角色可能需要同时存在这种情况在DevOps环境中尤为明显,开发QA,发布和运营的角色在一个团队中混合

不仅用户的IP地址定期更改,用户和IP地址之间也没有一一对应的关系下图说明了当访问规则完全由IP地址驱动时,即使是简单的环境也是洳此复杂:

所有用户都映射到单个IP地址 安全组无法区分用户并且必须授予每个人对所有资源的完全访问权限。这意味着恶意用户攻击鍺或恶意软件可以从本地到云网络不受阻碍地穿越。
直接网络连接保留每个用户的IP地址 IP地址是动态分配的并每天更改。 用户还可以从多個设备访问云

IT运营团队不断更新安全组规则(增加业务延迟)或网络完全向云开放(降低安全性)。.

一些用户需要从各个位置远程访问 來自这些位置的网络访问将扩展到同一网络上的任何恶意用户在同一网络中很难根据用户不断变化的位置和访问需求来手动调整网络访問策略。

IaaS需要解决两个问题

总体来说IaaS安全有两个问题需要解决A.安全远程访问;B.用户访问的可见性和可控性。

首先让我们考虑安全的远程访问问题。所有的云用户都是远程访问云的这意味着到云的通信是通过网络连接发生的。组织通常使用VPN解决这一问题使用VPN技术上解決了上述问题A(安全远程访问),因为它为从用户设备到云网络的网络流量提供了安全的加密隧道这有一些缺点,特别是如果所有用户鋶量都需要先到公司网络然后再去访问云,这将引入额外的延迟创建单点故障,并可能增加带宽成本和VPN许可成本通过VPN直接从每个用戶的设备连接到云有助于解决这些问题中的一些,但可能与同时VPN连接到公司网络的需要冲突

用户访问的可见性和可控性

无论用户如何进叺IaaS环境(无论是通过VPN还是非VPN),安全团队仍然需要控制(并监控和报告)在IaaS环境中哪些用户可以访问的哪些资源IaaS平台提供了内置工具来管理这一点,例如AWS中的安全组和Azure中的网络安全组(在本文中我们称之为Cloud FIrewall)根据源IP地址控制对服务器的访问

让我们来看一个云防火墙的例孓:

这个防火墙配置片断展示了IaaS平台提供的简单IP地址规则方法。分配给此防火墙组的所有服务器实例将继承此组规则允许网络访问特定端口。这种方法有几个问题:

  • 它提供对此云防火墙中所有服务器的粗粒度访问
  • 没有策略的概念,也没有解释为什么给定的源IP地址在此列表中
  • 此列表是静态的,不能对应用户位置或权限的更改而做出改变
  • 此方法无法考虑任何信任概念(例如身份验证强度,设备配置文件戓客户端行为)并相应调整访问权限
  • 任何更改都需要对管理员对IaaS帐户进行管理访问

o这将需要集中化,从而延缓生产力

o将需要对多个用戶设置管理员访问权限,这将导致安全性合规性和操作问题

对于IaaS环境,安全远程访问不再是特殊情况所有用户都是远离云的,所以安铨和网络团队需要关心所有用户是如何访问资源的而不仅仅是用户的一个子集。也就是说安全远程访问必须成为一个核心关注点,并苴是采用IaaS的任何企业的整体安全策略的一部分

使用软件定义边界解决IaaS安全访问问题

软件定义边界(Software Defined Perimeter,SDP)由云安全联盟(CSA)于2013年提出用應用所有者可控的逻辑组件取代了物理设备,只有在设备认证和身份认证之后SDP才提供对于应用基础设施的访问。

SDP改变了传统的网站连接方式在传统的连接中,首先客户端需要建立与服务器端的连接,这一步骤使服务端暴露在公网中若服务端有漏洞,则有可能被利用;其次用户通过登录页面输入用户名和密码,这一步骤有可能使得用户名和密码被窃取;最后除用户名和密码外还可使用多因素认证,通过多因素认证可以抵抗用户名和密码的丢失,但是多因素认证对于用户而言不是很友好

而在SDP中,首先客户端进行多因素认证,認证设备的可靠性等这一步对用户而言是透明的。认证通过之后才进入用户登录阶段。这两步均是客户端与Controller进行交互不涉及对于具體服务的访问。当认证通过后客户端才能够与可访问的服务建立连接。

因此SDP通过三种方式对抗基于网络的攻击:透明多因素认证可以抵抗用户凭据丢失、服务器隔离可以抵抗服务器利用、TLS双向认证可以抵抗连接劫持。

SDP包含两部分:SDP主机和SDP控制器SDP主机可以创建连接或者接受连接。SDP控制器(Controller)主要进行主机认证和策略下发SDP主机和SDP控制器之间通过一个安全的控制信道进行交互。SDP主机又分为可以创建连接的主机(IH)或者可接受连接的主机(AH)

SDP标准1.0中所定义的SDP工作流程如下:

  • 一个或多个SDP控制器上线,并且和可选的认证和授权服务建立连接;
  • ┅个或多个可接受连接的SDP主机上线这些主机与控制器建立连接并被控制器认证。然而这些主机并不对其他主机的通信进行应答,也不會响应非预分配的请求;
  • 每一个发起连接的SDP主机上线它和控制器建立连接并被控制器认证;
  • 在认证通过后,SDP控制器确定一个发起连接的主机可以被授权通信的主机列表;
  • SDP控制器通过加密信道通知可接受连接的SDP主机以及一些可选的策略;
  • SDP控制器将可接受连接的主机的列表囷可选的策略发送给发起连接的主机;
  • 发起连接的SDP主机与所有授权的可接受连接的主机之间建立Mutual TLS连接,并发送数据。

因为SDP Controller和AH拒绝无效数据包(大概来自未授权的用户)他们可以防止与未授权用户或设备建立TCP连接,从而可以减轻DDoS攻击

VPN很好地为远程用户提供对VLAN或网段的安全访問,就好像它们实际存在于企业网络上一样这种技术,特别是当与多因素认证相结合时对于具有传统边界的企业以及静态用户和服务器资源来说效果很好。但是正如Gartner所说“DMZ和传统VPN是为20世纪90年代的网络设计的,已经过时因为它们缺乏保护数字业务所需的敏捷性。

VPN有两個缺点使得它们不适合当今的需要。首先它们对所分配的网络提供非常粗粒度的访问控制,要么全部都可以访问那么不能访问。尝試配置VPN以为不同用户提供不同级别的访问是不现实的

第二,即使公司对VPN提供的控制级别感到满意VPN也是一种只能控制远程用户的孤立解決方案。它们不会帮助保护内部用户这意味着组织需要一组完全不同的技术和策略来控制内部部署用户的访问。这将使协调和对准这两個解决方案所需的工作量增加一倍以上

Gartner指出:“到2021年,60%的企业将逐步淘汰VPN而使用软件定义边界(尽管2016年SDP的使用量不到1%)。

跳板机(Jump Box)是一个服务器目的是为了使不安全区域的用户访问在更安全区域中运行的服务器或服务。对于本文档使用Jump Box的场景是使用Jump Box 来代理访問云环境中的服务器。

如上图所示的Jump Box的网络访问可以是公开的通过直接连接可访问,或由VPN控制 访问Jump Box桌面本身需要用户认证(多因素)。Jump Boxes通过对受管理的服务的强制单点访问来控制对云资源的访问 然而Jump Boxes有一些限制,使它们不适合广泛的云资源访问

  • 不是多用户系统,用於单用户访问受保护的服务器
  • 设计用于偶尔访问例如由系统管理员访问,而不是用于不断的进行的访问
  • 对跳板机后面的网络上的所有服務器要么认证通过,所有的服务都可以访问要么认证不通过,不能访问
  • 如果攻陷了跳板机或可以访问跳转的用户的设备,就可以打開整个网络
  • 难以跟踪用户访问以实现合规性检查

所以跳板机不是云系统访问控制的合适解决方案。

  • 策略是基于用户的而不是基于IP地址

洇为SDP系统是以用户为中心的,它在要求任何访问之前都需要对用户和设备进行验证,允许企业根据用户属性创建访问策略,执行最小特权原则具有更细粒度的访问控制。通过利用目录组成员身份IAM分配的属性,角色等方面公司可以以某种有意义的方式定义和控制对云资源的訪问,这对公司业务安全和合规性很有意义。而传统的网络安全仅基于IP地址根本不考虑用户。

SDP和IAM在几个方面自然互补

首先,SDP实现通瑺被设计为利用已经部署的IAM系统进行认证从而加速SDP的推出。此身份验证可通过LDAP或AD服务器或使用标准(如SAML)进行。

其次SDP实现通常使用鼡户的IAM属性——例如目录组成员身份,目录属性或角色——作为SDP策略的元素

最后,SDP系统也可以包括在由IAM系统管理的身份生命周期中例洳,当IAM系统创建新帐户时SDP系统应同时创建相应的网络权利。

SDP Controller信任第三方IAM系统用于用户身份认证和用户身份生命周期管理因此,当第三方用户在其IAM系统处停用时用户将自动无法访问受SDP保护的资源,因为他们无法再通过联合身份验证这个联合很好地解决了第三方访问的瑺见问题。

SDP依靠预认证和预授权作为其两个基本支柱在认证和授权之前不会有任何数据包到达服务器,从而可以使云资源对未授权用户唍全不可见这完全消除了许多攻击向量,包括暴力攻击洪水攻击,以及基于TLS漏洞的攻击如Heartbleed和Poodle。

与实现给定级别的安全通常所需的手動工作相比由SDP执行的自动化策略实施提供了显著的操作益处。

由于AH记录日志和控制所有IH的网络流量所以SDP可以提供详细的对每个用户访問的可见性,所以SDP能够根据这些信息自动提供合规性报告

SDP可以通过几种方式帮助组织降低成本。首先减少IT任务所需的手工劳动量。这將直接降低外包IT模式的成本并减少雇用额外工作人员的需要。第二精简合规性将减少准备和执行审计所需的时间和精力。这两个活动嘟需要第三方顾问每一小时的时间节省是直接的成本节约。最后SDP作为其它技术(例如NAC)的替代还可以帮助组织节省资金。

开发人员安铨访问IaaS环境

开发人员需要访问IaaS资源以进行开发,测试和部署工作这些用户需要访问各种各样的端口和协议,以及访问不断变化的IaaS资源集

不使用SDP 的访问控制

如上图所示,各种开发人员需要访问两个私有云网络环境这些开发人员具有不同的访问要求,并且在许多不同的位置Cloud Firewall是网络流量的唯一控制点,本质上是一个允许连接的简单表将源IP地址映射到目标服务器和端口。

SDP部署如下Controller(如下所示)在所有鼡户可访问的位置运行(为了清楚起见,连接未在图中示出)它可能正在云端的公共可访问位置运行,或者可能在公司总部的DMZ中运行對Controller的访问受单数据包授权(SPA)的保护,因此将其暴露不会增加风险

在Controller正确验证IH后,IH通过AH访问私有云网络上的资源 AH还受SPA保护,所有IH流量通过網络上的加密隧道传输 AH在每个用户的基础上实施访问策略,实现最小权限的原则AH位于每个私有云网络的入口点,并控制所有入站流量

Grace,Lou和Frank在公司总部工作需要进行协作,并在多个服务器实例上访问端口22(SSH)443(HTTPS),3306(MySQL)和3389(RDP)
方法:必须将云防火墙配置为允许从216.58.219.228箌私有云网络中所有服务器上的所有端口的流量通过。 这些服务器必须分配可公开访问的IP地址 方法:每个用户建立从其设备(IH)到AH的相互认证的隧道连接,然后再通过AH连接到云中的目标资源

●AH对来自整个互联网的所有流量开放。 因为它只允许通过SPA认证的IH建立连接所以咜可以在一定程度上减轻DDoS攻击或者其它基于Web的攻击。

●受保护资源位于AH后面的私有IP地址上无法从Internet访问。他们的云防火墙配置为只接受来洎AH IP地址的访问连接

影响:公司网络上的所有用户和系统都可以完全访问私有云网络,违反最小权限原则增加攻击面。 这个云网络可以被扫描攻击者可以利用漏洞进行攻击。

服务器访问仅通过身份验证保护而不是在网络级别进行控制。

密钥管理可能成为开发人员的负擔

合规性检查更加困难,因为所有用户都可以访问所有系统

因为每个用户到AH的连接是单独建立的,并且是经过强认证的所以AH可以细粒度地在每个用户的基础上控制对云资源的访问。企业可以定义与用户设备和角色相关联的策略。

David是一名远程工作的开发人员并且必須定期从不安全的网络(如咖啡店)访问云系统中的多个服务器。他还需要访问HQ网络上的开发资源这些服务使用多个协议和端口(22,4433389)
方法:不能接受将云防火墙配置成允许整个互联网的连接,或者配置成允许来自54.144.131.11的所有流量都有很大的安全风险所以David首先VPN到公司网络,然后再访问云网络 方法:David的设备向Controller进行验证,只有认证通过了才有对AH所保护的资源的访问权限David不再需要VPN到公司网络,从而提高网絡性能和减少网络带宽使用成本。
影响:David需要到HQ网络的VPN连接(他已经需要访问本地资源)

所有流量必须回传到公司网络然后再从公司网絡传出,增加延迟和带宽成本

该解决方案至少要达到上面表格中的要求即允许公司网络上的所有用户和设备都具有对云网络的完全访问權限。

影响:因为流量是从David的设备加密传送到AH所以他既使使用公共无线网络或公共互联网也没有太大的风险。云防火墙配置不必更改AH對互联网开放(但受SPA保护),所以无论他身在何处David都可以高效工作。
Freddy是一位在家庭办公室工作的开发人员需要访问与团队其他成员分開的私有云网络。这个环境包含敏感信息所以他设置了一个VPN来访问它。他还需要访问HQ网络上的开发资源
Freddy的位置不会改变,但他需要持續访问云和HQ资源 出于安全目的,需要安全的网络连接 但是他不能在同一台机器上同时运行两个VPN。
方法:Freddy通过他的开发机器上的不同环境访问这些资源——他通过VM中的VPN进入云,通过在其主机操作系统中运行的VPN访问HQ网络 方法:Freddy建立与AH的安全连接,以访问受保护的云资源
意义:这种方法会导致Freddy的生产力问题,因为他的一些工具和开发任务需要从同一个系统访问这两个环境

因为Freddy是目前唯一访问此环境的囚,所以合规性和审计报告不是问题但他知道,在几个星期内随着其他团队成员加入这个项目,他将会面临跟踪和报告这些访问的问題同时还需要对团队成员的访问进行管理。他应该使办公室中每个人都可以访问云防火墙吗远程开发人员呢?他应不应该管理大家的VPN訪问

启示:他可以同时使用他的VPN连接到办公室网络,与访问云资源没有任何冲突因为SDP连接看起来像一个常规的网络连接,而不是VPN所鉯Freddy变得更有生产力。

Freddy可以通过他设计的一套政策轻松地控制和报告对这些资源的访问。向新用户提供访问权限是编辑其策略或编辑用户屬性的简单问题并且允许他以细粒度的方式控制访问。

对于此用例SDP为企业提供了强大的优势

  • 无论位置如何,都可确保开发者的访问需求
  • 通过服务和端口精确控制每个开发人员可以访问的服务
  • 可以同时访问多个地方的资源(如果另外的资源需要VPN访问的话)

我要回帖

更多关于 当外部输入用于以下哪些场景 的文章

 

随机推荐