1,000人超の大規模開発者イベント「YAPC::Asia Tokyo 2013」を支えたネットワークインフラ構築の舞台裏~プロフェッショナルのボランタリーが生み出したチカラ

この記事を読むのに必要な時間:およそ 11 分

ホットステージ

「ネットワークを提供します」⁠ と宣言したからには,皆様の期待を裏切らない確実なインターネット接続の提供をするため,最大限の準備やテストを行います。YAPC開催当日に実際に用いるさまざまなネットワーク機器やサーバを本番同様に接続し,ひとつひとつ必要な確認を行います。サービス提供に必要な機能のチェックを人力でシステム的に行うので膨大なタスクが発生します。ですが,YAPCネットワークチーム@yapcnwteamスタッフは皆社会人であり,ましてやメインの業務としてYAPCネットワークチームをやっているわけでもなく,チームメンバの所属会社もバラバラ,勤務地はおろか,就業時間すら異なっています。この差を吸収するため,それぞれのメンバが自分の都合の良い時間帯に,都合の良い場所から作業できるような環境を整備する必要が出てきます。

そこで,YAPCネットワークチームの誰かの家に機材を集結させ,あらかじめ配線やマネージメントIPアドレス割り振りなどの最低限の設定だけ行っておき,あとは全員がリモートで設定を行っていくオンラインホットステージ※2という試みを行いました。これにより,時間的拘束や移動コストを殆ど発生させずに,チームメンバの空いた時間を有効活用して構築やテストを実施することができました。

オンラインホットステージのデメリットとしては,有線の接続変更を行ったり,ファイアウォールのACL設定ミスや,ルーティング設定ミス時の設定戻しが発生した際や,rebootするつもりが間違ってshutdownしてしまったときなど,現地に人がいないと「\お手上げ/」になってしまうことくらいです。

これまで,他のイベントで行ったホットステージでは,メンバ所属会社の会議室等を一週間ほど占有させていただき,そこへ機器を展開し,作業者はそこへ集まって設定を行っていましたので,この試みはとても有効であると実感しました。

ネットワーク機器を集約

ネットワーク機器を集約

メンバー間の情報共有にはGoogle DriveとSkype,Lingrを積極的に利用しました。Skypeのグループチャットではさまざまな議論や打ち合わせを行いました。Lingrとのゲートウェイを稼働させることで,スマホから画像をアップできるようにしたのが意外に便利でした。チャットは流れて行ってしまうので,夜中に議論が長引いたときなど後で追いかけるのが大変でもあり,やり取りの中で決まったことは別の場所に共有する仕組みが必要だと実感しました。

Google Driveではさまざまな図表を共有しました。Spreadsheetでチケット管理票,機材一覧表,ケーブル一覧表,各種認証情報,アドレス空間とVLAN ID,実アドレスの割当表(セグメントごと)⁠サーバ向け基本情報,NWチームのメンバリスト,下見チェックリスト,無線チェックリスト,諸費用計算と多岐にわたる重要な情報をやりとりしました。

その他,会場図面,物理配線イメージ,L2/L3設計図,Webへの掲載物,会場掲示ポスター,機材に貼ったシール素材,下見写真,など必要な図表を制作し共有しました。

この記事自体もGoogle DriveのDocument機能を利用し,共同で執筆し,共同で校正を行いました。画面上で他メンバーの校正する様子が見えるのが新鮮でした。

注2)
ホットステージとは実際に使用する機材を用いて,できるだけ本番に近い形でネットワークを構築し,さまざまなテストを行うことを指します。筆者の予想では,Interopの#Shownetチームあたりが作った造語ではないかと思っています。

可視化ツールについて

YAPCでは会場ネットワークとそのトラフィックを可視化したページをインターネット公開していたのはご存知でしょうか? このページは,会場に設置されたネットワーク機器(スイッチ,ルータ,無線AP)のネットワーク図上に,それぞれの機器間のトラフィックの向きと量をわかりやすく可視化したものです。以下の図が実際に公開していたネットワーク図となります。ここでは,このネットワーク図の導入について紹介します。

YAPC会場ネットワーク図

YAPC会場ネットワーク図

このネットワーク図は,Network Weathermapというツールで作成しています。Weathermapは,Cactiのプラグインとして(スタンドアロンでも動作します)PHP で実装されているツールで,SNMPで取得したトラフィック情報をノード(ネットワーク機器やサーバ)同士のリンクとして紐付けることでグラフィカルに表示する機能を持っています。YAPCでは,以下の手順でネットワーク図を作成しました。

  1. Cacti に全ネットワーク機器を登録し,SNMP経由でそれぞれのトラフィックを取得する
  2. Weathermapのエディタ機能(ネットワーク図を編集する機能)を利用して,ネットワーク図上に全ネットワーク機器とリンクを配置させる
  3. ノード間リンクのデータソースとして,1で取得したトラフィック情報を指定する

