エンタープライズ用途での利用が増えている「WordPress」の高速化チューニングテクニックを解説する本連載。今回は、「WordPress実行環境としてのサーバのセキュリティ対策」と「開発者がWordPressアプリケーションを開発する際に実施すべき対策」のポイントを解説します。
前回は、WordPress管理者に向けたセキュリティ対策の基礎編として、「WordPress自体の対策」のためのノウハウを解説しました。今回はさらに具体的な「実践編」として、WordPressを動作させる「実行環境としてのサーバのセキュリティ対策」と「開発者がWordPressアプリケーションを開発する際に留意すべきポイント」を解説します。
他のあらゆるサーバと同様に、WordPress実行環境として稼働するサーバのセキュリティ対策も「アクセス制御」と「アップデート」が対策の基本になります(ここでは、サーバOSにLinuxを利用していることを前提にポイントを説明していきます)。
具体的に「何」を実践すべきでしょう。ポイントは以下の3つです。
まず、SSH(Secure Shell)接続には「IPアドレスによるアクセス制限」を実施しましょう。SSHへのIPアドレスによるアクセス制限は「TCP Wrapper」で制御します。
TCP Wrapperは、「/etc/hosts.allow」と「/etc/hosts.deny」にルールを記述することによって機能します。具体的には、「hosts.deny」に全ての接続を不許可とする記述を行い、もう1つの「hosts.allow」に許可するIPアドレスを記述します。例えば「192.0.2.1」のみに接続を許可する場合には、以下のように記述します。
all : all
ssh : 192.0.2.1
もし動的IPアドレスを使う環境でも、ホスト名の一部を記述することで代替できます。ただし、強度は若干下がるので注意してください。例えば、使っているプロバイダーのホスト名がhost1.example.comやhost2.example.comといったように、「example.com」は固定で、それ以外の文字列が変化する場合には、以下のように「/etc/hosts.allow」へ記述します。
ssh : .example.com
また、Amazon Web Services(以下、AWS)やMicrosoft Azureなどのクラウドプラットフォーム上でサーバを運用している場合には、その仮想マシンやロードバランサーに設定することも可能です。また、Linuxの「iptables」や「firewalld」を用いて制御することも可能です。
しかしそのような運用環境であっても、なるべくTCP Wrapperに、つまり、前述したhosts.allowとhosts.denyにも設定しておくことを筆者は推奨しています。
ロードバランサーでIPアドレスの制御を行う場合、その先の仮想マシンにパブリックIPアドレスが付与されているならば、ロードバランサー経由でのアクセスを制御できます。しかし、仮想マシンに付与されたパブリックIPアドレス経由でのアクセス、また、ローカルネットワーク経由でのアクセスが制御されないためです。
2つ目は「リモートからFTP接続を行わない」ことです。FTP(File Transfer Protocol)は昔から利用されているファイル転送手段ですが、伝送するデータは暗号化されません。パスワードの入力文字列なども同様で、全てが平文のままデータがやりとりされてしまいます。
このためリモートからは、SSHの仕組みでデータを暗号化した上で伝送するSFTP(SSH File Transfer Protocol)やSCP(Secure Copy Protocol)を利用するように徹底します。Windowsクライアントとしては、例えば「WinSCP」が著名です。筆者も愛用しています。
なおKUSANAGI環境では、FTPサーバが初期設定で有効になっていますが、TCP Wrapperによって、ローカルループバックアドレス(127.0.0.1)からの接続を許可する設定になっています。これは、WordPressをFTPによる自己接続によって安全にアップデートするためです。
WordPress本体と同様に、サーバのOSやミドルウェアもできる限り最新の状況を保つようにします。
2017年8月現在、WordPress日本語版の最低動作環境はPHP 5.2.4以上、MySQL 5.0以上ですが、PHP 7以上、かつMySQL 5.6以上またはMariaDB 10.0以上で、WebサーバはHTTPS(Hypertext Transfer Protocol Secure)対応の環境を使うように推奨されています。
アプリケーションなどの仕様によって古いメジャーバージョンのPHPやMySQLしか利用できない場合はあるでしょう。しかしそのような環境であっても、OSのディストリビューションから提供されるマイナーアップデートにはセキュリティアップデートも含まれています。少なくともセキュリティアップデートを適用することは心掛けるようにしてください。
ちなみにKUSANAGI環境では、「yum」コマンドだけで最新状態にアップデートできるようになっています。
Copyright © ITmedia, Inc. All Rights Reserved.