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です。 :(
問題をさらに深く理解するために、パペットマスターに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マスターは、許可モードでは検出されない、追加のアクセスアラートをトリガーする別のコードパスにトリップされます。