Weathermapを導入した目的はというと,実は死活監視やリソース監視系のツールほどの積極的な理由はありません。なぜなら,トラフィックの可視化は死活監視やリソース監視とは異なり,なかったとしてもネットワークサービスが提供できているかどうかがわからないような状況にはならないからです。しかし,これを利用することでチーム内でのネットワーク状況の共有がスムーズになり,トラフィックの流れや帯域の逼迫具合から,さまざまな予測が可能になったり,問題を発見するきっかけを見つけることができるようになったりします。そのため,ISPなど業務でネットワークサービスを提供している現場では,必須の機能となっています。

また,ネットワークインフラは普段利用者に意識されないものですが,これを見ていただくことでYAPCネットワークチームが提供しているネットワークサービスを参加者の方に少しでも意識してもらえたら,という外に向けてのアピールの目的もありました。

Weathermapを構築するポイントは,アプリケーションのインストールよりもむしろネットワーク図の調整にあります。⁠ネットワーク状況の共有」が導入目的の1つである以上,誰が見ても直感的にわかりやすい図にしなくてはなりません。そこで YAPCでは,JANOG 32 Meeting のページで公開されているWeathermapの活用記事を参考に,主に「背景画像の指定」「使用される帯域に合わせた表示調整」の2点の調整を実施しています。

1つ目の調整「背景画像の指定」では,背景画像として別途作成した会場のマップ図を指定することで,ネットワーク図に各部屋のネットワーク機器のレイアウト情報を加えています。上のネットワーク図から背景を抜いた図を想像していただくと,いかに背景図の存在が大きいかご理解していただけるかと思います。

2つ目の調整「使用される帯域に合わせた表示調整」では,ネットワーク帯域に応じた色分けの範囲を変更しています。デフォルトではリンク速度が1,000Mbits/secとして設定され,0~1%の使用量では白色,1~10%の使用量では紫色で描画されます。しかし,実環境ではリンク間速度が100Mbits/secを超えることはほぼないため,白,紫の2色でしか描画されないことになってしまいます。そこで使用量ごとの色分けをさらに細分化することで,デフォルトよりも多彩な図に仕上げました。

Weathermapからの気付き

会期中では,Weathermapを利用することでいくつかの問題に気付くことができました。たとえば,予想よりもアクセス回線の帯域使用量が逼迫していたことや,無線APのアクセスに偏りがあったことなどです。

このようにネットワークサービス運用時に気付くことができれば,何らかの対処を施したり次のアクションにつなげることができます。そして,何より運用して良かったことは,⁠視覚的にトラフィックが見えて楽しい」とチームメンバーからフィードバックをもらったことです。ネットワークの運用は地味で根気のいる作業になることが多いのですが,そういった中で少しでも運用を楽しくできたことが Weathermap 導入の一番の効果だったと思います。

会場内ネットワークのセキュリティ監視について

安心して使用できるネットワークには,暗黙的にですが快適で安全なネットワークであることが求められています。たとえば通信が途切れたりしないネットワークの安定性や,同じネットワークにつながっている別の端末から不正にアクセスされないといった環境であることです。

今回の会場ネットワークにて,どのような構成で安定した無線通信を提供していたかという点についてはすでにご紹介しているので,ここではセキュリティの観点から会場ネットワークをご紹介します。

IDSによるセキュリティ監視

セキュリティ監視を実施するため,今回はネットワークIDS(Intrusion Detection System)Snortを使用しました。IDSはシグネチャと呼ばれる,攻撃通信の特徴を示すネットワークトラフィック・パターンを用意しておき,そのシグネチャに一致する通信が検知した際にアラートを出します。

このアラートを常に監視し,攻撃通信の内容を見て対処することがセキュリティ監視であるといえます。重要な点はシグネチャがないと攻撃通信を発見することができないということと,たとえアラートが発生したとしてもそのアラートを見ていなければ対処ができないということです。

シグネチャの話

Snortは誰でも無料で使用することができるIDSです。またSnortのコミュニティが作成しているシグネチャも公開されています(ただし最新のシグネチャは有料。1ヵ月以上前に公開されたシグネチャから無料で使用可能)⁠今回の会場ネットワークでは機器の制約もありアプライアンス製品ではなく,Snort を使用しました。シグネチャに関してはSnortコミュニティが作成しているシグネチャとネットワークチームスタッフが作成したカスタムシグネチャを使用しました。

IDSによるセキュリティ監視は,①インターネットから守るべき内部ネットワークに対する攻撃通信を発見すること,②内部ネットワークからインターネットへ出て行く不審な通信を発見すること,の2つの方向性の違いがあります。

