WordPressでしっかり設定しておきたいセキュリティやメンテナンスに役立つ.htaccessのまとめ
Post on:2015年7月3日
WordPressでブログやサイトを運営する前、そして運営している時にしっかり設定しておきたいWordPressのセキュリティやメンテナンスに役立つ.htaccessの設定を紹介します。
WordPress Htaccess Tips And Tricks
下記は各ポイントを意訳したものです。
※当ブログでの翻訳記事は、元サイト様に許可を得て翻訳しています。
- .htaccessファイルを守る
- wp-config.phpファイルを守る
- wp-contentディレクトリを守る
- インクルードのみのファイルをブロックする
- 管理画面へのアクセスを制限する
- Webサイトから誰かを出入り禁止にする
- メンテナンスページをビジターに表示する
- ディレクトの一覧表示を停止する
- ブラウザのキャッシュを利用する
- URLのリダイレクト
- 画像の無断使用を防御
- 注意
- .htaccessを修正・変更する場合、必ずバックアップをすることをお勧めします。
.htaccessファイルを守る
最初に行うことは、.htaccessをあなた以外の無許可のアクセスから守ることです。下記のスニペットは第三者があなたの.htaccessファイルにアクセスするのを阻止します。
ルートの「.htaccess」に下記を記述します。
<files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </files>
wp-config.phpファイルを守る
WordPressでもう一つ重要なファイルがあります、それはwp-config.phpです。このファイルには重要な設定やデータベースへのログイン情報などが含まれています。このファイルに第三者がアクセスできないようにしましょう。
ルートの「.htaccess」に下記を記述します。
<files wp-config.php> order allow,deny deny from all </files>
wp-contentディレクトリを守る
wp-contentディレクトリはWordPressのWebサイトとして最も重要なエリアです。この中にはテーマやプラグインや画像・動画やキャッシュファイルなどが含まれています。
そのため、ハッカーの目標の一つとなっています。私は去年uploadsフォルダにメールスクリプトをアップロードされてしまいました。これは私のサーバーを使い、大量のスパムメールを送りました。
wp-content直下の各ディレクトリの「.htaccess」に下記を記述します。
Order deny,allow Deny from all <Files ~ ".(xml|css|jpe?g|png|gif|js)$"> Allow from all </Files>
wp-content直下のthemes, plugins, uploadsなど、それぞれのディレクトリに.htaccessファイルをアップロードする必要があります。この設定はアップロードできるファイルを.xml, .css, .jpe?G, .png, .gif, .jsに限定するもので、他のファイルのアップロードはできません。
- ワンポイント
- .svgなどのファイルを加えたい場合は、追加してください。
- 例:xml|css|jpe?g|png|gif|js|svg
インクルードのみのファイルをブロックする
インクルードのみのファイルは、ユーザーがアクセスしなくてもよいファイルです。
ルートの「.htaccess」に下記を記述します。
# Block the include-only files. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>
管理画面へのアクセスを制限する
WordPressの管理画面は、ハッカーに狙われやすい入り口の一つです。もし管理画面へのアクセスを許してしまうと、彼らはWordPressのWebサイトでどんなことでもできます。管理画面のアクセスを制限しておきましょう。
wp-adminディレクトリの「.htaccess」に下記を記述します。
# Limit logins and admin by IP <Limit GET POST PUT> order deny,allow deny from all allow from 12.34.56.78 </Limit>
「12.34.56.78」はあなた自身のIPアドレスに変更してください。あなたのIPが分からない時は「What is My IP」にアクセスして確認するとよいでしょう。IPアドレスは他の管理者やスタッフのために加えることができます。
allow from 12.34.56.78, 98.76.54.32, 19.82.73.64
加える時は、「,(コンマ)」で区切ります。
Webサイトから誰かを出入り禁止にする
もし悪意のあるアクセスのIPアドレスが分かったなら、下記のスニペットを使ってWebサイトから出入り禁止(バン)にすることができます。例えば、管理画面にアクセスを試みたIPアドレスなど追放してもよいでしょう。
ルートの「.htaccess」に下記を記述します。
<Limit GET POST> order allow,deny deny from 123.456.78.9 deny from 987.654.32.1 allow from all </Limit>
「123.456.78.9」「987.654.32.1」は出入り禁止にするIPアドレスに変更してください。
メンテナンスページをビジターに表示する
WordPressにはメンテナンス用の便利なプラグインがあります、「Ultimate Maintenance Mode」「Maintenance」など。これらはWordPressが正常に動作している時のみ動作するもので、トップページが真っ白になっているなどホワイトスクリーンに直面した際の解決にはなりません。
WordPressになんならかの障害がおき、メンテナンスページを表示する際は、メンテナンスページのHTMLを用意し、下記のスニペットを使用してください。
ルートの「.htaccess」に下記を記述します。
RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.html$ RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123 RewriteRule $ /maintenance.html [R=302,L]
2, 4行目の「maintenance.html」はメンテナンスページに変更してください。
3行目にはあなたのIPアドレスを加え、メンテナンス中でもあなたがアクセスできるように設定します。
ディレクトの一覧表示を停止する
ディレクトリ内のファイルやフォルダを見せることはセキュリティ上、危険です。ディレクトリの一覧表示を停止させておきましょう。
ルートの「.htaccess」に下記を記述します。
# disable directory browsing Options All -Indexes
ブラウザのキャッシュを利用する
ブラウザのキャッシュを利用するのは、「Optimize Your WordPress Website Using These Simple Tips」でも説明した通り、WordPressを最適化する一つの方法です。
CSSファイルやJSファイル、ロゴや画像など、一度ロードされたファイルをユーザーのブラウザにキャッシュさせ、次回以降はそのキャッシュを利用するので、ページ表示が速くなります。・
ルートの「.htaccess」に下記を記述します。
## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType text/x-javascript "access 1 month" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresDefault "access 2 days" </IfModule> ## EXPIRES CACHING ##
画像系は1年、CSSやJSファイルは1ヵ月でキャッシュの期間を設定しています。
URLのリダイレクト
301リダイレクトは、あなたがURLを新しい場所にしたことを検索エンジンに知らせます。ドメインを変え新しいWebサイトにした際など、URLを変更した時にそのページやフォルダを完全に新しいサイトに向け直します。
ルートの「.htaccess」に下記を記述します。
Redirect 301 /oldpage.html http://www.yourwebsite.com/newpage.html Redirect 301 /oldfolder/page2.html /folder3/page7.html Redirect 301 / http://www.mynewwebsite.com/
URLをリダイレクトするためには、301の後に元のURL、スペースの後に新しいURLを指定します。
画像の無断使用を防御
画像などのファイルの無断リンクを防御し、無断使用しているサイトに帯域を占有されるのを防ぎます。
ルートの「.htaccess」に下記を記述します。
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/g7ptdBB.png [NC,R,L]
3, 4行目のURLはあなたのWebサイトに変更してください。
5行目には画像を指定していますが、他に必要なファイルがあれば拡張子を加えてください。
5行目の代わりに表示する画像はあなた用に変更してください。
※この設定を行うと、RSSリーダーでフィードを表示した際に問題が起きることがあるので注意してください。
さらに詳細な情報は、以前の記事を参考に。
sponsors