hbstudy#28 LT

rsyslog + PostgreSQL9.1.x= ???


           ishikawa84g
Agenda

1.   ログ
2.   目的
3.   システム構成
4.   rsyslog とは
5.   PostgreSQL 9.1.x (SE-PostgreSQL) とは
6.   Labeled IPSec とは
7.   設定
8.   まとめ
1. ログ管理

   今までのログ
       定期的な監視
         リソースチェック
         障害の発見

       インシデント発生時に利用
           原因の特定


   今のログ
     新法制度への対応
     社会的リスクマネジメント

     セキュリティ要件の強化

    ⇒ 「何かあってから」ではなく、「何もなくても」
        → 根本は「何かあったらどうする!」だけど....
1. ログ管理

   個別サーバでのログ収集の限界
       全てのサーバに同一のポリシーを適用する
         ローテート期間などの管理が難しい
         システムマネジメントツールを利用すればある程度可能



       システムの複雑化にともなうログの増加
           ハードディスクを圧迫
            →システムにも影響


       事故または故意による保存ログ消失
         基本的にログはファイルで管理される
         # rm -rf /var/log/*
2. 目的

   システムのポリシーを管理することは難しいが、
       せめて、ログを消せない仕組みが欲しい
       あと、欲を言うとログを一元管理したい
       既存の仕組みで、できればタダで。


   妄想2年(最近思い出した)
3. システム構成

   以下、実証実験環境




                  ログ転送




     普通のサーバ                  ログ保存用
      (rsyslog)          データベースサーバ
                         (PostgreSQL9.1.x)
