0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS の EC2 上で動作する Moodle の SELinux を有効にする

Last updated at Posted at 2020-05-31

Moodle サーバの SELinux を有効にしてみました。

ちなみに、moodledata を AWS の EFS に置いています。パスは、/mnt/nfs/html/moodledata です。

Moodle の web 画面が以下となります。

Fatal error: $CFG->dataroot is not writable, admin has to fix directory permissions! Exiting. 

次のコマンドを実行した。

現在の boolean を確認した。

# getsebool -a | grep nfs | grep httpd
httpd_use_nfs --> off

httpd が nfs をつかえるようにした。

# setsebool -P httpd_use_nfs on

(参考)
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/sect-managing_confined_services-the_apache_http_server-configuration_examples

再起動すると、moodledata へのアクセスは解消されたようだが、データベースへのアクセスができないというエラーになっていた。

以下のコマンドを実行した。

# setsebool -P httpd_can_network_connect_db 1

(参考)
https://serverfault.com/questions/240015/how-do-i-allow-mysql-connections-through-selinux

webアクセスで確認したら、まだエラーが取れていない。audit.log を確認すると、以下のようになっていた。

# less /var/log/audit/audit.log | grep denied

type=AVC msg=audit(1590352121.329:94): avc:  denied  { name_connect } for  pid=2318 comm="php-fpm" dest=3306 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket permissive=0

(参考)
https://dev.classmethod.jp/articles/redhat-selinx-might-block-network-connection-to-servers-from-apache-php/

再起動して web アクセスすると、以下の表示になっていた。

Invalid permissions detected when trying to create a directory. Turn debugging on for further details.

audit.log を確認すると、以下のエラーになっていた。

type=AVC msg=audit(1590352587.167:90): avc: denied { write } for pid=2347 comm="php-fpm" name="localcachedir" dev="nvme0n1p1" ino=239410 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=dir permissive=0

次のコマンドを実行した。

# setsebool -P httpd_can_network_connect 1

エラーが出なくなった。

httpd_can_network_connect_db はいらなかったかな。

(参考情報)
nfs に dataroot が無い場合、要すれば、よくある構築の一例の場合の参考例です。

semanage コマンドが入っていない場合、file context は手動で設定できる。

(一例)

# vim /etc/selinux/targeted/contexts/files/file_contexts.local

/var/www/html/moodle(/.*)?   system_u:object_r:httpd_sys_rw_content_t:s0
/var/www/html/moodledata(/.*)?   system_u:object_r:httpd_sys_rw_content_t:s0

# restorecon -R -v /var/www/html/moodledata

再起動して確認した。

# ls -laZ /var/www/html/moodledata

以下のラベルがついて、エラーもなくなったようだ。

httpd_sys_rw_content_t

上記は、参考情報で、いつもの場合です。

今回は、moodledata のバスが /mnt/nfs/html/moodledata なので、boolean だけで設定できた。
結局、以下を実行した。

# setsebool -P httpd_can_network_connect 1
# setsebool -P httpd_use_nfs on

ちなみに、semanage は以下の方法でインストールできます。

# yum -y install policycoreutils-python

つづき
AWS の EC2 上で動作する Moodle の SELinux を有効にする(その2)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?