授業後に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%はない.