はじめに
NUC(NUC7i5BNH)を購入してからというものの、そちらのセットアップ作業や廃棄予定のPCから別のPCへのストレージの玉突き移転が必要になったり、動画のネタが大量に襲いかかってきて、その編集に追われたり、本業が急にいそがしくなったりで、このWordpressが可動しているサーバ(以下、「本サーバ」と書きます。)の(OSも含めた)インフラのメンテナンスがおろそかになっていました。
そんな中、本サーバのOSを遅ればせながらFedora 26から27にアップグレードしてみました。
アップグレード後2日ほど動かしてみた感じでは一見問題なさげに見えたのですが、ちょっと大きめの問題が出てしまったので、この記事ではそれについて書きます。
問題発覚のきっかけ。
本WebサイトにはAmazon Product Advertising API を利用した「広告ギャラリー」というページがあります(※その後、2018年11月に公開を終了しました。詳細についてはこちらをご参照ください)。
この仕様については広告ギャラリーを作ったときに書いた記事に書きましたので、ここでは詳細は省略しますが、おおむね1時間おきくらいに更新されるはずの広告が更新されていないのにFedora 27へアップデートした2日後あたりに気がつきました。
それで、本サイトのダッシュボードをよーく見てみると…
“WordPress Events and News”のカードの情報が取得できず、エラーメッセージが表示されていました(スクリーンショットは撮っていませんでした。すみません)。
広告ギャラリーだけなら?の書いたPHPのコードのバグだったかもしれませんが、Wordpressのダッシュボードで、外部のサイトとの通信時にエラーが発生しているとなると…
ピコーン!!
SELinux関連ですかね、とおおよその見当がつきました。
困ったときのaudit頼み。
SELinux関連の問題であるところまであたりがついたところで、/var/log/audit/audit.logに関連するエラーが出ていないかどうか確認してみます。すると…
のような「name_connectが拒否されています。」(超意訳)というエラーメッセージが大量に出力されていました。
問題解決の方法。
「ということは、name_connectでググれば解決策が見つかるんじゃね?」と思ったので、Google先生に聞いてみたところ、以下の記事をはじめとして関連する記事が大量にヒットしました。
スポンサーリンク
Bug 1528722 – SELinux is preventing php-fpm from ‘name_connect’ accesses on the tcp_socket port 80.
上記の記事にある通り、Fedora 27ではhttpd_can_network_connectの値がoffになっていることが原因のようですので、以下の手順で設定値の確認及び修正を行います。
- root権限で以下のコマンドを実行し、httpd_can_network_connectの設定を確認します。
[root@pandanote.info iconic-one]# getsebool httpd_can_network_connect
httpd_can_network_connect –> off
ものの見事にoffになっていますね。orz - root権限で以下のコマンドを実行し、httpd_can_network_connectの設定を変更します。再起動後も設定を維持するためには-Pオプションを指定します(-Pオプションを指定しないと、再起動後は設定がデフォルト値に戻ってしまいます)。
[root@pandanote.info iconic-one]# setsebool -P httpd_can_network_connect on
- root権限で以下のコマンドを再度実行し、httpd_can_network_connectの設定を確認します。
[root@pandanote.info iconic-one]# getsebool httpd_can_network_connect
httpd_can_network_connect –> on - しばらくサーバの状況を観察します。本サイトでは広告ギャラリーに新しい広告が作成されているかどうか確認しました。
まとめ
ここまでFedora 27へのアップグレードの際に発生したhttpdからの通信についてのトラブルとその解決法について書きました。SELinuxが有効になっているとアップグレード時にこの種類のトラブルが発生することがありますけど、自分の経験上、Google先生に聞いてみるとすぐに解決することがほとんどだったので、幸か不幸か幸いにして
「解決できないから、SELinuxを無効にしちゃえ!!」
という判断に至ったことはありません。
外部に公開しているサーバでは少しでもセキュリティ上のリスクは減らしたいので、SELinuxはできるだけ有効にしておいた方が良いと個人的には思います。
ところで、Wordpressが今年(2018年)の5月27日で15周年だったんですね。
自分(panda)の誕生日?とWordpressの誕生日?が一緒だったみたいで、びっくりです。
この記事は以上です。