分散システムとポエム

「OSSセキュリティ技術の会 第一回勉強会」に参加した

授業後に1時間くらいかけてセキュリティ勉強会に行ってきたので備忘録を書いておく.

OSSセキュリティ技術の会 第一回勉強会 – connpass

SELinuxの創生

軍用OSのTrusted OSが10年後に商用化して進化したのがSecureOS. このSecureOSのコンセプトの中にSELinux生まれた

TrustedOS

  • 国防総省の調達書で作られた. その後、国際規格に変化する.
  • 調達書にはDivision制御(A-D)について記載している.
  • 調達書のBより上の部分がTrustedOS.

C: 任意アクセス

Windowsがあてはまる.
読める人が定めた任意のアクセス制御が継承される.

強制アクセス制御

  • 下位レベルに書き込めないため無権限者が書き込めない.
  • INFORMATION FLOW CONTROL(下から上へファイルが流れる)
  • 最初の設定者のアクセス制御が継承される.

WRITE-UP → 監査ログの格納に使用し、追記のみ可能.

(例えるなら)

  • 任意)封筒にマル秘と書く
  • 強制)文書にマル秘を書く

TrustedOSの進化

  • CMW(Comparted Mode Workstation)
  • OSIS EVOLUTIONARY DEVELOPMENT (OED)
  • MULTILEVEL ACCESS CONTROL

SecureOS → SELinux

RSA Conference USA 2017

SELinuxの問題,課題は多く存在するのでこれを題材に論文を書くとオススメ

Linux Foundationの取り組み

  • OSSセキュリティは商用ソフトでも以下でもない.
  • タダ乗りしないでバグレポートやパッチ貢献してほしい.

CVEの新たな動き

  • これまでUSの非営利団体が主導してきた.
  • CVE報告件数が増加したのは、見る人が増えたから.
  • 脆弱性報告が増えたからといって、マイナスに考えないで.

コンテナのセキュリティ

デフォルトの設定でコンテナ管理システムを動かすのは危ない.

以下はその対策技術

  • SELinux
  • seccomp
  • OpenSCAP

コンテナ時代にSELinuxが注目されている

最近のSELinuxのトピック

CIL

  • ポリシをまとめて書くことでより簡単に
  • 50%〜70%の早くなると言われている

SELinux + Container

  • Docker で SELinux OFF はなぜ?
  • Docker公式はSELinux ONを推奨.
  • 日本と海外は乖離が大きい(ガラパゴス化?)

FileSystem

  • Linux 4.5からのGFSサポート
  • Distributed File Systemのサポート

NFS

  • Linux v4.8からのサポート
  • IPv6でのネットワークラベリングサポート

SELinux + SCAP

  • 海外だとセキュリティのチェックでSELinuxが普通
  • 海外の某社だとSELinux使っているのが普通
  • Windows Defenderみたいなもの

SELinux + Android

  • SEAndroid
  • Android 4.4からSELinux Enforcingが有効に
  • Android 5.0から全てのSELinuxのポリシがEnforcingに

その他

Oracle製品もSELinuxで守ってる.

最近の脆弱性情報のPoCとSELinux

ShellShock

  • Metasploit (Kali Linux) でexploit
  • リモートから任意のコマンドを実行可能.
  • 無効時) 実行可能.
  • 有効時) 実行できず.
  • /var/log/messagesを読むとdeniedになっている.
  • →シェルショック対象マシンでもSELinuxが有効化すれば緩和できる.

BIND9の脆弱性 CVE-2016-2776

  • パケット1つでダウンする.→SELinuxでは守れない. 
  • あくまでもアクセス権を守るのがSELinuxだからDoSは守れない(原理的に無理)

Linux Kernel特権昇格の脆弱性 CVE2017-6074

  • ローカルユーザはRootを乗っ取れるというもの.
  • 無効時)pwnを実行されると権限昇格されてしまう.
  • 有効時)SELinuxをOnにすることで権限昇格を防げる.
  • /var/log/messagesを読んでみるとauditでログが生成されている.

Apache Struts2の脆弱性 CVE-2017-5638

  • (被害) 日本郵便、都税クレジットカード支払いサイト、沖縄電力、住宅金融支援機構、メガネ販売店JINS
  • 無効時) 防げずに脆弱性を突かれる
  • 有効次) 防げていない. 守れない.

SELinuxのドメインはTomcatで動いている.

  • コマンドseinfo -ttomcat _t -xを実行してみる.
  • unconfind -> なんでも権限を持っている.
  • tomcatがunconfindを持っているのはまずい.
  • SELinuxが問題ではなくポリシーがクソだから守れてない. 

ntfs-3g

  • ポリシに問題あり.
  • ちなみにUbuntuはSELinux非推奨でAppArmor使ってマン.

まとめ

  • 海外では使うのが当たり前
  • 守れる範囲を把握する
  • 守れるものと守れないものがある
  • 現在も開発が進んでいる

SELinuxの正体を暴く! sesearch入門

セキュリティポリシが分かれば効果が分かる

  • 設定内容を把握して適用する.
  • 単にポリシーを適用させればよいのではない.

オブジェクトクラスとパーミッションは大量にあるから、カーネルソースを読むとよく分かる.
全部把握するのが大変なので特に重要なallowとfile_contextsを取り上げる.

セキュリティポリシの実体

  • SELinuxのポリシはバイナリ形式なのでそのままでは読めない.
  • 読むためには専用ツールが必要になる.
  • 読むためのツールはデフォルトで入っていない(不思議)
  • sesearch yum install setools

基本的な使い方

sesearch -C -A -s [ドメイン名] -t [タイプ] -c [オブジェクトクラス] -p [パーミッション]

  • Cオプションはひとまずつけておく
  • AオプションでAllow文が表示される

例) sesearch -C -A -s httpd_t

(例1) 攻撃ツールのダウンロードと実行

  • 頭文字Eをチェックしよう
  • httpdを例にすると、ダウンロードは出来ても実行ができない.

(例2) 破壊活動の可能性分析

  • 一時ファイルと特殊ファイル以外は書き込めない→破壊活動ができず

便利そうなツール

  • インストール: yum install policycoreutils-gui
  • 起動: sepolicy gui

まとめ

  • 複数の技術を組み合わせた多層防御が大事.
  • セキュリティに100%はない.