wowza流媒體伺服器安全設定
今天跟大家分享下wowza流媒體伺服器的一些安全設定心得,使用這個軟體有一段時間了,但仍能感覺到許多問題存在,其中最為頭疼的還是防盜鏈的問題。wowza作為一個強大的流媒體平台,能夠提供多種格式的直播點播流。其中包括常用的rtmp,rtsp,http等還有一些流包括flash的f4m,微軟的smooth streaming 流。
這裡分享幾點wowza 的安全措施:
一.更改預設的流媒體連接埠
wowza預設連接埠包括80 554等這些都是比較常見的也是比較被注意的連接埠,建議修改掉預設的連接埠,這樣可以達到不輕易被掃描到 的效果
vi WowzaMediaServer/conf/VHost.xml
- !-- Separate multiple ports with commas -->
- <!-- 80: HTTP, RTMPT -->
- <!-- 554: RTSP -->
- <Port>10080</Port>
建議修改成較大的連接埠,一般10000以後,不會造成與其他應用的連接埠衝突
二.添加直播流防盜鏈設定
(1).針對RTMP及RTSP推流進行基於使用者名稱和密碼的認證
在流媒體平台中rtmp流是比較常用的一種格式,針對rtmp可以採用使用者名稱密碼的認證方式
這裡需要用到ModuleRTMPAuthenticate模組,從Wowza Media Server 3.5.0開始, ModuleRTMPAuthenticate模組已經內建到伺服器中了。如果你正在使用更早的版本,你必須下載MediaSecurity Addon來獲得這個模組。下載並解開壓縮包後, 將/lib檔案夾下的wms-plugin-security.jar檔案拷貝的Wowza Media Server的/lib檔案夾,然後重啟Wowza Media Server
1.開啟[install-dir]/conf/[application]/Application.xml檔案,在<Modules>的列表的最後面添加下面的<Module>:
- <Module>
- <Name>ModuleRTMPAuthenticate</Name>
- <Description>ModuleRTMPAuthenticate</Description>
- <Class>com.wowza.wms.security.ModuleRTMPAuthenticate</Class>
- </Module>
2.預設情況下,ModuleRTMPAuthenticate模組被設計為採用[install-dir]/conf/publish.password的文字檔來儲存使用者名稱和密碼。在檔案中新的一行添加的一個username和password來驗證推流。下面的例子展現了如何添加使用者名稱和密碼。
- # Publish password file (format [username][space][password])
- # username password
- myuser mypassword
3.為每一個應用配置一個使用者名稱和密碼的檔案:
將[install-dir]/conf/publish.password檔案拷貝到[install-dir]/conf/[application]/publish.password。
在[install-dir]/conf/[application]/Application.xml檔案最下面的的<Properties>中添加下面的屬性。
- <Property>
- <Name>rtmpEncoderAuthenticateFile</Name>
- <Value>${com.wowza.wms.context.VHostConfigHome}/conf/${com.wowza.wms.context.Application}/publish.password</Value>
- </Property>
(2).採用服務端API對Http流的播放請求進行存取控制
1.基於Http協議的流媒體播放技術在Wowza Media Server中包括Cupertino (iOS hls)、微軟Smooth (Silverlight) 以及San Jose (Flash HTTP):
- import com.wowza.wms.httpstreamer.model.IHTTPStreamerSession;
- import com.wowza.wms.module.*;
- import com.wowza.wms.application.*;
- public class ModuleAccessControlHTTPStreaming extends ModuleBase
- {
- public void onHTTPSessionCreate(IHTTPStreamerSession httpSession)
- {
- boolean isGood = true;
- String ipAddressClient = httpSession.getIpAddress();
- String ipAddressServer = httpSession.getServerIp();
- String queryStr = httpSession.getQueryStr();
- String referrer = httpSession.getReferrer();
- String cookieStr = httpSession.getCookieStr();
- String userAgent = httpSession.getUserAgent();
- IApplicationInstance appInstance = httpSession.getAppInstance();
- String streamName = httpSession.getStreamName();
- // Here you can use the request and session information above to determine
- // if you want to reject the connection
- // isGood = true/false;
- getLogger().info("ModuleAccessControlHTTPStreaming.onHTTPSessionCreate["+appInstance.getContextStr()+":"+streamName+"]: accept:"+isGood);
- if (!isGood)
- httpSession.rejectSession();
- }
- }
2.使用Wowza IDE編譯上面的代碼,將這個模組添加到/conf/[app-name]/Application.xml 檔案的模組集合中:
- <Module>
- <Name>ModuleAccessControlHTTPStreaming</Name>
- <Description>Access control for HTTP streams</Description>
- <Class>com.wowza.wms.example.module.ModuleAccessControlHTTPStreaming</Class>
- </Module>
三.關閉不需要直播流格式
wowza可以提供rtmp,rtsp,http等還有一些流包括flash的f4m,微軟的smooth streaming 流。但平時用到的可能不會是全部,這裡就建議大家根據自己的需要開放直播流的格式。一般情況下移動直播流媒體需要支援rtmp,rtsp及http的蘋果m3u8格式。對於flash的f4m,微軟的smooth streaming 流可能用到的較少,可以考慮關掉。具體的設定如下
編輯 [install-dir]/conf/[application]/Application.xml檔案,
將Streams/LiveStreamPacketizers屬性設定為:
去掉後面兩種編碼格式“smoothstreamingpacketizer,sanjosestreamingpacketizer”
- <LiveStreamPacketizers>cupertinostreamingpacketizer</LiveStreamPacketizers>
將HTTPStreamers屬性設定為:
去掉後面兩種編碼格式"smoothstreaming,sanjosestreaming"
- <HTTPStreamers>cupertinostreaming</HTTPStreamers>
當然可以根據自己的需要選擇提供的直播流編碼格式。
四.及時更新wowza軟體到最新版本
公司流媒體平台採用的是wowza流媒體伺服器,目前使用的還是3.X的版本叫做Wowza Media Server 3,wowza官方最新版本為Wowza Streaming Engine 4.0.4,大家注意到了,升級到4.0以後軟體的名字改變了,並沒有延續media server的稱呼而是改成了streaming engin,官方的說法是提供了一個強大的、直觀的Web管理介面:Wowza Streaming Engine Manager,而且對軟體做出了較大的改變,一般按照軟體更新的傳統,新版本都會修複原來存在的已知或未知的bug,應該升級到最新版本。不過這裡有個問題出現了,原來購買的wowza序號並不能直接應用到新版的wowoza streaming Engine,需要先將原來的序號撤銷,並重新獲得一個新的授權序號。而且對於原來3.x版本購買的增值應用不能相容到4.x版本,所以更新有風險,升級需謹慎那。 ngin