Wordpressのセキュリティ対策で悪意ある攻撃から守る(.htaccess操作・プラグイン)
Wordpressのセキュリティを高めるため、まずはインストール先と出力先を分ける事です。
.htaccessやプラグインを使ってログイン画面や主要ファイルへアクセス制限を掛けましょう。
システムやプラグインは常にバージョンアップし、脆弱性をそのままにしない事が重要です。
Wordpressの重要課題はセキュリティ対策
Wordpressはご存じの通り今一番有名なCMSです。
このツールを使えば誰でも簡単に、WEBサイトが構築できるようになりましたよね。
深い知識が無くてもすぐに開設・運営ができるので、初心者には嬉しい限りです。
Wordpressシステムの抱える課題
Wordpressは、オープンソースのCMSです。
常に中身や構成が「公開されているシステム」である事を忘れてはいけません。
公開されているという事は、悪意ある第三者のハッキングターゲットになりやすい事を意味しているのです。
オープンソースのデメリット
・インストールした時どのような構成になるか
・ファイルの名前や機能について
・どのように動作するのか
これらの情報が全て公開され、それを紹介した記事も数多く出回っている訳です。
構成と内容の「隙」を突いてハッキングの足掛かりとするのが、ハッカー集団です。
Wordpressの命題はセキュリティ対策
Wordpresは、常にハッキングの危険に晒されているツールと言って良いでしょう。
利便性の向上ももちろんですが、Wordpressはもっと重要な責務を抱えています。
それは、いつどうやって狙ってくるかわからない脅威へのセキュリティ対策です。
単にインストールして使うだけのユーザーが多い
これだけセキュリティ対策の必要性が唄われているにも関わらず、単にインストールしてそのまま使っている人が後を絶ちません。
今レンタルサーバーにはWordpressの自動インストール機能があるので、すぐにWEBサイトが開設できてしまうからでしょう。
しかしそれは刃物を持った不審者に対し、裸一貫で立つようなものです。
相手はあなたを狙ってはいない
「大したサイトでもないから自分のは狙われない」という考え方はちょっと違います。
ハッカーは特定の相手を狙うのではなく、ほとんどがランダム・無作為です。
つまりあなたのサイトを認識して狙ってくる訳では無いのですね。
網漁と同じ
いわゆる漁と同じで、適当に網を張りターゲットとなる魚(サイト)がヒットするまで待ちます。
脆弱性を持ったWordpressサイトがその仕掛けに引っ掛かると、ハッカーに知らせがいきます。
そこで改めて、ハッカー手動によるハッキングや改ざんなどの行為が行われる訳です。
魚を釣るところまでは機械による自動作業です。
最低限度のセキュリティを施す
単にインストールして使うのではなく、自分で様々な設定をする事でハッキングに対する防御姿勢を取る事ができます。
それによりかなりの脅威を防ぐ(網に掛からないようにする)事ができます。
商売としてWordpress制作サイトを納品する人であればなおさら、対策準備をしておくべきでしょう。
ではWordpressに対して自分でおこなえるセキュリティ対策をご紹介します。
自分のサイトのセキュリティを診断
まずは自分のサイトがマルウェア等のハッキング攻撃を受けていないか、判断する必要があるでしょう。
そこでおすすめの診断ツールを紹介します。
WPdoctor
「WPdoctor」は、日本語で分かりやすく解説されている大変便利な診断ツールです。
自分のサイトのURLを貼り付けるだけで簡単に診断できます。
レポートで指摘された項目に対処していく事で、セキュリティを強化することができます。
自力で対応ができない場合は、WPdoctorにセキュリティ対策の相談や依頼をする事もできます。
上の診断結果でも出てくると思いますが、必須で実施しておくべき対策を以下より紹介します。
インストール先と出力先URLを変える
もしあなたがまだWordpressをインストールしていないのであれば、まずはこれです。
Wordpressのインストールは、TOPではなく一つ下の区画内にするべきです。
その上で出力先を、TOPディレクトリにする事です。
Wordpressを一つ下の区画に入れる
わかりにくかったかもしれませんので、詳しく解説します。
要はWordpressのインストール先とページ出力先を「別々」にしてもらいたいのです。
インストール先(1つ下の区画)
https://lpeg.info/wpsystem/(ディレクトリ名は自由)
ページ表示先(TOPページ)
https://lpeg.info/
この様にWordpressシステムの位置を一つ下の区画に落としてもらいたい訳です。
システムをインストールする区画の名前は自由に決定できます。
管理画面の設定欄
出力先の変更は、上記の管理画面設定欄からできます。
ただしTOPにインストールするのと比べて、多少設定変更の手間が掛かります。
インストール先と出力先を変える理由
ではなぜそのような事をする必要があるのでしょうか。
それはログインURLを特定されない様にするためです。
WordpressをTOPディレクトリにインストールすると、自然とログイン画面のurlが決まってしまうのが原因です。
WordpressをTOPディレクトリにインストールした場合
https://lpeg.info/wp-login.php
もしくは
https://lpeg.info/wp-admin
この様にログイン画面URLが確定してしまいます。
Wordpressはオープンソースのため、どのサイトもドメイン名にwp-login.phpをつければログインページURLになってしまうのです。
インストール先のディレクトリはわからない
ここでインストール先のURLを一つ下の階層に入れておけば、それによりログイン画面URLが変わります。
つまりそのサイト固有のログインURLが作れる訳です。
インストール先と出力先が違う場合
https://lpeg.info/○○○○/wp-login.php
もしくは
https://lpeg.info/○○○○/wp-admin
一つ下の階層内に入れていれば、この「○○○○」部分がわからないとログイン画面がわかりません。
この様にしておくと、第三者に簡単にログインURLを知られる事が無い訳です。
既にインストール済み・構築済みの場合はプラグインで
この方法はインストールする前に知っておかなければなりません。
既にWordpressを構築してしまっている場合は、システム位置を移動させるのは大変です。
既にインストールしているのなら、後ほど紹介するWPセキュリティプラグインなどを利用して下さい。wp-config.phpへのアクセス制限
wp-config.phpは、DB情報などが書き込んである重要な設定ファイルです。
Wordpressはこの重要な情報が入ったファイル位置まで周知されているシステムなのですね。
もしDB情報が盗まれたらデータベース自体がハッキングを受ける事になり、簡単に改ざんされてしまいます。
wp-config.phpの位置
Wordpressは先述した様にオープンソースですから、ファイルの位置は共通です。
このファイルは通常、管理者以外は閲覧不可になっています。
パーミッションが400になっているか
wp-config.phpのパーミッションは、管理者のみが開ける「400」か「600」が理想です。
それ以外だと、自分以外の人にダウンロードや表示されてしまい非常に危険です。
一度も確認した事が無い人は、すぐにパーミッションを確認して下さい。
別階層にすれば位置も特定されにくくなる
インストール先と出力先とが同じの場合、wp-config.phpの位置は以下です。
https://lpeg.info/wp-config.php
特定されない様にするためにも、先程紹介した一つ下の区画にWordpressシステムを入れる手段は有効です。
https://lpeg.info/○○○○/wp-config.php
任意のディレクトリ内に入れておけば、この○○○○部分がわからないので探せなくなります。
.htaccessへのアクセス制限
次に.htaccessを使って様々なアクセスを制限する方法を紹介します。
これはあなたやクライアントなど「関係者以外からのログインを制限」する事が目的です。
Wordpressの構成ファイル内にある「.htaccess」ファイルに追加で記述していく事になります。
情報を追記する位置は上に
これから紹介する記述は全て、.htaccessの上部に入れる様にしましょう。
----------------------------- この付近に入れましょう(何行か改行を入れてもOKです) ----------------------------- # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule > # END WordPress
Wordpressによる自動記述はそのまま、それより上にスペースを作って追記する事です。
自動記述部分より下に入れると動かない場合があります。
ログイン管理画面(wp-login.php)のアクセス制限
まずはwp-login.phpへの攻撃を防ぐため、wp-login.phpへのアクセス制限を掛ける方法です。
アクセスできる関係者の「IPアドレス」を設定する事で、それ以外はwp-login.phpにアクセスできない様にします。
IP制限の記述
<Files wp-login.php> Order deny,allow Deny from all Allow from 000.000.000.000 Allow from 000.000.000.000 </Files> # BEGIN WordPress…の記述が続く
Allow fromの欄には、ログインを許可するIPアドレスを入れて下さい(複数段記述可)。
自分(家や事務所)の接続元IPアドレスを調べる方法
下記サイトでIPアドレスを調べる事ができます。
BASIC認証
またはBASIC認証を使う事で、外部関係者や固定IPでない人からのアクセスも許可できます。
BASIC認証については別記事で取り扱っているので、参考にして下さい。
管理者画面(wp-admin)のアクセス制限
次にwp-adminへのアクセス制限です。
そもそもwp-admin/内は管理者以外に見せる必要はありませんので、アクセスを禁止して良いと思います。
wp-adminディレクトリ内に.htaccessを新規に設置して、アクセス制限を記述しましょう。
wp-adminディレクトリ内の.htaccessへの記述
Order deny,allow Deny from all Allow from 000.000.000.000 Allow from 000.000.000.000
このファイルは上記部分のみで、wordpressによる自動出力の部分は必要ありません。
上記を書いた.htacessをそのままUPして良いです。
Allow fromの欄には、先ほど同様にIPアドレスを入れて下さい。
その他攻撃されやすいファイルへのアクセス制限
それ以外に攻撃の対象となりやすいファイルは以下です。
wp-config.php…WordPressの動作に必要な設定ファイル
wp-cron.php…予約投稿やアップデート通知など時刻連動処理ファイル
xmlrpc.php…特定のホストへpinbackを送るファイル
いずれもwp-config.phpと同じ位置にあります。
アクセス制限を掛けるため、同じ位置にある.htaccessの上部に追記します。
wp-config.phpとwp-cron.phpへのアクセス制限
<FilesMatch "^(wp-config\.php|wp-cron\.php)"> order allow,deny deny from all </FilesMatch> # BEGIN WordPress…の記述が続く
xmlrpc.phpへのリダイレクト設定
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L] </IfModule> # BEGIN WordPress…の記述が続く
xmlrpc.phpへのアクセスは、上記の様にhttp://0.0.0.0/へリダイレクトして負荷を避ける形が一般的です。
プラグインを使った対策
これらのアクセス制限や認証を自作でするのが難しい場合は、プラグインを使いましょう。
アクセス制限などを設定できる代表的なプラグインを紹介します。
代表プラグイン紹介2つ
プラグイン新規追加の画面で、以下を検索して利用してみて下さい。
SiteGuard WP Plugin
SiteGuard WP Pluginは簡単に設定できるので、初心者の方におすすめのプラグインの1つです。
Invisible reCAPTCHA for WordPress
Invisible reCAPTCHA for WordPressは、ログイン画面を機械で自動突破されない様に認証するプラグインですね。
不要なプラグインは削除する
プラグインは、Wordpressで攻撃を受けやすい要素の1つでもあります。
拡張性が高く簡単便利なので、たくさんのプラグインを利用しているはずです。
しかしプラグインに脆弱性があると、そこをめがけてハッカーが悪意のあるプログラムを埋め込んできます。
つまり導入しているプラグインの数だけ、ハッキングされる危険性も高まる事になるのですね。
現時点で有効化していないプラグインは、できるだけ削除しておきましょう。
All In One WP Security & Firewallプラグインを使う
上記で紹介したプラグインは、各用途ごと専用の機能でした。
そこでWordpressのセキュリティを高める総合的なプラグインを一つ紹介します。
それが「All In One WP Security & Firewall」プラグインです。
プラグインを有効化
まずはプラグインの新規追加画面からこのプラグイン名で検索を掛けましょう。
現在All In One WP Security & Firewallは、略称で「AIOS」となっています。
上記「AIOS」のマークを見つけてインストールし、有効化します。
有効化すると、Wordpress管理画面の左側メニューに「WPセキュリティ」と項目が追加されます。
以降は本プラグインを「WPセキュリティ」として説明していきます。
説明が日本語じゃない場合
環境にもよると思いますが、開いた設定ページが英語表記になっている事(或いは日本語と混合)があります。
その時は上の画像の様に余白を右クリックしてメニューを出します。
「日本語に翻訳」をクリックすると、日本語に翻訳されます。
1度だけ設定できれば何度も開く事はありませんので、これで問題はないでしょう。
WPセキュリティの様々なセキュリティ設定
ではWPセキュリティの様々な機能を紹介しましょう。
コメントスパムを防止する
コメント欄に変な文字列文章が投稿され、どんどん掲載されてしまう攻撃が「コメントスパム」です。
WPセキュリティでは、このコメントスパムを防止する事ができます。
メニュー項目からスパム防止(Spam Prevention)を開きましょう。
コメントスパム設定のページ
まず「コメントフォームのCaptchaを有効化」のチェックを入れます。
これによりコメント欄にcaptcha(送信者が人間である事を確認するテスト)を入力するフォームを追加します。
コメントスパムはbotと呼ばれる自動化されたプログラムによって投稿されるので、スパムコメントが入らなくなります。
スパムボットのコメントをブロックする
次に「スパムボットのコメントをブロックする」のチェックを入れておきましょう。
これによりドメインから発信されていない全てのコメントリクエストをブロックします。
botはブログラムですから、WEBサイトを直接開いてコメントを入れている訳ではありません。
あくまで外部環境・サーバーから送信しようとする訳です。
ここにチェックをつけておけば外部からの送信は全てブロックされるので、自然とWEBサイトを訪問したユーザーの入力コメントのみとなりますね。
管理画面への不正アクセスを防ぐ
WordpressのデフォルトのログインURLは、必ず末尾にwp-login.phpが付く事は先程説明した通りです。
ここが攻撃の窓口となりやすい訳ですね。
このwp-login.phpからの不正ログインを防止するため、ログインURLを任意URLに変更する事ができます。
メニュー一覧から「総当たり攻撃」をクリックします。
ログインページの設定:名前を変更
「ログインページの名義変更機能を有効にします」のチェックを入れ、下にログインURLを指定する事ができます
例えばこのボックスに「loginpage」と入れた場合、WordpressのログインURLは「https://adonoa.info/loginpage」になります。
元のwp-login.phpでは404エラーとなり、ログイン画面は開きません。
Pingback機能を無効化する
他社サイト上で自身のWEBサイトに対する言及がされた際に、その事を通知する「Pingback」という仕組みがWordpressにはあります。
この仕組みを利用してPingbackを大量に送り付け、DoS攻撃として利用される事もあるのです。
Wordpressでは初期状態でこのPingback機能が有効になっています。
運営上必須でないのであれば、無効化しておきましょう
DoS攻撃とは
DoS攻撃は、対象のWEBサイトやサーバーに対して複数のマシンから大量に通信をおこなってサーバーをダウンさせる様々な攻撃を指します。
これによりWEBサイトが開かない・ログインできない・買い物処理ができない、などの障害遅延が生じます。
Wordpress XMLPRCとピンバック脆弱性保護
Pingback機能を無効化するためには「ファイアウォール」のメニューを開きましょう。
Wordpress XMLPRCとピンバック脆弱性保護ページが開きます。
「XML-RPCへのアクセスを完全にブロック」にチェックを入れれば、無効化されます。
また、JetpackプラグインでSNSとの連携をしている場合もありますよね。
その時は下の「XML RPCからのpingback機能を無効にします。」もチェックを入れましょう。
まとめ
バージョンアップ
本記事では特に紹介していませんが、Wordpressやプラグインのバージョンアップはこまめにしておくべきです。
システムやプラグインにセキュリティホールが見つかると、すぐにアップデートの告知が出回ります。
これらは全てシステムが突破されない様にするための措置ですので、必ずやりましょう。
これを放っておいている人もいるはずです。
そしてファイルやDBデータのバックアップを定期的に取る事も忘れないで下さい。
セキュリティ対策
ハッキングを未然に防ぐために必要な対策をまとめてみました。
定期的にバックアップを取得する
ソフトウェア、プラグイン、テーマを最新にする
ファイルへのアクセスを制限する
スパムを防止する
ログイン画面の場所や認証を強化する
不必要な機能は無効化する
もちろん大前提として、操作PCにはセキュリティソフトを入れておくべきです。
PC自体をハッキングされパスワードを盗み見されれば、意味がありませんからね。
こういった基本的な設定をしておく事は、Wordpress利用者の責務だと思います。