①にはSQLインジェクションによる情報漏えいを狙った攻撃や,ミドルウェアの脆弱性や設定不備を狙ったバックドアプログラムの設置などが挙げられます。一方,②については管理下にない端末に対する攻撃通信やマルウェアに感染した場合に発生する通信などが挙げられます。

今回のような会場ネットワークではユーザセグメントから外部に対してWebサーバやFTPサーバなどを公開しないため,①の通信はほぼ発生しないと考えてよいです。しかしながら②には十分,注意する必要があります。YAPCは1,000人を超える一般参加者がいて,その他に発表者や運営スタッフがいます。皆,意識高い人たちばかりと考えられるので外部への攻撃通信は発生しないと推測されますが,マルウェア感染についてはマルウェア対策ソフトの導入等の対策をし,不審なメールの添付ファイルを開かない等の注意をしていても,場合によっては感染してしまう可能性があります。

そこで今回のセキュリティ監視ではこのマルウェアに関する通信に注目して,2種類のカスタムシグネチャを作成しました。

1つ目のカスタムシグネチャは,不審なIPアドレスにアクセスしていないかを発見するためのシグネチャです。マルウェアドメインリストと呼ばれるサイトで,マルウェアに感染した際に通信の宛先となる不審なIPアドレスのリストを公開しています。このアドレスのリストを元にカスタムシグネチャを作成しました。

2つ目のカスタムシグネチャは,マルウェアに感染した際に発生するネットワークトラフィック・パターンを発見するためのシグネチャです。マルウェアを解析しているWebサイトで,マルウェアに感染した際に発生する通信内容を公開しています。この公開されているネットワークトラフィック・パターンを元にカスタムシグネチャを作成しました。

まとめると次の3種類のシグネチャでセキュリティ監視を実施しました。

  • Snortのコミュニティが公開しているシグネチャ
  • 不審なIPアドレスに接続していないかを発見するカスタムシグネチャ
  • マルウェアに感染したような不審な通信がないかを発見するカスタムシグネチャ

当日の監視の話

セキュリティ監視はシグネチャを用意するだけでは片手落ちです。用意したシグネチャを元に,発生したアラートを見ることも大切です。会期中,ネットワークを提供している間はこのアラートを見る必要がありました。しかしセキュリティ監視をするにあたり避けて通れないのが,シグネチャのチューニングです。シグネチャの検知精度によって,通常通信を誤検知することがあります。誤検知のアラートが多いと,見つけなければならないアラートを見逃すことになりかねません。そのため誤検知が多いシグネチャに関しては無効化するというチューニングが必要となります。そのためアラートを見て誤検知と判断した場合はその結果をフィードバックし,シグネチャチューニングをするというサイクルを回していました。

Snortはアラートをいろいろな形式で出力することができます。単純なテキスト形式からネットワークトラフィックを含むPCAP形式などです。数百,数千件のアラートが発生するため,これらのアラートを直接見ることは視覚的にも見落としやすく,現実的ではありません。そこでアラートを見るツールとしてSnorbyを使用しました。このツールにより,アラートの発生状況や検知したアラートの検索など,セキュリティ監視が格段にやりやすくなります。

まとめ:セキュリティ監視を通して

会期中のセキュリティ監視では特筆すべき危険なアラートは発生していませんでした。これは参加者の皆様が適切なセキュリティ対策をしていて,マルウェア感染のリスクを認知しているからではないでしょうか。しかしながらIDSによるセキュリティ監視は前述のとおり,シグネチャが無ければアラートは発生しません。シグネチャが無いような新手のマルウェアに感染していた場合は,当然ですが発見することはできません。もし新手のマルウェアに感染していた!という事実がわかった方がいれば是非,ネットワークトラフィック・パターンを採取させてください。次回のためにシグネチャを作成しますので。

著者プロフィール

YAPCネットワークチーム

YAPC会場ネットワーク設営,運用のために集められたプロフェッショナル集団。

@yapcnwteam

東松裕道(とうまつひろみち)

アラクサラネットワークス株式会社 製品開発本部

高田美紀(たかたみき)

NTTコミュニケーションズ株式会社 先端IPアーキテクチャセンタ

高橋祐也(たかはしゆうや)

国内電気通信事業者

津山訓司(つやまさとし)

NECビッグローブ株式会社

森久和昭(もりひさかずあき)

セキュリティベンダ

熊谷暁(くまがいあきら)

個人

田島弘隆(たじまひろたか)

Genie Networks

バックナンバー

ネットワーク

  • 1,000人超の大規模開発者イベント「YAPC::Asia Tokyo 2013」を支えたネットワークインフラ構築の舞台裏~プロフェッショナルのボランタリーが生み出したチカラ

コメント

コメントの記入