IIS 上で動作している WordPress の HTTP ヘッダーを編集してセキュリティ対策をする
検証環境
- WordPress
-
- 5.8.2
- PHP
-
- 7.1.29
- IIS
-
- 10.0
- Windows Server
-
- 2019
前提
この記事では IIS 上で WordPress がすでに動いているものとしています。
セキュリティの確認
以下のサイトにアクセスし、自身の WordPress のサイトの URL を入力して Scan ボタンを押してみてください。
結果のランクは「A+, A, B, C, D, E, F」があり、A+ に近いほどセキュリティが高いことを意味します。逆に F に近いほどセキュリティが弱いことを意味します。
IIS 上にインストールした WordPress のサイトに対して実行すると分かりますが、標準では何も対策されていないので F で表示されてしまいます。
セキュリティ対策
ネットで調べると「.htaccess」ファイルを使用した対策方法が書かれていることが多いですが、「.htaccess」は基本的に Apache の Web サーバーで使用するものなので IIS では使用できません。
IIS の場合、Apache の「.htaccess」に該当するのが「web.config」ファイルになるため、こちらに設定を記述することになります。
web.config に直接設定を記述してもいいのですが、今回は「インターネット インフォメーション サービス (IIS) マネージャー」を使用して設定を追加し、設定した後で web.config を確認してみたいと思います。
IIS マネージャーでの設定
スタートメニューから「インターネット インフォメーション サービス (IIS) マネージャー」を選択します。
左のツリーから「WordPress」が動いているサイトを選択し、中央の一覧から「HTTP 応答ヘッダー」をダブルクリックで開きます。
ここでは名前と値を入力して追加し応答ヘッダーを設定していきます。今回追加するものは以下の通りです。主要なものを抜粋していますが、必要に応じて項目を増やしたり値を変更したりしてください。
名前 | 値 |
---|---|
X-Content-Type-Options | nosniff |
X-Frame-Options | SAMEORIGIN |
X-XSS-Protection | 1; mode=block |
Referrer-Policy | no-referrer-when-downgrade |
Content-Security-Policy | upgrade-insecure-requests |
Strict-Transport-Security | max-age=31536000 |
Permissions-Policy | fullscreen=(self), accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=() |
例として X-Content-Type-Options
を追加してみたいと思います。右のメニューから「追加」をクリックします。
名前に X-Content-Type-Options
を入力し、値に nosniff
を入れて OK ボタンをクリックします。
値が一つ追加されました。
試しにこの状態で「Security Headers」で確認してみるとセキュリティのランクが上がっていることが確認できます。
引き続き登録を行い、上記の表の値をすべて入れた状態にしてみました。
この状態で Scan してみると、最高ランクの A+ になることを確認できました。
セキュリティとしてはこれでいいのですが、かなり制約を厳しくしているので WordPress のサイトを開いてコンテンツの動作に問題がないか確認してください。
特に Permissions-Policy
ではカメラや位置情報を完全に無効にしているので、運用している WordPress のサイトに合わせて値を調整してください。
web.config の確認
WordPress を置いているフォルダのルートに web.config があるはずなのでメモ帳などで開いて確認してみます。
以下の図のように入力されていることを確認できると思います。IIS マネージャーを使わなくても web.config に同じように記述すれば HTTP 応答ヘッダーを設定することができます。