連載
» 2017年08月15日 05時00分 UPDATE

とにかく速いWordPress(19):「これだけ」はやっておこう──「WordPress実行環境とアプリ開発環境」のセキュリティ対策マニュアル (1/3)

エンタープライズ用途での利用が増えている「WordPress」の高速化チューニングテクニックを解説する本連載。今回は、「WordPress実行環境としてのサーバのセキュリティ対策」と「開発者がWordPressアプリケーションを開発する際に実施すべき対策」のポイントを解説します。

[中村けん牛,プライム・ストラテジー]

連載バックナンバー

 前回は、WordPress管理者に向けたセキュリティ対策の基礎編として、「WordPress自体の対策」のためのノウハウを解説しました。今回はさらに具体的な「実践編」として、WordPressを動作させる「実行環境としてのサーバのセキュリティ対策」と「開発者がWordPressアプリケーションを開発する際に留意すべきポイント」を解説します。

「WordPress実行環境」として稼働するサーバのセキュリティ対策

 他のあらゆるサーバと同様に、WordPress実行環境として稼働するサーバのセキュリティ対策も「アクセス制御」と「アップデート」が対策の基本になります(ここでは、サーバOSにLinuxを利用していることを前提にポイントを説明していきます)。

 具体的に「何」を実践すべきでしょう。ポイントは以下の3つです。

  1. SSH接続には「IPアドレスによるアクセス制限」を行う
  2. リモートからFTP接続を行わない
  3. OS、ミドルウェアを最新の状態に保つ

1:SSH接続には「IPアドレスによるアクセス制限」を行う

 まず、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
「/etc/hosts.deny」への記述例
ssh : 192.0.2.1
「/etc/hosts.allow」への記述例(192.0.2.1のみを許可する場合)

 もし動的IPアドレスを使う環境でも、ホスト名の一部を記述することで代替できます。ただし、強度は若干下がるので注意してください。例えば、使っているプロバイダーのホスト名がhost1.example.comやhost2.example.comといったように、「example.com」は固定で、それ以外の文字列が変化する場合には、以下のように「/etc/hosts.allow」へ記述します。

ssh : .example.com
動的IPアドレスを使う環境での「/etc/hosts.allow」への記述例

 また、Amazon Web Services(以下、AWS)やMicrosoft Azureなどのクラウドプラットフォーム上でサーバを運用している場合には、その仮想マシンやロードバランサーに設定することも可能です。また、Linuxの「iptables」や「firewalld」を用いて制御することも可能です。

 しかしそのような運用環境であっても、なるべくTCP Wrapperに、つまり、前述したhosts.allowとhosts.denyにも設定しておくことを筆者は推奨しています。

 ロードバランサーでIPアドレスの制御を行う場合、その先の仮想マシンにパブリックIPアドレスが付与されているならば、ロードバランサー経由でのアクセスを制御できます。しかし、仮想マシンに付与されたパブリックIPアドレス経由でのアクセス、また、ローカルネットワーク経由でのアクセスが制御されないためです。

2:リモートからFTP接続を行わない

 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による自己接続によって安全にアップデートするためです。

3:OS、ミドルウェアを最新の状態に保つ

 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」コマンドだけで最新状態にアップデートできるようになっています。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。