SELinuxセキュリティポリシーを設定する

UNIXディストリビューションにSELinuxが搭載されている場合(Security-Enhanced UNIX)、Dr.Web for Linuxコンポーネントのインストール後にそれらを正常に動作させるには(スキャンエンジンの動作など)、SELinuxセキュリティポリシーを設定する必要がある場合があります。

1.ユニバーサルパッケージを使用したインストールの問題

SELinuxが有効になっている場合、Dr.Web for Linuxコンポーネントを動作させる drweb ユーザーの作成がブロックされることがあり、インストールファイル.run)からのインストールは失敗する場合があります。

drweb ユーザーを作成できなかったためにファイル(.run)からのDr.Web for Linuxのインストールに失敗した場合は、getenforce コマンドで SELinux の動作モードをチェックしてください。コマンドは現在のスキャンモードを出力します。

Permissive - 保護は有効ですが、許可方式が使用されています。セキュリティポリシーに違反する動作は拒否されませんが、動作に関する情報はログに記録されます。

Enforced - 保護は有効で、制御方式が使用されています。セキュリティポリシーに違反する動作は拒否され、動作に関する情報はログに記録されます。

Disabled - SELinuxはインストールされていますが、有効になっていません。

SELinuxが Enforced モードで動作している場合は Permissive モードに変更してください。その際、以下のコマンドを使用します。

# setenforce 0

このコマンドはSELinuxの Permissive モードを一時的に(次の再起動まで)有効にします。

setenforce コマンドで有効にした動作モードに関係なく、OSの再起動後、SELinuxは設定内で指定された動作モードに戻りますので注意してください(SELinuxの設定ファイルは通常、/etc/selinux ディレクトリにあります)。

Dr.Web for Linuxが正常にインストールされた後、製品を起動させる前に Enforced モードを再度有効にしてください。その際、以下のコマンドを使用します。

# setenforce 1

2. Dr.Web for Linuxの動作に関する問題

SELinuxが有効になっている場合に、特定のDr.Web for Linuxコンポーネント(ScannerやSpIDer Guardによって使用される drweb-sedrweb-filecheck など)を起動できないことがあります。その場合、オブジェクトのスキャンとファイルシステムのモニタリングを使用できません。補助モジュールが起動しない場合、Dr.Web for Linuxのメインウィンドウにエラー 119 および 120 のメッセージが表示され、それらエラーに関する情報が syslog によって記録されます(通常、ログは /var/log/ ディレクトリに置かれています)。

SELinuxセキュリティシステムによってアクセスが拒否された場合、そのようなイベントのログが記録されます。一般的に、システムで audit デーモンが使用されている場合、audit(監査)に関するログが /var/log/audit/audit.log ファイルに保存されます。それ以外の場合、ブロックされた動作に関するメッセージが一般的なログファイル(/var/log/messages または /var/log/syslog)に保存されます。

SELinuxにブロックされて補助モジュールが動作しない場合は、それらに対して特別なセキュリティポリシーを設定します。

一部のUNIXディストリビューションには以下のユーティリティが備わっていませんのでご注意ください。その場合、ユーティリティの追加パッケージをインストールする必要がある場合があります。

SELinuxセキュリティポリシーを設定する

1.SELinuxのポリシーソースコードの新しいファイルを作成します(.te ファイル)。このファイルは記載されているポリシーモジュールに関連した制限を規定するものです。このポリシーソースコードは以下のいずれかの方法で作成できます。

1)audit2allow ユーティリティを使用して - 最もシンプルな方法です。ユーティリティはシステムログファイル内のアクセス拒否に関するメッセージからpermissiveルールを生成します。自動でメッセージを検索するよう設定するか、手動でログファイルへのパスを指定できます。

この方法は、Dr.Web for LinuxのコンポーネントがSELinuxセキュリティポリシーに違反していて、それらのイベントが監査ログファイルに記録されている場合のみ使用できます。そうでない場合、そのようなイベントが起こるのを待つか、policygentool ユーティリティを使用して強制的にpermissiveポリシーを作成(下記参照)してください。

audit2allow ユーティリティは policycoreutils-python パッケージ、policycoreutils-devel パッケージ(バージョンによってRedHat Enterprise Linux、CentOS、Fedora)、または python-sepolgen パッケージ(Debian、Ubuntu) のいずれかにあります。

audit2allow の使用例:

# grep drweb-se.real /var/log/audit/audit.log | audit2allow -M drweb-se

この例では、drweb-se モジュールに対するアクセス拒否メッセージを見つけるために audit2allow ユーティリティが audit.log ファイル内で検索を実行します。

ポリシーソースファイル drweb-se.te と、インストール可能な drweb-se.pp ポリシーモジュールの2つのファイルが作成されます。

システム監査ログ内でセキュリティ違反イベントが見つからなかった場合、ユーティリティはエラーメッセージを返します。

ほとんどの場合、audit2allow ユーティリティによって作成されたポリシーファイルを変更する必要はありません。したがって、手順4drweb-se.pp ポリシーモジュールのインストールに進むことを推奨します。audit2allow ユーティリティは semodule コマンドの呼び出しを出力します。出力をコマンドラインにコピーして実行すると 、手順4 が完了します。Dr.Web for Linuxコンポーネント用に自動的に生成されたセキュリティポリシーを変更する場合のみ、手順2 に進みます。

2)policygentool ユーティリティを使用する - この場合、設定するモジュール動作の名前と、実行ファイルへのフルパスを指定してください。

Red Hat Enterprise LinuxとCentOS向けの selinux-policy パッケージに含まれている policygentool ユーティリティは正常に機能しない場合があります。その場合は audit2allow ユーティリティを使用してください。

policygentool を使用したポリシー作成の例:

drweb-se

# policygentool drweb-se /opt/drweb.com/bin/drweb-se.real

drweb-filecheck

# policygentool drweb-filecheck /opt/drweb.com/bin/drweb-filecheck.real

いくつかの共通ドメイン特性を指定するよう促すプロンプトが表示されます。その後、ポリシーを決定する3つのファイル(<module_name>.te、<module_name>.fc<module_name>.if

が各モジュールについて作成されます。

2.必要に応じ、生成されたポリシーソースファイル <module_name>.te を編集し、その後、checkmodule ユーティリティを使用して、ローカルポリシーのこのソースファイルをバイナリ形式に変換(.mod ファイル)します。

コマンドを正常に実行するには、システムに checkpolicy パッケージがインストールされている必要があります。

使用例:

# checkmodule -M -m -o drweb-se.mod drweb-se.te

3.semodule_package ユーティリティを使用して、インストール用のポリシーモジュールを作成します(.pp ファイル)。

例:

# semodule_package -o drweb-se.pp -m drweb-se.mod

4.作成されたポリシーモジュールをインストールするには、semodule ユーティリティを使用します。

例:

# semodule -i drweb-se.pp

SELinuxの動作と設定に関する詳細は、お使いのUNIXディストリビューションのマニュアルを参照してください。