第5回 「信頼されたPath」という考え方をLIDSで使う
面 和毅サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
シニアマネージャ
2006/3/25
LIDS TPEの考え方
LIDSを導入したシステムでは、前章で挙げたようなTPEの3つの構成要素を次のように定義します。
1.Trusted Path
この連載ですでに説明しているとおり、LIDSを導入したシステムではrootの権限を制限できます。LIDSを導入する目的として「rootも信用しない」という大前提があります。よって、信頼されたPathとは「rootがオーナーである親ディレクトリ」という定義ではなく、「バイナリ/カーネルモジュール/ライブラリのパスがLIDSでREADONLY/DENYで保護されている状態」を「信頼できる」として定義します。
つまり、「lidsconf -A -o /sbin -j READONLY」であれば、/sbin以下のバイナリファイルが信頼できます。また、「lidsconf -A -o /lib -j READONLY」であれば、/lib以下のライブラリが信頼できます。同様に「lidsconf -A -o /lib/modules -j READONLY」であれば、/lib/modules以下のモジュールが信頼できます。
さらに、
lidsconf -A -o /var/workdir -j READONLY lidsconf -A -o /sbin/foo -j READONLY lidsconf -A -s /sbin/foo -o /var/workdir -j WRITE |
という設定において、信頼できるバイナリ「foo」が/var/workdirに対してWRITE権限を持っているときには、/var/workdir以下のファイルも信頼できると定義します。
2.Trusted ACL
LIDSではユーザーによるアクセス制限を考慮しておらず、バイナリ/プログラムの方に焦点を当てていますので、信頼できるユーザーかどうかを考慮することができません。そこで、LIDS ACLをTrusted ACLとします。
3.Rule
ルールは「信頼できるバイナリのみが実行を許可され、信頼できるライブラリ/カーネルモジュールのみがロードを許可される」と定義されます。
これらの定義に基づいて実装されたものが、LIDS TPEになります。LIDS TPEを用いると、以下のことが可能になります。
- root特権を含む任意のユーザーが、保護されていないライブラリを含む任意のファイル(保護されていないバイナリ)を実行することを防止
- root特権を含む任意のユーザーが、保護されていないカーネルモジュールを読み込むことを防止
- システムを「LD_PRELOAD/LD_LIBRARY_PATHタイプ」の攻撃から防御
- システムを「'/lib/ld-linux.so.X <executable_name>'」タイプの攻撃から防御
実際にLIDS TPEを使ってみよう
それでは、LIDS TPEの使用例を実際に見てみましょう。前回、使い方を説明したVMwareイメージを使用します。
LIDSの入ったシステムをTPEモードにするには、rootアカウントで、
# lidsadm -S -- +TPE |
とするか、カーネル封印時のコマンドを、
# lidsadm -I +TPE |
とします。なお、紹介したVMwareイメージでは、すでにLIDSはカーネル封印時にTPEモードが有効になっています。
それでは早速VMwareイメージを立ち上げてrootでログインし、
# lidsadm -V |
というコマンドを入力してみましょう。LIDSの状態パラメータがチェックできます。
すると「TPE 1」となっていることが分かります。これは、TPEモードが有効になっていることを意味しています。
画面1 LIDSの状態パラメータの確認 |
この状態で、LIDS TPEの挙動をテストしてみましょう。VMwareイメージでは、/binや/usr/binはREADONLYで保護されていますが、/tmp以下はWRITEパーミッションが与えられており、何も保護が掛かっていない状態になっています。では、/tmpディレクトリに移動し、/bin/lsコマンドを/tmpディレクトリにコピーします。
# cd /tmp # cp /bin/ls ./ |
次に、「/tmp/ls -l」を実行してみましょう。
# /tmp/ls -l |
TPEモードが有効になっているため、「/tmp/lsが保護されていない入力のため、実行を拒否した」というエラーメッセージが出て、「/tmp/ls」は実行されません。しかし、ここで「/bin/ls -l」を実行すると、/tmpディレクトリの中身は正しく表示されます。
画面2 LIDS TPEの挙動 |
LIDS TPEの考え方
LIDS TPEの機能を見てきましたが、LIDS TPEの実装もいまだ完ぺきではありません。例えば、LIDS TPEではsh、perlなどを信頼してしまうと、シェルスクリプトやPerlスクリプトに関しても自動的に信頼してしまうため、悪意のあるスクリプトによる攻撃を防げません。これらに関しては、TPEの発展形であるLIDS TDEとSandbox機能を使って防ぎます。
また、LIDS TPEを導入したとしても、バッファオーバーフローの脆弱性を用いて任意のコードを実行される攻撃を防げません。バッファオーバーフローに関しては、別途、対策を講じる必要があります。
次回は、TPEから派生した機能であるLIDS TDEとSandbox機能を説明します。
2/2
|
Index | |
「信頼されたPath」という考え方をLIDSで使う | |
Page1 Trusted Pathというセキュリティモデル 一般的なTPEの考え方 |
|
Page2 LIDS TPEの考え方 実際にLIDS TPEを使ってみよう LIDS TPEだけでは万能ではない |
Profile |
面 和毅(おも かずき) サイオステクノロジー株式会社 インフラストラクチャービジネスユニット Linuxテクノロジー部 OSSテクノロジーグループ シニアマネージャ 学生時代よりUNIXに親しむ。1997年からサーバ構築およびセキュリティ全般を扱う仕事に従事、Linuxを使い始める。 現在はLIDSの普及活動に注力。LIDSユーザ会(LIDS-JP)の立ち上げやLIDS関連文書の日本語化、LIDSを用いたシステム構築の紹介などを行っている。また、サイオステクノロジーでビジネス面でのLIDSの普及活動に注力している。 2005年12月より、LIDS Teamに参加し、LIDSの公式な開発チームの一員として活動している。 |
Security&Trust記事一覧 |
- Windows起動前後にデバイスを守る工夫、ルートキットを防ぐ (2017/7/24)
Windows 10が備える多彩なセキュリティ対策機能を丸ごと理解するには、5つのスタックに分けて順に押さえていくことが早道だ。連載第1回は、Windows起動前の「デバイスの保護」とHyper-Vを用いたセキュリティ構成について紹介する。 - WannaCryがホンダやマクドにも。中学3年生が作ったランサムウェアの正体も話題に (2017/7/11)
2017年6月のセキュリティクラスタでは、「WannaCry」の残り火にやられたホンダや亜種に感染したマクドナルドに注目が集まった他、ランサムウェアを作成して配布した中学3年生、ランサムウェアに降伏してしまった韓国のホスティング企業など、5月に引き続きランサムウェアの話題が席巻していました。 - Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (2017/7/10)
代表的なマルウェア解析方法を紹介し、自社のみに影響があるマルウェアを「培養」するために構築した動的解析環境について解説する - 侵入されることを前提に考える――内部対策はログ管理から (2017/7/5)
人員リソースや予算の限られた中堅・中小企業にとって、大企業で導入されがちな、過剰に高機能で管理負荷の高いセキュリティ対策を施すのは現実的ではない。本連載では、中堅・中小企業が目指すべきセキュリティ対策の“現実解“を、特に標的型攻撃(APT:Advanced Persistent Threat)対策の観点から考える。
|
|