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

GNU/LinuxディストリビューションにSELinuxSecurity-Enhanced Linux)が含まれている場合は、インストール後にDr.Web for UNIX File Serversのサービスコンポーネント(スキャンエンジンなど)を正常に動作せるために、SELinuxのセキュリティポリシーを設定することが必要になる場合があります。

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

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

drwebユーザーを作成できないためにファイルからのDr.Web for UNIX File Serversのインストールが失敗する場合は、getenforceコマンドを使用してSELinuxの動作モードを確認してください。このコマンドは、現在のスキャンモードを出力します。

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

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

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

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

# setenforce 0

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

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

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

# setenforce 1

2. Dr.Web for UNIX File Serversの動作に関する問題

SELinuxの実行中にいくつかのDr.Web for UNIX File Serversコンポーネント(drweb-sedrweb-filecheckなど)が起動できないことがあります。これにより、オブジェクトのスキャンやファイルシステムのモニタリングが不可能になります。これらのコンポーネントが起動できない場合は、syslogサービスによって管理されるシステムログ(通常このログは/var/log/ディレクトリにあります)に119および120エラーメッセージが表示されます。

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

SELinuxにブロックされているために製品のスキャンコンポーネントが機能しない場合は、コンポーネント用の特別なセキュリティポリシーを設定する必要があります。

一部のGNU/Linuxディストリビューションには、下記のユーティリティがありません。その場合は、これらのユーティリティを備えた追加パッケージのインストールが必要になる場合があります。

SELinux セキュリティポリシーを設定するには以下の手順を行ってください。

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

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

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

audit2allow ユーティリティは policycoreutils-python パッケージ、policycoreutils-devel パッケージ(RedHat Enterprise LinuxCentOSFedora、バージョンによる)、またはpython-sepolgen パッケージ(DebianUbuntu) のいずれかにあります。

audit2allow の使用例:

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

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

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

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

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

2)policygentoolユーティリティを使用する。そのためには、異なる方法で処理するコンポーネントの名前とその実行ファイルへのフルパスを指定します。

RedHat Enterprise LinuxCentOS Linux 向けの 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の動作と設定に関する詳細は、お使いのLinuxディストリビューションのマニュアルを参照してください。