
第10回 ACL設定のステップバイステップ
面 和毅サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
シニアマネージャ
2006/9/8
権限の継承
前回も簡単に触れましたが、LIDSではプロセスに権限を与えた際に、そのプロセスの子プロセスが持つ権限は次のようになります。
- 親プロセスと子プロセスが同じプログラムの場合には、権限がそのまま引き継がれる
- 親プロセスと子プロセスのプログラムが異なる場合には、ACLを設定する際に「継承(inheritance)レベル」で設定されたレベルまでの世代が親プロセスの権限を引き継ぐ
実際にLIDS(LIDS-1系列)のソースでは、ACLによる判定を「lids_compute_acls()」という関数で計算する際に子プロセスのACLを調べ、inheritanceの値が設定されていた場合には、0になるまでPIDをさかのぼってACLを調べていくという方法を取っています。
/usr/src/linux/kernel/lids.c 559 int 560 lids_compute_acls(struct lids_task_acl *current_acl, 561 struct lids_sys_acl *new_sys_acl, 562 struct lids_task_acl *computed_acl, int protect) 563 { 564 (略) 658 sizeof(struct lids_acl)); 659 if (dst_acl->inherit > 0) 660 dst_acl->inherit--; |
それでは、/etc/init.d/vsftpdに権限を与え、それを子プロセスであるstart-stop-daemonまで継承させてみましょう。継承を設定するには、lidsconfコマンドでACLを設定する際に「-i」オプションを付けます。i(inheritance)の後に、継承レベルを数字で指定します。
例えば、今回のように/etc/init.d/vsftpdの子プロセス(継承レベル1)となるstart-stop-daemonに、/var/run/vsftpd以下に書き込み(WRITE)の権限を継承させたい場合には次のようになります。
# lidsconf -A BOOT -s /etc/init.d/vsftpd -o /var/run/vsftpd -i 1 -j WRITE |
権限の継承の問題点
機能としては非常に分かりやすい権限の継承ですが、よく考えずに使ってしまうとセキュリティのリスクを増やす結果になりかねません。
今回、例として使った/etc/init.d/vsftpdの場合、このスクリプトからは、
- /sbin/start-stop-daemon
- /bin/egrep
という2つのプログラムが起動します。両者に/var/run/vsftpdへのWRITE権限が継承されることになりますので、(継承を)望んでいないプログラム「egrep」に対しても、WRITE権限が継承されています。
これらのプログラムがREADONLYで保護されていたとしても、何らかのバグが発見された場合に、セキュリティ上のリスクが増えてしまう可能性があります(あくまでも/var/run/vsftpdが親プロセスであったときのみに権限を与えていますので、start-stop-daemonプログラムに直接WRITE権限を与えるよりも制限は掛かっています)。
![]() |
権限の継承の問題点(画像をクリックすると拡大します) |
LIDSでは、権限の継承ができる子プロセスは、READONLY以上で守られているものが対象になっているため、改ざんされる可能性がある「危険な」プログラムに権限が継承されるのを防止できます。
しかし、子プロセスなどで起動するプログラムの数が最小限(権限が不要なプログラムには継承されない)の場合には権限の継承を行った方がよいですが、さまざまなプログラムを子プロセスとして呼び出すプログラムに関しては、プログラムに直接権限を与えた方が子プロセスとして呼び出されるプログラムにバグが発見されたときのことを考えると無難です。
自作したプログラムやシェルスクリプトなどで、動作を完全に把握できるプログラムを対象に権限の継承を使用しましょう。
start-stop-daemonに書き込み権限を与える
今回はリスクを考慮してstart-stop-daemonに対して/var/run/vsftpd以下の書き込み権限を与えましょう。この権限は、vsftpdが起動する際と停止する際に必要ですので、BOOTステートとSHUTDOWNステートの両方に与えます。
「lids=0」としてLIDSが無効の状態でシステムを起動するか、「lidsadm -S -- -LIDS」としてLFSを開き、
# lidsconf -A BOOT -s /sbin/start-stop-daemon -o /var/run/vsftpd -j WRITE # lidsconf -A SHUTDOWN -s /sbin/start-stop-daemon -o /var/run/vsftpd -j WRITE |
という2つのACLを設定しましょう。
設定が終わったらACLを再コンパイルし、システムをSHUTDOWNステートに移行させてから、再起動します。
# lidsconf -C # lidsadm -S -- +SHUTDOWN # reboot |
あらためてLIDSが有効な状態で起動、ログインして「ps」コマンドなどで確認すると、今度はvsftpdが動作しているはずです。
![]() |
2/3
|
![]() |
Index | |
ACL設定のステップバイステップ | |
Page1 VMwareイメージのアップデート vsftpdを使ってのACLを設定してみる |
|
![]() |
Page2 権限の継承 権限の継承の問題点 |
Page3 vsftpdの動作テストをする |
![]() |
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)対策の観点から考える。
![]() |
|
|
|
![]() |