web-dev-qa-db-ja.com

監査は何もすることを言いません、それでもpuppetはSELinux強制で実行されません

SELinuxをenforcingに設定してパペットマスターを実行することにしました。私がそれを寛容にすれば、それはうまくいきます。

私はRHEL7を使用しており、systemd、Apache2、passenger 4、およびpuppet3を使用しています。

監査ログとaudit2allowを使用して、監査ログをカバーするsemoduleを作成するために、いくつかのパスを実行しました。 (そして、ApacheユーザーとしてApacheモジュールから実行されている乗客が、パペットマスターコードを実行するという大きな混乱です。)

これはまったく新しい構成であるため、パペットマニフェストはデフォルトの空のノードであり、何もする必要はありません。

リモートマシンで「puppetagent-t」を実行すると、setenforce0で成功します。監査ログはかなり空です。 (audit2allowは「何もすることはありません」と報告します。)

しかし、setenforce 1をオンにすると、次のようになります。

Aug 20 23:14:28 puppet002 puppet-master[1544]: Permission denied - /etc/puppet/auth.conf
Aug 20 23:14:29 puppet002 puppet-master[1544]: Permission denied - /etc/puppet/manifests/site.pp on node agentserver.example.com

/ etc/puppet/*の所有権を変更しようとしましたが、seコンテキストは正常に見えます。

[root@puppet002 log]# cd /etc/puppet
[root@puppet002 puppet]# ls -lZ
-rw-r--r--. Apache apache system_u:object_r:puppet_etc_t:s0 auth.conf
-rw-r--r--. Apache apache system_u:object_r:puppet_etc_t:s0 fileserver.conf
drwxr-xr-x. Apache apache system_u:object_r:puppet_etc_t:s0 manifests
drwxr-xr-x. Apache apache system_u:object_r:puppet_etc_t:s0 modules
-rw-r--r--. Apache apache system_u:object_r:puppet_etc_t:s0 puppet.conf

トラブルシューティングの提案はありますか?

[編集]:追加情報、「dontaudit」をオフにして演習を繰り返すという提案に続いて、エラーメッセージが変更されました。私の$ ssldirは/ var/lib/puppet/sslで、$ logdirは/ var/log/puppetです。これにより、これらのエラーが興味深いものになります。

puppet-master [3210]:許可が拒否されました-/ etc/puppet/ssl

puppet-master [3210]:(/ File [/ etc/puppet/ssl]/sure)不在からディレクトリへの変更に失敗しました:ensureで「ディレクトリ」を設定できませんでした:アクセスが拒否されました-/ etc/puppet/ssl

puppet-master [3210]:実行の準備ができませんでした:初期化中に3つの失敗が発生しました:ファイル[/ etc/puppet/ssl]:不在からディレクトリへの変更に失敗しました:「ディレクトリ」を確実に設定できませんでした:アクセスが拒否されました-/ etc/puppet/ssl;ファイル[/ etc/puppet/manifests]:不在からディレクトリへの変更に失敗しました:「ディレクトリ」を確実に設定できませんでした:アクセスが拒否されました-/ etc/puppet/manifests;ファイル[/ var/lib/puppet/log]:0755から0750への変更に失敗しました:/ var/lib/puppet/logでモード755を設定できませんでした:アクセスが拒否されました-/ var/lib/puppet/log

もちろんすべての作品はPermissiveです。 :(

1
Mojo

問題をさらに深く理解するために、パペットマスターにsetroubleshoot-serverパッケージをインストールしました。マシンを許容モードにするのではなく、強制モードのままにしました。次に、監査ログをシーラートにパイプして、次の宝石を入手しました。

found 3 alerts in /var/log/audit/audit.log
--------------------------------------------------------------------------------

SELinux is preventing /usr/bin/Ruby from search access on the directory .

*****  Plugin catchall (100. confidence) suggests   **************************

If you believe that Ruby should be allowed search access on the  directory by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# grep Ruby /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp

そして実際、これにより、パペットマスターの実行を強制モードで成功させることができます。

私の理論では、強制モードでは、Puppetマスターは、許可モードでは検出されない、追加のアクセスアラートをトリガーする別のコードパスにトリップされます。

1
Mojo