SELinuxを介したMySQL接続を許可するにはどうすればよいですか?


21

セキュリティ強化のため、サーバーでSELinuxを実行したままにしておきたいと思います。
私は通常、SELinuxを無効にして、何でも動作するようにします。
SELinuxにMySQL接続を許可するように指示するにはどうすればよいですか?
ドキュメントで最も見つけたのは、mysql.comの次の行です。

Linuxで実行していて、Security-Enhanced Linux(SELinux)が有効になっている場合は、mysqldプロセスのSELinux保護が無効になっていることを確認してください。

うわー...それは本当に役に立ちます。


1
以下の情報をすべて提供してください。1. Linuxディストリビューションとバージョン、2。MySQLバージョンとインストールソース、3。拒否された接続からのAVCログエントリ、4。関連するMySQLログ(ある場合)5. getsebool -a | grep mysqlこれを再現するために行った正確な手順
hobodave

回答:


40

SELinuxを確認するには

sestatus

httpdプロセスに設定されているフラグを確認するには

getsebool -a | grep httpd

ApacheがSELinuxを介してリモートデータベースに接続できるようにするには

setsebool httpd_can_network_connect_db 1

-Pオプションを使用すると、変更が永続的になります。このオプションがないと、再起動時にブール値が0にリセットされます。

setsebool -P httpd_can_network_connect_db 1

3
127.0.0.1ループバック経由で接続する場合にも必要と思われますか?
デビンCeartas

@デビン、間違いなく。
e18r

2
ユーザーがローカルmysqlサーバーに接続できるようにする場合は、selinuxuser_mysql_connect_enabledブール値もオンにする必要があります。
アントンマコヴェツキー

setsebool -P httpd_can_network_connect 1必要な場合もあります。これはausearch -m avc -ts today | audit2why、vnix27のコメントで提案されているように実行することにより、私のログで提案されました。
サイト

2

エラーが発生しますか?どのフレーバーのLinuxを使用していますか?セキュリティコンテキストは、エラーが発生した場合に開始するのに適した場所です。ls -Zはコンテキストを提供します...しかし、あなたの質問は非常にあいまいです。


Windowsボックスから接続しています。エラーはありません...接続は拒否され、ページはタイムアウトします。selinuxをオフにすれば、すべてがうまくいくと思います。

接続はWindowsボックスから着信するため、ls -Zは、Linuxボックスにあるディレクトリにあるファイルに関する情報のみを提供します。

I上記の私の質問でmysqldプロセスのための無効SELinuxの保護に言っMySQLリファレンスを...引用...しかし、それはそれを行う方法を言っていない:(また私は方法を見つけることができます。

Linuxボックスのログには何かありますか?selinuxは、httpdがソケット接続を行うのを停止できます...

メッセージや安全なログには何もありません...あなたが念頭に置いていた特定のログはありますか?

1

どうやらselinuxの設定は簡単ではありません。あなたはここから始めたいと思うかもしれません。

setenforce 0

selinuxをpermissiveモードにします。このモードでは、許可されているものをログに記録します。再起動または

setenforce 1

ポリシーで許可されていないものはすべてブロックに戻ります。

FedoraのmySQLに関するこれらのselinuxポリシードキュメントをご覧ください。



1

このausearchコマンドは、エラーログを見つけるのに役立ちます。


1
ausearch -m avc -ts today | audit2why、コマンドは解決策を提案できる
-vnix27

1

ローカルポリシーも作成できます。

「ローカルポリシーモジュールを生成して、このアクセスを許可することができます。現在、このアクセスを許可するには、次を実行します。」

grep httpd /var/log/audit/audit.log | audit2allow -M mypol

semodule -i mypol.pp

または、実際のセッションでグローバルに有効にします。

setsebool httpd_can_network_connect_db 1

または永久:

setsebool -P httpd_can_network_connect_db 1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.