Selinux php-fpm httpdとmariadbソケットの接続

Selinux php-fpm httpdとmariadbソケットの接続

重要な詳細を含む新しいメモ

私はいくつかのビルドテストを実行しましたが、結果は次のとおりです。いいですね。最新のアップデートは次のとおりです。

  • 10.5 作品
  • 10.6 なし
  • 10.7 作品
  • 10.8日
  • など。

LTSリリースなので10.6を使いたかったのですが、問題があるようです。現在、MariaDBスラックチャンネルを利用していますが、2年ほどサポートされているので、MariaDBリポジトリを10.5に戻そうとしています。私が逃した他のものはありますか? MariaDBのバージョンとプロセスを再起動する以外は何も変更しませんでした。

参照用のメモの編集

EL RepoのインストールMariaDB 10.5は「mysql-selinux」パッケージをインストールし、デフォルトのrepo(epel-release?)は必要な通信を可能にし、php-fpmはmariadbに正常に接続できます。 MariaDBストレージパッケージにこの機能がないようです。 AL 8.6システムにELリポジトリMariaDBをインストールしましたが、それを削除し、通常の操作にMariaDBリポジトリを使用しました。ここで「mysql-selinux」のソースを見つけましたが、「修正」ほど簡単ではありません。

https://github.com/devexp-db/mysql-selinux/blob/master/mysql.te

このパッケージは私の8.6システムにはインストールされていませんが、うまくいきます...


私のシステムでは、AlmaLinux 8.6でSELinuxが有効になっており、正常に動作します。私は在庫AL 8.6 Apache / httpd(私の考えでは2.4.37)とRemiリポジトリのPHPを使用しています。

https://rpms.remirepo.net/wizard/

最初は、次のガイドラインを使用してMariaDBリポジトリからMariaDB 10.4を直接インストールしました。

https://mariadb.com/resources/blog/how-to-install-mariadb-on-rhel8-centos8/

SELinuxが有効になっており、mysql.sockソケット/プロセスに接続するためにphp-fpmに対して特別にカスタマイズを実行していないようです。私は最近、MariaDBリポジトリでもMariaDB 10.6にアップグレードしましたが、すべてが通常どおり機能し続けます。ちなみに、私の「作業」検証では、ローカルソケットを介して接続するように設定されたphpMyAdminを使用しています。

私はデフォルトのApache / httpd(私の意見では2.4.51)でAlmaLinux 9 VMをインストールしました。同じ指示を使用して、同じリポジトリにMariaDB 10.6をインストールしました。 SELinuxが/var/lib/mysql/mysql.sockプロセス(unconfinsed_service_tで実行)に接続しようとしているphp-fpm(httpd_tで実行)からの要求を拒否しています。この拒否は、phpMyAdmin(php-fpmサービスで実行)への接続とその後のログインをブロックします。

time->Mon Sep 26 22:14:07 2022
type=PROCTITLE msg=audit(1664244847.002:83): proctitle=7068702D66706D3A20706F6F6C20777777
type=SYSCALL msg=audit(1664244847.002:83): arch=c000003e syscall=42 success=no exit=-13 a0=5 a1=7ffc156c46b0 a2=1b a3=557032b785a0 items=0 ppid=706 pid=738 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="php-fpm" exe="/opt/remi/php74/root/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1664244847.002:83): avc:  denied  { connectto } for  pid=738 comm="php-fpm" path="/var/lib/mysql/mysql.sock" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:unconfined_service_t:s0 tclass=unix_stream_socket permissive=0

これはAL 9インストールにのみ表示され、AL 8.6はこの拒否を報告せずに接続およびその後のログインを許可します。ファイルを確認してSELinuxコンテキストを処理しましたが、8.6と9の間で同じです。また、8.6のインストールと9の間の同じバージョン(すべてRemiのphp 7.4)を含むさまざまなphp-fpmバージョンを試しました。 apache:apacheでfpmプールを実行し、phpMyAdminユーザーの下でapacheグループを試しました。

これを追跡する方法について提案がありますか?次の戦略を使用して SELinux 拒否を「修正」することができますが、httpd が制限されていないすべてのプロセスに接続できるようにします。

module phpfpm_mariadb_socket 1.0;

require {
        type httpd_t;
        type unconfined_service_t;
        class unix_stream_socket connectto;
}

#============= httpd_t ==============
allow httpd_t unconfined_service_t:unix_stream_socket connectto;

2つの明らかな違いがあります。 Apache 2.4.37と2.4.51(および追跡できない潜在的に関連するSELinuxポリシーの変更)とEL 8.6とEL 9 SELinuxコアの変更(両方とも「最新の」利用可能なアップデートが適用されます)。 。同じユーザー名と同じ権限を使用して、8.6システムから9システムにphpMyAdminインストールをコピーしました。私はphp-fpm user:group設定がプロセスコンテキストに関連しているとは思いません。それともそうですか?

答え1

AlmaLinux 9のMariaDB 10.6でこれが発生し、@Brianによって公開されたSELinuxポリシーが機能していることを確認できます。

関連情報