3.3. Boolean
SELinux は実行するサービスに必要な最小限レベルのアクセスに基づいています。サービスの実行手段は複数あるため、サービスをどのように実行するのかを SELinux に指示する必要があります。 これを行なうため、 Boolean を使用します。 Boolean を使用すると、 SELinux ポリシーの記述方法などの知識が全くなくてもランタイム時の SELinux ポリシーの一部変更を行なうことができます。 SELinux ポリシーの再読み込みや再コンパイルを行なうことなく、サービスによる NFS ファイルシステムへのアクセスを許可するなどの変更を行なうことができるようになります。
Boolean の状態を変更するには、
setsebool コマンドを使用します。 たとえば、 allow_httpd_anon_write Boolean をオンにする場合は次のコマンドを root ユーザーで実行します。
# setsebool -P allow_httpd_anon_write on
同じ例を使って Boolean をオフにする場合は、 コマンドの
on を off にします。 以下にそのコマンドを示します。
# setsebool -P allow_httpd_anon_write off
注記
再起動後、
setsebool による変更を維持したくない場合は -P オプションを使用しないでください。
httpd の動作方法を指定する一般的な Boolean について以下に説明します。
allow_httpd_anon_write- この Boolean を無効にした場合、
httpdによるpublic_content_rw_tタイプのラベルが付いたファイルへのアクセスを読み取り専用に限定します。有効にすると、パブリックファイル転送サービス用のファイルを含むパブリックディレクトリなどpublic_content_rw_tタイプのラベルが付いたファイルへの書き込みを許可するようになります。 allow_httpd_mod_auth_ntlm_winbind- この Boolean を有効にすると、
httpdでmod_auth_ntlm_winbindモジュールを介した NTLM および Winbind 認証メカニズムへのアクセスが許可されます。 allow_httpd_mod_auth_pam- この Boolean を有効にすると、
httpdでmod_auth_pamモジュールを介した PAM 認証メカニズムへのアクセスが許可されます。 allow_httpd_sys_script_anon_write- パブリックファイル転送サービスで使用されるような、
public_content_rw_tタイプのラベルが付いたファイルへの書き込みアクセスを HTTP スクリプトに許可するかどうかを指定する Boolean です。 httpd_builtin_scriptinghttpdスクリプト機能へのアクセスを定義する Boolean です。 PHP コンテンツの場合、 この Boolean の有効化が必要とされることが多くあります。httpd_can_network_connect- この Boolean を無効にすると、 HTTP スクリプトやモジュールによるネットワークやリモートポートへの接続の開始が阻止されます。 接続の開始を許可する場合は Boolean をオンにします。
httpd_can_network_connect_db- この Boolean を無効にすると、 HTTP スクリプトやモジュールによるデータベースサーバーへの接続の開始が阻止されます。 接続の開始を許可する場合は Boolean をオンにします。
httpd_can_network_relayhttpdをフォワードプロキシまたはリバースプロキシとして使用する場合、 この Boolean をオンにします。httpd_can_sendmail- この Boolean を無効にすると、 HTTP モジュールによるメール送信が阻止されます。
httpdに脆弱性が見つかった場合にスパム攻撃を阻止することができます。 HTTP モジュールにメールの送信を許可する場合は、 この Boolean をオンにします。 httpd_dbus_avahi- この Boolean をオフにすると、
httpdによるD-Bus経由のavahiサービスへのアクセスが拒否されます。 このアクセスを許可する場合は、 この Boolean をオンにします。 httpd_enable_cgi- この Boolean を無効にすると、
httpdによる CGI スクリプトの実行が阻止されます。httpdに CGI スクリプトの実行を許可する場合は、 この Boolean をオンにします (CGI スクリプトにはhttpd_sys_script_exec_tタイプのラベルを付けておく必要があります)。 httpd_enable_ftp_server- この Boolean をオンにすると、
httpdが FTP ポートでリッスンできるようになるため、 FTPサーバーとして動作できるようになります。 httpd_enable_homedirs- この Boolean を無効にすると、
httpdによるユーザーのホームディレクトリへのアクセスが阻止されます。 ユーザーのホームディレクトリ (/home/*/内のコンテンツ) へのアクセスを許可する場合は、 この Boolean をオンにします。 httpd_execmem- この Boolean を有効にすると、 実行可能かつ書き込み可能なメモリーアドレスを必要とするプログラムの実行を
httpdに許可します。 バッファのオーバーフローに対する保護が低下するため、 安全上、 この Boolean の有効化はお勧めできません。 ただし、 特定のモジュールやアプリケーションではこの特権を必要とするものがあります (Java や Mono アプリケーションなど)。 httpd_ssi_exec- Web ページ内の SSI (server side include) エレメントを実行可能にするかどうかを指定する Boolean です。
httpd_tty_commhttpdによる制御ターミナルへのアクセスを許可するかどうかを指定する Boolean です。 通常、 このアクセスは必要とされませんが、 SSL 証明書ファイルを設定する場合などに、 パスワードのプロンプトを表示させ処理するためターミナルへのアクセスが必要になります。httpd_unified- この Boolean を有効にすると、
httpd_tに対してhttpdの全タイプへの完全アクセスが許可されます (つまり、 sys_content_t の実行、 読み込み、 書き込み)。 無効にすると、 読み取り専用 web コンテンツ、 書き込み可能 web コンテンツ、 実行可能 web コンテンツ間に分離が施行されます。 この Boolean を無効にすることで安全性は高くなりますが、 各ファイルに持たせるアクセス権に応じてスクリプトや他の web コンテンツを別々にラベル付けしなければならない管理作業コストが生じることになります。 httpd_use_cifs- Samba でマウントされるファイルシステムなど、
cifs_tタイプのラベルが付けられる CIFS ファイルシステム上にあるファイル群へのアクセスをhttpdに許可する場合は、 この Boolean をオンにします。 httpd_use_nfs- NFS でマウントされるファイルシステムなど、
nfs_tタイプのラベルが付けられる NFS ファイルシステム上にあるファイル群へのアクセスをhttpdに許可する場合は、 この Boolean をオンにします。