photo credit: Anonymous DDC_1233 / Abode of Chaos
サーバを現環境に移した際に、すっかり忘れてた不正アクセス対策。
そして忘れてたときに限って訪れるWordPressに対しての不正アクセス(ブルートフォースアタック)
おかげさまで大量アクセスに引き続き、不正アクセスでもサーバダウンの寸前に。
そんなわけで、WordPressに特化した不正アクセス対策を施してみました。
必要とするのは.htaccessと、mod_rewriteモジュール。
これらが利用可能かは契約しているサーバの仕様などを確認してください。
WordPressの不正アクセス対策にはプラグインも多々リリースされています。
便利ですよね。
でも、プラグインでの対策には難点もあります。
プラグイン=WordPressへのアクセスは許可されていて、その後の処理で拒否しているわけです。
ようするに、サーバやデータベースへの負荷は相応に発生している、ということ。
大量の不正アクセスが発生すれば、ブログが正常に表示できない状況にもなりえます。
そこで、wp-login.phpへのアクセス自体をサーバ側で制限しちゃうことにしました。
まずAPNIC – Query the APNIC Whois Databaseへアクセスします。
赤く囲った部分のように表示されているのが、今あなたが使ってる(割り当てられている)IPアドレス。
IPアドレスの割り当ては通信会社(自宅のプロバイダや携帯電話の会社)が行います。
インターネットへは、このIPアドレスを経路として情報のやりとりをしています。
IPアドレスが確認できたら、この数字を検索フォームに入力(コピペ)して『search』を押します。
上記は『E-MOBILE LTE』の例になります。
E-MOBILEの場合はモバイルルーターを起動のたびにIPアドレスが変化します。
変化する場合、かならずある範囲の中でのみ行われます。
今回のIPアドレス『119.72.198.90』。
このIPアドレスの場合は『119.72.0.0〜119.72.255.255』の範囲内から割り当てられていると確認できました。
docomoやソフトバンク、ご自宅の契約プロバイダでも同様に範囲が設定されていると思います。
WordPressの場合、自動的に『.htaccess』というファイルがwp-login.phpと同じフォルダに作られます。
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
インストール後にご自身で.htaccessの中身を修正していない場合、上記のような記述があると思います。
(だいたい同じならOKですよ)
IPアドレスの割り当て範囲は『119.72.0.0〜119.72.255.255』でした。
共通しているのは先頭の『119.72』になります。
そして3番目の項目は『0〜255』の範囲ということになります。
この範囲内からアクセスがあった場合だけ、WordPressの管理画面へアクセス許可するには以下のようになります。
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR] RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$ RewriteCond %{REMOTE_ADDR} !^119\.72\.[0-255] RewriteRule ^(.*)$ - [R=403,L]
これで上3桁の数字が『119.72.0〜119.72.255』の範囲で一致した場合のみ許可されました。
ソフトバンクのLTEをiPhone5で利用した場合、IPアドレスは『126.0.0.0〜126.255.255.255』の範囲になります。
この場合は『RewriteCond %{REMOTE_ADDR} !^126\.[0-255]』と記述すればOKです。
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR] RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$ RewriteCond %{REMOTE_ADDR} !^119\.72\.[0-255] RewriteCond %{REMOTE_ADDR} !^126\.[0-255] RewriteRule ^(.*)$ - [R=403,L] </IfModule> # END WordPress
.htaccessに追記した完成形がコレ。
指定したIPアドレス範囲外からアクセスがあると、サーバは403のエラーコードを返します。
これでプログラムやデータベースの処理が発生することなく、不正アクセスに対して備えることができます。
IPアドレスの範囲は変更されることもあるので、繋がらなくなったら適宜確認→追記をしてくださいね。
SEOとか考える前に基本をおさらい。.htaccessとrobots.txtを見直そう!
ホームページやブログを運営していく上で、基本としてちゃんとしておきたいのが.htaccessとrobots.txtです。
.htaccessのRedirectRuleでURLクエリーを含めた301リダイレクトを設定する方法
.htaccessのRedirect RuleでURLクエリーを含めた場合のサンプルが少ないようなので参考になれば。
crocodile notebookも4年目なので、ユーザビリティについて考えてみた結果
google pagespeed insightやGTmatrixの指摘事項をヒントに改善してみた中から、コストもかからず比較的簡単なものをピックアップしてみました。
管理者ユーザ名の変更やログイン強化を施してWordPressへの不正アクセスに備えよう!
wordpressに対して不正アクセスを試みサーバを乗っ取ろうとするケースが増えてるそうです。 被害者となる前にできるだけのことを、できるだけ簡単にやっておきましょう!
WordPressのセキュリティは大丈夫?まだまだ続く不正アクセスに対処しよう!
ボクのまわりでも実害が散見され始めたWordPressへの不正アクセス。被害に遭う前の対策はかならず施しましょう!
WordPressを使ってホームページを作るのに便利な無料のテーマや写真やアイコン3×3
知人に頼まれてWordPressでブログを作るとき実際に活用させていただいてる、『テーマ』『写真』『アイコン』を無料利用できるページをそれぞれ3つ紹介しています。