世の中の多くのWebサイト(ホームページ)やブログがWordPressで作られているかと思います。
その一方で、不正ログインやらWebサイト改ざんなどいろいろな攻撃も多く報告されています。

そこで、WordPressで作ったWebサイトやブログを運営するにあたり設定しておきたいセキュリティ対策を少しご紹介します。

ここでご紹介するのは.htaccessという設定ファイルでできる簡単な設定です。


.htaccessの保護


.htaccessに不正アクセスされたら元も子もありません。
なのでまずは、.htaccessへのアクセス制限をしましょう。

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



.htaccessファイルへのアクセス拒否をします。


基本的なセキュリティ設定


クロスサイトスクリプティング(XSS)に対するフィルタ機能強化、Content-Typeに合致しない動作の回避、クリックジャッキング攻撃対策などなど。

<ifModule mod_headers.c>
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options DENY
Header always set X-Download-Options: noopen
Header always set X-Powered-By: "" 
</ifModule>
  
<IfModule mod_php5.c>
php_flag session.cookie_httponly on
php_flag session.cookie_secure On
</IfModule>



Apacheのmod_headersモジュールを利用して、リクエストや応答のヘッダをカスタマイズしています。


wp-config.phpの保護


wp-config.phpにはデータベーズ関連の情報が書かれています。
すごく大事なファイルですので守りましょう。

<Files wp-config.php>
Order allow,deny
Deny from all
</Files>



でも、これだけじゃ物足りない。
xmlrpc.phpは管理画面以外からの侵入を防ぐために拒否したい。他にもメール投稿を受信するためのコアファイル、WordPressインストール用のコアファイルなどなど、これらも攻撃対象となるファイルです。

<FilesMatch "^(wp-config\.php|wp-mail\.php|install\.php|xmlrpc\.php)">
Order allow,deny
Deny from all
</FilesMatch>



「wp-mail.php」「install.php」「xmlrpc.php」もwp-config.phpと一緒にまとめてアクセス拒否します。


管理画面へのアクセスを制限する


できたらでいいですがもし、オフィスや自宅など限られて場所でしかログインしないのであれば、管理画面へのアクセスをなるべく自分たちだけにしておくと安心でしょう。

こちらはwp-adminディレクトリの.htaccessに記述します。

<Limit GET POST PUT>
order deny,allow
deny from all
allow from 12.34.56.78
allow from 87.65.43.21
</Limit>



allow fromの後に書かれているIPアドレスをアクセスする場所のIPアドレスにしてください。追加したい場合はallow fromを増やしていけばどんどん追加できます。
ご自身のIPを確認したい場合は「What is My IP」や「確認くん」で確認できます。

注意点としては、自動で割り振るグローバルIPを使用しているとルータの再起動やプロバイダ側のメンテナンス等でIPアドレスが変わることがあります。通常のプロバイダはグローバルIPとなっていますので、少しランディングコストがかかりますが固定IPアドレスサービス等を検討されると良いでしょう。

WordPressでのサイト構築の際、すでに運営されている方も出来る限りセキュリティ対策をしておきましょう。