おもに当社の技術部スタッフが、一般公開を若干意識しつつ、内輪の仕事メモ(「仕事の内輪モメ」ではありません)や道具箱、はたまた日記がわりに利用しています。役にたちそうなものは、内容や体裁をさらに公開用にシェイプアップしています。中には、皆さまのお役にたてる話もあるかもしれません。ご自由に閲覧されてください。
技術者のメモ帳から
ブログ一覧
保護中: DJスーさんのライヴストリーミングテスト
Red5を追え! GitHubからRed5をインストールする
「レッド・オクトーヴァーを追え!」という映画がありましたが、今回は「Red5を追え!」というお話です。 昨年までRed5のコミュニティ公式サイトは http://www.red5.org/、開発サイトはgoogle codeにあって、ソフトウェアもこれらのサイトからダウンロードするようになっていました。ネットで紹介されているインストール事例をみても、ほとんどが旧サイトに関するものです。 「Red5…やめちゃったのかなぁ…」と暗くなっている方もおられるかもと思い、余計なご紹介です。
Red5のソースコードは、現在、GitHub(https://github.com/Red5)にてGitを使って管理されています。
Red5をインストールしよう
以下の手順説明は、すべての作業をRed5をインストールするLinuxサーバ(Vers.1.7以上のJDKがインストール済み、JAVA_HOME, PATH等の環境変数も設定済み)上で、管理者として行っていることを前提にしています。JVM, Git, Mavenの使い方その他については、他の情報を参考にしてください。
red5-serverのソースパッケージは、以下のようにgitツールのcloneコマンドを使ってgithubから取得します。
git cloneコマンドによりダウンロード・作成されたフォルダ「red5-server」に入ります。ビルドの仕方はフォルダーにあるREADME.md(テキストファイル)に記載されていますが、要約すると、当該フォルダーで以下のようにパラメータ、コマンドを付加してMavenを実行することにより、red5-server-1.0.5-RELEASE-server.tar.gzが生成され、これを展開して適当なフォルダに配置することにより、インストールはめでたく完了という簡単なものです。
Mavenのインストール
red5-serverをビルドするのにはMavenが必要です。もし、Mavenがインストールされていない場合にはMavenのTarボールをApacheまたはそのミラーサイトからダウンロード、展開、配置します。以下の例では、北陸先端科学技術大学院大学(JIST)が運営されているApacheのミラーサイトからVers.3.3.1をダウンロードしています。
Kaltura Comunity Editionによるサンプル動画配信
下のサンプル動画は、Kaltura Comunity Editionを使用して当社のサーバから配信しています。Kalturaは、カスタマイズしたRed5サーバを配信サーバとして取り込んで、以下の動画ファイルをストリーミング配信するのに必要な作業ツールを一貫して提供します。
- コンテンツのアップロード・フォーマット変換等
- プレイヤーの記述タグ作成
- ストリーム配信
Apache2で国別許可・遮断(GeoIP)
IPアドレスから位地情報を割り出すGeoIP
GeoIP(GeoIP2)は、MaxMind社(本社:米国マサチューセッツ州ウォルサム)が提供するIPアドレスから位地情報を割り出す仕組みです(Software+データベース情報)。GeoIPには、結果として得られるデータの粒度の違い(大陸>国>都市>郵便番号 etc.)によっていろいろな有償サービスが提供されています。
MaxMind社のホームページ(日本語)
オープンソース製品 GeoLite
MaxMind社はGeoIP2のオープンソース版としてGeoLiteという名称で、ソフトウェアと無償データベースを無償で提供しています。GeoLiteのデータベースは以下のものが提供されています。それぞれ、CSVとバイナリの二つのフォーマットが利用可能です。
GeoLiteCountry: IPアドレス から国を特定
GeoLiteCity: IPアドレスから都市を特定
Apache Webサーバでの利用 mod_geoip2
「アクセス元のIPアドレスから、どこの国かを割り出してWEBサーバの振る舞いを切り替えたい」というような用途には、GeoLiteでも十分に役立ってくれます。実際、私たちは、私たちが管理している多数の企業や公共機関のサイトで昨年特定の国国々からの執拗な攻撃が集中した際に、GeoLiteとGeoIPをApache Webサーバで利用するためのmod_geoip2(MaxMind社のオープンソース製品)を使って対応し、高い効果をあげることができました。
参考までに以下は、Apache Web サーバの設定の概要です。Apacheの設定になれている方は使用感がつかめると思います。
mod_geoip2のモジュールのロード
Apache Webサーバでお約束のモジュールのロード設定です。
mod_geoip2に関する設定
この設定の肝は、
- SetEnvIfを使って、指定された国からのアクセスであれば、”TrustedCounty”という名前の環境変数を設定する
- 環境変数TrustedCountryの有無をもとにアクセスを許可/遮断する
という手順です。GeoIPScanProxyHeaderをOnにすると、プロキシがリクエストにヘッダーを付けて元のアドレスを示していれば、そのアドレスが判定されます(そんな人たちがヘッダーに情報残すような串使うかなぁ?)。
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat← GeoLiteデータベースデータを読み込む
GeoIPScanProxyHeaders Off ← プロキシ解析モードのOn/Off
SetEnvIf GEOIP_COUNTRY_CODE JP TrustedCountry ← 国コードがJPであれば環境変数TrustedCountryをセット
<Location />
Order deny,allow
Deny from all
Allow from 127.0.0.1 192.168 161.69.197.64/26
Allow from env=TrustedCountry ← 「TrustedCountry」がセットされていたらアクセス許可
</Location>
この例では、鎖国してしまっていますが(あくまで例です)、以下のように特定の国からのアクセスを禁止することも可能です。
SetEnvIf GEOIP_COUNTRY_CODE XX HostileCountry
SetEnvIf GEOIP_COUNTRY_CDOE YY HostileCountry
<Location />
Order allow,deny
Allow from all
Deny from env=HostileCountry ← 「HostileCountry」がセットされていたらアクセス禁止
</Location>
特定の環境変数の有無を条件に設定できるApacheの制御文であれば、アクセスの許可/遮断以外にもいろいろな使い方できますね。 有償版のデータベースが提供してくれる情報は、さらに粒度が細かいですので、アプリケーションソフトなどにGeoIPの情報の参照を組み込むと効果的な商業ツールなども作れそうです。
注意:
一部の外資系企業で、グローバルにネットワークを設定管理しているところですと、外資系のキャリアの日本支社からIPアドレスを得ている場合があります。この場合、物理的に日本国内であっても、IPアドレスの判定結果の地理情報は海外となる場合がありますので、特定のアクセスもとに対しては例外処理が必要となる場合があります。
貴社のApache WebサーバにGeoLiteの導入をご希望ですか?
現用のApache WebサーバにGeoLiteの導入をご希望のお客様。最短のダウンタイムで貴社現用のApache WebサーバにGeoLiteを導入させていただきます。詳しくはこちらからお問い合わせください。
ドメイン名ハイジャックについて (11/5 JPRS緊急通報)
ここのところDNSサーバの脆弱性が頻繁に報告されます。外部の不特定の相手にさらさなければいけないネットワークサービスでしかもUDPとなれば、攻撃者にとってこんな美味しいターゲットは他にないでしょう。昨日JPRSが緊急通報したBIND9その他複数のDNSソフトのデリゲーションがらみの脆弱性など、世界のDNSツリー全体が使いものにならなくなる可能性があります(でも、そうなると、攻撃してる人たちも不便だとおもいますが)。 続きを読む