4. rsyslog とは

   RHEL系で
    syslogd にとって代わってたシスログデーモン
       http://www.rsyslog.com/


   rsyslog の r は       remote ではなく、reliable
       reliable(信頼できる) syslog
       主な機能
          TCP によるログ転送
          セキュアなログ転送が可能(stunnelを使用)
          ログ処理が追いつかなくなった場合に、ログをプール可能
          RFC3195(http://www.ietf.org/rfc/rfc3195.txt)サポート
          標準機能として保存先にデータベースを指定可能
5. なぜ PostgreSQL 9.1.x?

   普通の PostgreSQL です。
   ただし!
       Add a SECURITY LABEL command and support for
        SELinux permissions control
       (PostgreSQL 9.1.0 リリースノートより)


   OS レベルの MAC を DB でも制御可能
       通称: SE-PostgreSQL
       未踏ソフトウェア創造事業 にて 2006年 発表
       2011年
5. SE-PostgreSQL とは

   未踏ソフトウェア創造事業 にて 2006年 発表
   作者は日本人: 海外浩平氏
   2011年09月 PostgreSQL 9.1 (一部)標準機能へ

   今までOSの権限とまったく結びつかず、
    DB 内で最強だった Super User を制御する

   同じ Super User を使った場合でも、
    コマンドを実行したユーザの権限によって、
    DB 内の権限を縮退させることが可能
5. SE-PostgreSQL とは

   もっと具体的に
       SELECT Only のテーブル
       SELECT INERT Only のテーブル
       特定のカラムやタプルを隠ぺい
           ただし、View を使った場合には見えるとかとか


   rsyslog への応用
       ネットワーク経由で来たデータベースへのアクセスは
        SELECT, INSERT 以外許可しない
       ログが消せないシステムができる!
         勿論、死ぬほど INSERT されたら違う意味で死にます。
         SELinux がどうとか関係ない問題
6. Labeled IPSec とは

   IPSec の中にセキュリティラベルを混ぜる技術
       今まで取得できなかったリモートのラベルを取得可能
       ただし、対向も IPSec の設定が必要


   Windows 等はラベルの仕組みがない
       UnLabel (ラベルなし/ラベル不明)として到達
       IPSec が無効な場合も UnLabel となる


   困った・・・
       UnLabel はFailback Context 機能で解決
       分からない時は定義したラベルを付ける
後記

   この時、デモが失敗しました。
   詳しくはこの辺り参照ください。
       PostgreSQL 9.1.0 で SE-PostgreSQL
           http://2done.org/index.php?id=42
       rsyslog + SE-PostgreSQL で改竄されない?ログ
        サーバ案
           http://2done.org/index.php?id=44

rsyslog + SE-PostgreSQL = ???

  • 1.
    hbstudy#28 LT rsyslog +PostgreSQL9.1.x= ??? ishikawa84g
  • 2.
    Agenda 1. ログ 2. 目的 3. システム構成 4. rsyslog とは 5. PostgreSQL 9.1.x (SE-PostgreSQL) とは 6. Labeled IPSec とは 7. 設定 8. まとめ
  • 3.
    1. ログ管理  今までのログ  定期的な監視  リソースチェック  障害の発見  インシデント発生時に利用  原因の特定  今のログ  新法制度への対応  社会的リスクマネジメント  セキュリティ要件の強化 ⇒ 「何かあってから」ではなく、「何もなくても」 → 根本は「何かあったらどうする!」だけど....
  • 4.
    1. ログ管理  個別サーバでのログ収集の限界  全てのサーバに同一のポリシーを適用する  ローテート期間などの管理が難しい  システムマネジメントツールを利用すればある程度可能  システムの複雑化にともなうログの増加  ハードディスクを圧迫 →システムにも影響  事故または故意による保存ログ消失  基本的にログはファイルで管理される  # rm -rf /var/log/*
  • 5.
    2. 目的  システムのポリシーを管理することは難しいが、  せめて、ログを消せない仕組みが欲しい  あと、欲を言うとログを一元管理したい  既存の仕組みで、できればタダで。  妄想2年(最近思い出した)
  • 6.
    3. システム構成  以下、実証実験環境 ログ転送 普通のサーバ ログ保存用 (rsyslog) データベースサーバ (PostgreSQL9.1.x)
  • 7.
    4. rsyslog とは  RHEL系で syslogd にとって代わってたシスログデーモン  http://www.rsyslog.com/  rsyslog の r は remote ではなく、reliable  reliable(信頼できる) syslog  主な機能  TCP によるログ転送  セキュアなログ転送が可能(stunnelを使用)  ログ処理が追いつかなくなった場合に、ログをプール可能  RFC3195(http://www.ietf.org/rfc/rfc3195.txt)サポート  標準機能として保存先にデータベースを指定可能
  • 8.
    5. なぜ PostgreSQL9.1.x?  普通の PostgreSQL です。  ただし!  Add a SECURITY LABEL command and support for SELinux permissions control  (PostgreSQL 9.1.0 リリースノートより)  OS レベルの MAC を DB でも制御可能  通称: SE-PostgreSQL  未踏ソフトウェア創造事業 にて 2006年 発表  2011年
  • 9.
    5. SE-PostgreSQL とは  未踏ソフトウェア創造事業 にて 2006年 発表  作者は日本人: 海外浩平氏  2011年09月 PostgreSQL 9.1 (一部)標準機能へ  今までOSの権限とまったく結びつかず、 DB 内で最強だった Super User を制御する  同じ Super User を使った場合でも、 コマンドを実行したユーザの権限によって、 DB 内の権限を縮退させることが可能
  • 10.
    5. SE-PostgreSQL とは  もっと具体的に  SELECT Only のテーブル  SELECT INERT Only のテーブル  特定のカラムやタプルを隠ぺい  ただし、View を使った場合には見えるとかとか  rsyslog への応用  ネットワーク経由で来たデータベースへのアクセスは SELECT, INSERT 以外許可しない  ログが消せないシステムができる!  勿論、死ぬほど INSERT されたら違う意味で死にます。  SELinux がどうとか関係ない問題
  • 11.
    6. Labeled IPSecとは  IPSec の中にセキュリティラベルを混ぜる技術  今まで取得できなかったリモートのラベルを取得可能  ただし、対向も IPSec の設定が必要  Windows 等はラベルの仕組みがない  UnLabel (ラベルなし/ラベル不明)として到達  IPSec が無効な場合も UnLabel となる  困った・・・  UnLabel はFailback Context 機能で解決  分からない時は定義したラベルを付ける
  • 12.
    後記  この時、デモが失敗しました。  詳しくはこの辺り参照ください。  PostgreSQL 9.1.0 で SE-PostgreSQL  http://2done.org/index.php?id=42  rsyslog + SE-PostgreSQL で改竄されない?ログ サーバ案  http://2done.org/index.php?id=44