Security-Enhanced Linux with MariaDB

Security-Enhanced Linux(SELinux)は、システム上の多くのリソースに対して必須アクセス制御(MAC)システムを構成するためのフレームワークを提供するLinuxカー これは、RHEL、CentOS、Fedora、および他の同様のLinuxディストリビューションを含む一部のLinuxディストリビューションでデフォルトで有効になっています。 SELinuxは、これらのリソースにアクセスするように設定されていない限り、プログラムがファイル、ディレクトリ、またはポートにアクセスできないようにします。SELinuxが有効になっているかどうかを確認するには、getenforceコマンドを実行します。 たとえば、次のようにします。

getenforce

Mysqldを一時的にPermissiveモードにする

SELinuxが原因と思われる問題をトラブルシューティングするときは、mysqld_tを一時的にpermissiveモードにするのに役立ちます。 これは、semanageコマンドを実行することによって行うことができます。 例えば:それが問題を解決した場合、現在のSELinuxポリシーが原因であることを意味します。 MariaDBのSELinuxポリシーまたはラベルを調整する必要があります。

サーバーのSELinuxポリシーのビルドとロード

MariaDBサーバーには、デフォルトでビルドまたはロードされないSELinuxポリシーが付属しています。 多くのシステムでは、ポリシーは/usr/share/mysql/policy/selinux/mariadb-server.fcにインストールされます。 これをビルドしてロードするには、次のように実行します。

ファイルコンテキストの設定

SELinuxは、そのファイルにアクセスできるユーザーを決定する方法としてファイルコンテキストを使用します。

ファイルコンテキストは、semanage fcontextrestoreconコマンドで管理されます。

多くのシステムでは、semanagepolicycoreutils-pythonrestoreconpolicycoreutilsパッケージによってインストールされます。 これらは次のコマンドでインストールできます。

sudo yum install policycoreutils policycoreutils-python

ファイルまたはディレクトリの現在のコンテキストは、ls--context--scontextオプションで実行することで確認できます。

データディレクトリのファイルコンテキストの設定

datadirにカスタムディレクトリを使用する場合は、そのディレクトリのフ MariaDBデータファイルのSELinuxファイルコンテキストはmysqld_db_tdatadirsemanage fcontextrestorecon--context--scontextlsを実行 例えば:

ls --directory --scontext /mariadb/data

ログファイルのファイルコンテキストの設定

ログファイルにカスタムディレクトリを使用する場合は、そのディレ MariaDBログファイルのSELinuxファイルコンテキストはmysqld_log_tsemanage fcontextrestoreconコマンドを実行 たとえば、次のようにします。

sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"sudo restorecon -Rv /var/log/mysql

現在のファイルコンテキストを確認したい場合は、ls--context--scontextオプションで実行することで行うことができます。 例えば:

ls --directory --scontext /var/log/mysql

オプションファイルのファイルコンテキストの設定

オプションファイルにカスタムディレクトリを使用する場合は、その MariaDBオプションファイルのSELinuxファイルコンテキストはmysqld_etc_tsemanage fcontextrestoreconコマンドを実行 たとえば、次のようにします。

sudo semanage fcontext -a -t mysqld_etc_t "/etc/mariadb(/.*)?"sudo restorecon -Rv /etc/mariadb

現在のファイルコンテキストをチェックしたい場合は、ls--context--scontextオプションで実行します。 例えば:p>

ls --directory --scontext /etc/mariadb

Tmpfsファイルコンテキストへのアクセスを許可する

tmpdirtmpfstmpfstmpfstmpfstmpfstmpfstmpfstmpdir/run/shmの場合、mysqld_tがいくつかのtmpfs関連のファイルコンテキストにアクセスできるようにする必要がある場合があります。 例:

Selinuxの問題のトラブルシューティング

次のような場合には、SELinux関連の問題のトラブルシューティングが必要になる場合があります。

  • MariaDBはデフォルト以外のポートを使用しています。
  • MariaDBは、一部のファイル(datadir、ログファイル、オプションファイルなど)からの読み取りまたは書き込みを行っています。)デフォルト以外のパスにあります。
  • MariaDBは、既定のインストールでは使用されないリソースへのアクセスを必要とするプラグインを使用しています。

ファイルシステム権限エラー

一部のMariaDBディレクトリのファイルシステム権限は正常に見えますが、MariaDBエラーログに次のようなエラーが残ってい:

これに似たエントリがある場合は、ほとんどの場合、ファイルまたはディレクトリのファイルコンテキストを調整する必要があります。 その方法の詳細については、「ファイルコンテキストの設定」を参照してください。

別のポート上のSELinuxとMariaDB

TCPポートとUDPポートもバインドの許可が有効になっています。 別のポート、または一部のGaleraポートを使用している場合は、これらのポートを使用できるようにSELinuxを設定します。

sudo semanage port -a -t mysqld_port_t -p tcp 3307 

audit2allowを使用したSELinuxポリシーの生成

場合によっては、MariaDBシステムに非標準のポリシーが必要になることがあります。 これらのポリシーは、audit2allowユーティリティを使用してSELinux監査ログから作成することができます。 semanagesemoduleユーティリティも必要になります。

多くのシステムでは、audit2allowsemanagepolicycoreutils-pythonsemodulepolicycoreutilsによってインストールされます。パッケージ。 これらは次のコマンドでインストールできます:

sudo yum install policycoreutils policycoreutils-python

次のプロセスを使用して、監査ログからポリシーを生成できます。

  • ポリシーからdontauditsを削除します。
sudo semodule -DB
  • 一時的にmysqld_tパーミッシブモードにします。 たとえば、次のようにします。
sudo semanage permissive -a mysqld_t
  • MariaDBを開始します。
  • SELinuxエラーの原因となっていたものは何でもしてください。生成された監査ログを使用してポリシーを作成します。
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
  • Pullmysqld_tpermissiveモードから取り出します。 例えば:
sudo semanage permissive -d mysqld_t
  • ポリシーのdontauditsを復元します。
sudo setmodule -B

MariaDBが起動してもSELinuxが正常に機能しない場合は、同じ手順を使用できます。 たとえば、SELinuxはPAMプラグインがユーザーを認証するのを防ぐことができます。 解決策は同じです-監査を有効にし、permissiveに切り替え、SELinuxが許可しなかったことを実行し、監査ログからポリシーを作成します。

必要なSELinux権限を発見したら、すべてのユーザーが作業の恩恵を受けることができるように、オペレーティングシステムのバグ追跡に必要な権限を報告してください(例:Red Hat Bugzillahttps://bugzilla.redhat.com/)。

コメントを残す

メールアドレスが公開されることはありません。