第9回 lidstoolsを使ってACLを設定する
面 和毅サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
シニアマネージャ
2006/8/9
前回、前々回と、lidstools(lidsadmコマンド、lidsconfコマンド)の使い方を説明しました。今回は、/etc/lids以下のファイルの内容を詳しく見ていきます。また、LIDSのACLを設定する際に必要となる知識をいくつか紹介します。
今回も第6回で用意したVMwareイメージを用いて解説を行います。実際に手元で設定ファイルなどを確認したい場合にはLIDS-JPサイトからVMwareイメージをダウンロードしてください。
【atmarkIT VMWare Images】 http://www.selinux.gr.jp/LIDS-JP/atmarkit.html |
lidsconfコマンドと設定ファイルとの関係
LIDSでは、/etc/lids内に設定ファイルが収められており、これらの設定ファイルを使ってアクセス制御を行っています。
ステートごとにlids.XXX.conf、lids.XXX.capファイルが用意されています。lids.XXX.confファイルには、それぞれのステートでのファイルに関するACLとプロセス別に付加したケーパビリティの情報が格納されています。lids.XXX.capファイルには、それぞれのステートでのケーパビリティバウンディングセットが格納されています。
また、全体(Global)でのACLやプロセス別のケーパビリティが格納されているlids.confファイルと、Globalのケーパビリティバウンディングセットが格納されているlids.capファイルも用意されています。
lidsconfコマンドとconfファイルの対応
lidsconfコマンドを用いて各ステートや全体でのACLを編集すると、lids.XXX.confファイルやlids.confファイルに逐次ACLなどの設定が追加されていきます。
例えば、
# lidsconf -A -s XXX -o YYY -j READONLY |
というコマンドでGlobal ACLを編集すると、lids.confファイルに新たに設定行が加わります。また、
# lidsconf -A BOOT -s XXX -o YYY -j READONLY |
とステートを指定すると、lids.boot.confファイルに新たに設定行が加わります。
例として、lids.confファイルを見てみましょう。
# # This file is auto generated by lidsconf # Please do not modify this file by hand # 242558:769:/usr/sbin/apache:1:0:32693:769:/usr/lib/apache/1.3/mod_log_config.so: 0:0::1:0:96387:769:/tmp:0-0 242558:769:/usr/sbin/apache:16:0:80-80,443-443:10:CAP_NET_BIND_SERVICE:0-0 |
ACLの場合の基本的なフォーマットは、
[Subjectのinode番号]:[Subjectのデバイス番号]:[Subjectのプログラム]:[権限]:[継承レベル]:[Objectのinode番号]:[Objectのデバイス番号]:[Objectのプログラム]:0-0 |
となります。例えば5行目は、
# lidsconf -A -s /usr/sbin/apache -o /usr/lib/apache/1.3/mod_log_config.so -j READONLY |
とGlobalで設定した際にlids.confファイルに追加されるものです。この行は、先ほどのフォーマットに従うと、「Subjectのinode番号」は242558、「Subjectのデバイス番号」は769、「Subjectのプログラム」は/usr/sbin/apache、「権限」は1、「継承レベル」は0、「Objectのinode番号」は32693、「Objectのデバイス番号」は769、「Objectのプログラム」は/usr/lib/apache/1.3/mod_log_config.soとなります。
inode番号はlsコマンドの「i」オプションで見ることができます。Subject(/usr/sbin/apache)のinode番号は、
# ls -li /usr/sbin/apache 242558 -rwxr-xr-x1 root root 284812 2005-09-06 22:13 /usr/sbin/apache |
で242558です。Object(/usr/lib/apache/1.3/mod_log_config.so)のinode番号は、
# ls -li /usr/lib/apache/1.3/mod_log_config.so 32693 -rw-r--r--1 root root 14412 2005-09-06 22:13 /usr/lib/apache/1.3/mod_log_config.so |
で32693となっています。
デバイス番号は、メジャー番号とマイナー番号により決定されます。デバイス番号769というものは、「769=00000011 00000001」ですので、メジャー番号が「3」、マイナー番号が「1」になります。/devディレクトリ以下を見てみると、
lids:~# ls -l /dev/hda1 brw-rw----1 root disk 3, 1 2005-02-26 15:38 /dev/hda1 |
となっているため、このデバイス番号は/dev/hda1を表しているということが分かります。
権限は数字がそれぞれ、
0(DENY)
1(READONLY)
3(APPEND)
7(WRITE)
に対応しています。「1」の場合には「READONLY」になります。
継承レベルは、次回以降に具体的な例を示して説明しますが、「親プロセスと子プロセスのプログラムが異なる場合にACL/ケーパビリティを何世代まで継承させるか」という数字が入ります。
通常httpdやsmbdなど子プロセスが親プロセスと同じプログラムの場合には親プロセスと同じACL/ケーパビリティを継承しますが、initから別のプログラムを起動したり、起動スクリプトからプログラムを起動したりする場合には、親プロセスと子プロセスのプログラムが異なる場合があります。その際に、親プロセスのACL/ケーパビリティを子プロセスに継承させることができます。
図1 継承レベル |
このように、Subjectが今後何らかの子となるプログラムを起動した際に、その継承を子(継承レベル1)まで許すのか、孫(継承レベル2)まで許すのかなどの数字が入ります。特定のプログラムのACLを、そのプログラムがexecした異なるプログラムに継承させることはあまりありませんから、通常、継承レベルは「0」となります。
次に、6行目を見てみましょう。この行は、
# lidsconf -A -0 /tmp -j READONLY |
とGlobalで設定した際にlids.confファイルに追加されるものです。このように、Subjectを指定しない(ディレクトリに対するデフォルトのACL)場合には、Subjectのinode番号、デバイス番号にそれぞれ0が入ります。Subjectのプログラムの部分もnullが入ります。
最後に7行目を見てみましょう。この行はACLではなく、プログラム別にケーパビリティを与えた際に追加される行です。この例では、
# lidsconf -A -s /usr/sbin/apache -o CAP_NET_BIND_SERVICE 80,443 -j GRANT |
とGlobalで設定した際にlids.confファイルに追加されるものになっています。
ケーパビリティの場合、フォーマットは、
[Subjectのinode番号]:[Subjectのデバイス番号]:[Subjectのプログラム]:16:[継承レベル]:[ポート番号]:[ケーパビリティの番号]:[ケーパビリティ名]:0-0 |
となります。
ポート番号は、CAP_NET_BIND_SERVICEとCAP_NET_BROADCASTの2つのケーパビリティの場合にのみ指定します。
範囲を指定する場合には「-」、列記する場合には「,」を使用します。例えば21番から25番までを指定する場合には「21-25」とし、21、25、80番を指定する場合には「21, 25, 80」とします。単独のポート番号を指定する場合には「21-21」と範囲の上下が等しい形で指定します(実際には、lidsconfコマンドでは80番だけを指定する際に「80-80」とする必要はありません。設定ファイルのフォーマットに変換される際に、自動的に「80-80」という形に変換されます)。
ケーパビリティ番号は、第3回で説明したLinuxケーパビリティのビット列の第何ビットにそのケーパビリティが当たるかを示した数字になります。これは、「lidsadm -V」コマンドや、lids.XXX.capコマンドで確認できます。
1/2
|
Index | |
lidstoolsを使ってACLを設定する | |
Page1 lidsconfコマンドと設定ファイルとの関係 lidsconfコマンドとconfファイルの対応 |
|
Page2 LIDSとinode情報の関係 lids.XXX.capファイルについて Globalと各ステートの設定の関係 ACLの優先順位 ケーパビリティバウンディングセットの優先順位 |
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)対策の観点から考える。
|
|