Upgrade to Pro — share decks privately, control downloads, hide ads and more …

卒業制作 サーバーの脆弱性情報管理システム

 卒業制作 サーバーの脆弱性情報管理システム

専門学生時代の卒業制作で開発したシステムの発表資料です。
slideshare版: https://www.slideshare.net/hikaruashinon/ss-58160639

Hikaru Ashino

February 11, 2016
Tweet

More Decks by Hikaru Ashino

Other Decks in Programming

Transcript

  1. + Agenda n Introduction n 開発経緯 n Features n システム説明

    n Architecture n アーキテクチャー説明 n Matching algorithm n 脆弱性情報のマッチング処理説明 n Demo n WebUIによる紹介 n Using Technology n 本システムで使われているソフトウェアや技術等の紹介。
  2. + Introduction n 2014年様々な脆弱性が世間を騒がせた。 n サーバーを始めとするLinux系OSを狙った「ShellShock」。 n 度重なる「OpenSSL」の脆弱性。 n クラウド化が進む中、サーバーの台数は増え続ける。

    n サーバー管理者は、脆弱性の対応が重荷になっている。 n サーバーのコモディティ化が進む。 n 安価なサーバーを一般ユーザーが借りることができる。 n セキュリティの対策は自分で行わないといけないサービスが多い。 ※コモディティ化 : 高価な商品が低価格化・普及品化すること
  3. + Introduction n 私自身、多数のサーバーを管理していた。 n インターネットからアクセス可能なサーバーを数十台管理。 n CVEが発表されるたびに、sshでサーバーに繋いで対象パッケージ のバージョン等を確認、アップデート作業が手間だった。 n

    脆弱性対応作業が重荷になっている。 n サーバーを多数管理している知人も、脆弱性対応が手間だった。 n 脆弱性対応作業が、作業×サーバー台数分なので非常に大変。 n 脆弱性対応作業を自動化したい。 n 依存パッケージが勝手にアップデートされると、別のプログラムに 影響が出る。 n パッチ当てる/アップデートについては人間が判断したい。
  4. + Introduction n 脆弱性対応作業の流れ n 調査 n 脆弱性情報を探す or 発表された情報を確認。

    n 脆弱性によって、どのような問題が発生するか確認。 n 対策するか否かについて検討。 n 対策情報を探す。 n 対象サーバーの確認。 n テスト n 対象サーバーと同等の環境を用意し対策を行った場合、他のソフト ウェアに影響が発生しないか検証を行う。 n 実施 n 対象サーバーに対して、対策を実施。 n 対策を実施したことで影響が発生していないか確認。 n 本システムでは、調査段階の省力化を目指して開発。
  5. + Features n Server / Agent によるシステム n 管理対象(Agent)にはエージェントプログラム。 n

    管理側(Monitoring Server)にはサーバープログラム。 n サーバーにインストールされているパッケージ情報の管理 n ミドルウェア/パッケージの情報等管理。 (name,vendor,version,release,etc…) n インストールされているパッケージ情報をAgentが自動取得、Monitoring Serverに送信。 n install / remove / updateに対応、情報が変更される度に自動取得。 n AgentをProject -> AgentGroup -> Agentという階層構造で管理。 n 脆弱性情報の管理と可視化 n 脆弱性情報データベース(NIST)からCVE情報を自動取得。 n パッケージが、脆弱性のあるバージョンかどうかチェック。 n WebUIを通して、Agentにインストールされているパッケージ情報と関連す る脆弱性情報を表示。
  6. + Architecture NIST NVD Monitoring Server Software Version OpenSSL 1.0.2c

    NIST NVDより脆弱性情報(CVE)を取得。
  7. + Architecture Monitoring Server Web2(Agent) OpenSSL 1.0.2c Web1(Agent) OpenSSL 1.0.1e

    {“software” : “OpenSSL”, “version” : “1.0.1e”} {“software” : “OpenSSL”, “version” : “1.0.2c”} Software Version OpenSSL 1.0.2c Agentから、インストールされているパッケージ情報を送信。
  8. + Architecture Monitoring Server Web2(Agent) OpenSSL 1.0.2c Web1(Agent) OpenSSL 1.0.1e

    Host Software Version Web1 OpenSSL 1.0.1e Web2 OpenSSL 1.0.2c Software Version OpenSSL 1.0.2c Host Software Version Web1 OpenSSL 1.0.1e Web2 OpenSSL 1.0.2c Agentから取得した情報と、CVE情報を突き合わせて脆弱性情報の有無をチェック。
  9. + Architecture Monitoring Server Host Software Version Web1 OpenSSL 1.0.1e

    Web2 OpenSSL 1.0.2c Software Version OpenSSL 1.0.2c Host Software Version Web1 OpenSSL 1.0.1e Web2 OpenSSL 1.0.2c H S V × ◻ ◦ WebUIを通して、Agentにインストールされているパッケージ情報と 関連する脆弱性情報を表示。
  10. + Matching algorithm Software CVE ID Name Version 2 openssl

    1.0.2c Agent ID Name 1 Web02 CPE ID CPE Name Version 3 cpe:/a:openssl:openssl:1.0.2c openssl 1.0.2c ID CVEID CVSS Score …. CPE 4 CVE-2015-**** 8 …. cpe:/a:openssl:openssl:1.0.2c ※実際の実装と基本的には同等のアルゴリズムです。 ※完全一致しないSoftwareについては、脆弱性情報を誤検知・見逃しをする可能性があります。(改良中)
  11. + Using Technology n OS n Server (Monitoring Server) n

    CentOS 6.7 n Agent(動作検証) n CentOS 6.x, CentOS 7.x n Red Hat Enterprise Linux 7.2 n Oracle Linux 5.x, 6.x, 7.x n Fedora 23 n Program n Server (Monitoring Server) n Python(2.7.6) n Django(1.8) n Agent n Python(2.7.6) n DB n PostgreSQL(9.5) n MySQL(5.1.73)