Menu Close
Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
3.2. 制限のないプロセス
制限のないプロセスは、制限のないドメインで実行されます。たとえば、unconfined
_service_t ドメインで実行される init
によって実行される制限のないサービス、kernel_t
ドメインで実行されているカーネルによって実行される制限されていないサービス 、
制限のない Linux ユーザーが実行し、unconfined _t ドメインで実行しているなどの制限のない
サービスなどです。制限のないプロセスの場合、SELinux ポリシールールが適用されますが、制限のないドメインで実行されているプロセスを許可するポリシールールが存在します。制限のないドメインで実行されているプロセスは、DAC ルールのみを使用するようにフォールバックします。制限のないプロセスが危険にさらされても、SELinux は、攻撃者がシステムリソースやデータにアクセスできなくなりますが、当然、DAC ルールは引き続き使用されます。SELinux は、DAC ルールに関するセキュリティー強化で、これらを置き換えません。
SELinux が有効で、システムが以下の例を実行する準備が整っていることを確認するには、手順3.1「SELinux ステータスの確認方法」 で説明されている 「制限のあるプロセス」 を実行します。
以下の例は、制限なしで稼働している場合に Samba が使用する Apache HTTP Server(
httpd
)が Samba が使用するデータにアクセスする方法を示しています。Red Hat Enterprise Linux では、httpd プロセスは
、デフォルトで制限のある httpd_t
ドメインで実行されることに注意してください。これは、実稼働環境で使用すべきではありません。httpd、wget、dbus、および audit パッケージがインストールされ、SELinux ターゲットポリシーが使用され、SELinux が Enforcing モードで実行されていることを前提としています。
手順3.3 強制されていないプロセスの例
- chcon コマンドはファイルの再ラベルです。ただし、このようなラベルの変更は、ファイルシステムの再ラベル付け時に保持されません。ファイルシステムの再ラベルを維持する永続的な変更には、
semanage
ユーティリティーを使用します。これについては、後で説明します。root ユーザーとして以下のコマンドを入力し、タイプを Samba で使用されるタイプに変更します。~]#
chcon -t samba_share_t /var/www/html/testfile変更を表示します。~]$
ls -Z /var/www/html/testfile -rw-r--r-- root root unconfined_u:object_r:samba_share_t:s0 /var/www/html/testfile - 以下のコマンドを入力して、httpd
プロセスが実行され
ていないことを確認します。~]$
systemctl status httpd.service httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled) Active: inactive (dead)出力が異なる場合は、root で以下のコマンドを入力してhttpd
プロセスを停止します。~]#
systemctl stop httpd.service httpd
プロセスを制限なしで実行するには、root で以下のコマンドを実行して、/usr/sbin/httpd
ファイルのタイプを制限のあるドメインに移行しないタイプに変更します。~]#
chcon -t bin_t /usr/sbin/httpd/usr/sbin/httpd
にbin_t
タイプのラベルが付けられていることを確認します。~]$
ls -Z /usr/sbin/httpd -rwxr-xr-x. root root system_u:object_r:bin_t:s0 /usr/sbin/httpd- root で
httpd
プロセスを起動して、正常に起動したことを確認します。~]#
systemctl start httpd.service~]#
systemctl status httpd.service httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled) Active: active (running) since Thu 2013-08-15 11:17:01 CEST; 5s ago - 以下のコマンドを入力して、
unconfined_service_t
ドメインで実行しているhttpd
を表示します。~]$
ps -eZ | grep httpd system_u:system_r:unconfined_service_t:s0 11884 ? 00:00:00 httpd system_u:system_r:unconfined_service_t:s0 11885 ? 00:00:00 httpd system_u:system_r:unconfined_service_t:s0 11886 ? 00:00:00 httpd system_u:system_r:unconfined_service_t:s0 11887 ? 00:00:00 httpd system_u:system_r:unconfined_service_t:s0 11888 ? 00:00:00 httpd system_u:system_r:unconfined_service_t:s0 11889 ? 00:00:00 httpd - Linux ユーザーに書き込みアクセスのあるディレクトリーに移動し、以下のコマンドを入力します。デフォルト設定が変更されない限り、このコマンドは成功します。
~]$
wget http://localhost/testfile --2009-05-07 01:41:10-- http://localhost/testfile Resolving localhost... 127.0.0.1 Connecting to localhost|127.0.0.1|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 0 [text/plain] Saving to: `testfile' [ <=> ]--.-K/s in 0s 2009-05-07 01:41:10 (0.00 B/s) - `testfile' saved [0/0]httpd
プロセスにはsamba_share_t
タイプのラベルが付いたファイルにアクセスできませんが、httpdは
制限のないunconfined_service_t
ドメインで実行され、DAC ルールの使用にフォールバックします。そのため、wget コマンドは成功します。制限のあるhttpd
_t ドメインで httpd
が実行されましたが、wget コマンドは失敗していました。 restorecon
ユーティリティーは、ファイルのデフォルト SELinux コンテキストを復元します。root で以下のコマンドを実行して、/usr/sbin/httpd
のデフォルトの SELinux コンテキストを復元します。~]#
restorecon -v /usr/sbin/httpd restorecon reset /usr/sbin/httpd context system_u:object_r:unconfined_exec_t:s0->system_u:object_r:httpd_exec_t:s0/usr/sbin/httpd
に、httpd_exec_t
タイプのラベルが付けられていることを確認します。~]$
ls -Z /usr/sbin/httpd -rwxr-xr-x root root system_u:object_r:httpd_exec_t:s0 /usr/sbin/httpd- root で次のコマンドを実行して
httpd
を再起動します。再起動したら、httpd が制限のあるhttpd
_t
ドメインで実行されていることを確認します。~]#
systemctl restart httpd.service~]$
ps -eZ | grep httpd system_u:system_r:httpd_t:s0 8883 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 8884 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 8885 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 8886 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 8887 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 8888 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 8889 ? 00:00:00 httpd - root で
testfile
を削除します。~]#
rm -i /var/www/html/testfile rm: remove regular empty file `/var/www/html/testfile'? y httpd
の実行が必要ない場合は、root で次のコマンドを実行して、httpd を停止します。
~]#
systemctl stop httpd.service
このセクションの例では、侵害された制限のあるプロセス(SELinux で保護)からデータを保護する方法と、(SELinux で保護されない)危険にさらされたプロセスから、攻撃者にアクセスしやすくなるか(SELinux による保護)を説明します。