WordPress脆弱性・改ざん対策 – 5.「.htaccessファイル」でWordPressを守る3種防衛設定

WordPress脆弱性・改ざん対策 – 5.「.htaccessファイル」でWordPressを守る3種防衛設定

▲10回シリーズの目次へ戻る

こんにちは宮川(@miyakawa2449)です。

10回に分けてWordPressの脆弱性・改ざん対策を記事にしています。

前回は「4.WordPressのログイン画面を守る2つの方法」のお話でした。

今回はWordPressを「.htaccessファイル」を使って守る方法を紹介します。

5.「.htaccessファイル」でWordPressを守る3種防衛設定

.htaccessファイル例

WordPressをサーバーにインストールする際に一度設定してしまえば、基本変更は必要ありません。

基本的な .htaccessファイルの設定内容を下記にまとめます。

■.htaccessファイルをまず守る

.htaccessファイル自体が不正アクセスされては意味がありません。

そのため.htaccessファイル自体をアクセス拒否の設定にします。

<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>

■ .htaccessファイルで日本国外からログイン画面などへアクセスをできなくする

不正アクセスの多くは海外からのモノが目立ちます。

海外からのWordPressへのアクセスに関して、次の3つの機能(ページ)へのアクセスを拒否する設定をします。

  1. ログイン画面(wp-login.php)
  2. コメント画面(wp-comments-post.php)
  3. 外部からのWordPressコントロール機能(xmlrpc.php)

1, 2番については海外からのログインとコメントが必要ないという理由で拒否する設定をします。

3番についてはハッカーのDDoS攻撃の踏み台に利用されたり、ブルートフォースアタック(暗号やパスワードを解読するための攻撃で「総当たり攻撃」ともいう)を受ける対象となっています。
そのため海外からのアクセスを拒否する設定をします。

「日本国外からのアクセス拒否」の方法は、逆転の発想で「国内からのアクセスだけを許可する」設定にします。

日本国内からのアクセス許可をする設定についてはIPアドレスを利用しますので、詳しくは次のサイトを参考にしてください。

IPアドレスで日本国外(海外/外国)からのアクセスを制限する.htaccess CGI’s

.htaccessファイルの設定は次のようになります。

<Files ~ "~(xmlrpc\.php|wp-login\.php|wp-comments-post\.php)$">
order deny,allow
deny from all
allow from 1.0.16.0/20
allow from 1.0.64.0/18
allow from 1.1.64.0/18
allow from 1.5.0.0/16
※以下、日本国内のIPアドレスが続きます
.......
.......
</Files>

■.htaccessファイルで wp-config.php, wp-mail.php, install.phpを守る

これらのファイルは外部から攻撃の対象になりやすいため、外部からのアクセス拒否の設定をおこないます。

  • wp-config.php( WordPressの重要な各種設定ファイル)
  • wp-mail.php(外部からメール送信でブログを更新するときに使うプログラム)
  • install.php(再インストールされる恐れがある)

.htaccessファイルの設定は次のようになります。

<files ~ "^(wp-config\.php|wp-mail\.php|install\.php)$">
order allow,deny
deny from all
</files>

設定が整ったら念のため自身のWordPressの下記のURLにアクセスしてください。
「wp」は便宜上のWordPressのインストール先のルートディレクトリです。
自身の環境に合わせて見直してください。

  • https://example.com/wp/wp-config.php
  • https://example.com/wp/wp-mail.php
  • https://example.com/wp/wp-admin/install.php

それぞれにアクセスして、「403エラー」いわゆる not found(ファイルが見つかりません)という表示ができていれば成功です。

例えば、次の場合はNGです。

悪い例
問題となっている install.php は wp-admin のディレクトリーにあります。 公開されているWordPress で「install.php」を実行すると上書きインストールされ記事が消されます。あなたのWordPressは大丈夫ですか?

 

https://example.com/wp/wp-admin/install.php

▲10回シリーズの目次へ戻る