wordpressの先生が本気で考えたセキュリティ対策5選

wordpressログイン画面はwp-login.phpでアクセス出来てしまうseo対策とは

wordpressで考えられるセキュリティ対策について、wordpressの先生が丁寧に設定方法を解説します!

最近、ビジネスのオンライン化が進み

  • 来店前の事前予約
  • テイクアウト事前予約
  • ネットショップ・オンラインショップ
  • 会員限定コンテンツを配信するオンラインサロン

等、単純にwordpressでホームページを運用しているだけではなく、会員情報を集める機会が増えているように感じています。

情報が流出したり、攻撃を受けて不正ファイルを埋め込まれない為にも最低限押さえておきたいセキュリティ対策を紹介します。

実際にあった改ざん事例を以下の記事で紹介しています。

  1. なぜwordpressでセキュリティ対策は必要なのか?
  2. Site Guardプラグインをインストール
      1. wordpressの新規プラグインの追加で【siteguard】と検索をします
  3. 1.ログインURLを変更してwordpresの入り口を隠す
    1. Site Guardプラグインを利用してログインURLを変更する
      1. ログインURLを確認する
      2. Site Guardプラグインログインページ変更画面での設定方法
      3. 実際にログインURLへアクセスをしてみます
    2. Site Guardプラグインを利用してwordpressログイン画面で画像認証を追加する
      1. 【Site Guard】プラグインの【画像認証】をクリック
      2. ログイン画面の画像認証をONにする
    3. Site Guardプラグインを利用してwp-adminである管理画面への不正アクセスを制御
    4. 【Site Guard】>【管理ページアクセス制限】をクリック
    5. 管理画面アクセス制限機能を有効化
  4. 2、アクセスされたくないページへベーシック認証(パスワード保護)をかけます
    1. htpasswdパスワードの生成
    2. .htpasswdファイルを作成
    3. ファイルマネージャーで.htpasswdをアップロード
    4. .htaccessファイルでベーシック認証をかけます
    5. ログインURLアクセス時に認証が追加される
  5. 3.管理画面へのアクセスのログを見る
    1. 【Site Guard】>【ログイン履歴】
  6. ファイルのパーミッションを変更する
    1. パーミッションの変更方法
    2. .htaccessファイルは606
      1. デフォルトでは644
      2. .htaccessファイルにチェックを入れます
      3. パーミッション変更をクリック
      4. 設定をするパーミッションを入力
    3. wp-config.phpファイルは400
    4. その他のディレクトリ(フォルダ)は705
    5. その他のファイルは604
  7. 4. .htaccessファイルでセキュリティを強化
    1. ファイル一覧が表示されるのを拒否する
    2. wp-config.phpとwp-cron.php にアクセス制限をかける
  8. 5.wordpressの各種バージョンを隠す
    1. function.phpへ移動
    2. コードを入力

なぜwordpressでセキュリティ対策は必要なのか?

webサイトでは

  1. 管理画面へ不正ログインをされ、サイトの情報を改ざんされたり情報を盗まれる
  2. wordpress、テーマ、プラグインの脆弱性を狙った攻撃
  3. 一度に大量のデータを送り付ける攻撃

について対策を練らないといけないです。

なぜ他のホームページなどのwebサイトよりwordpressが狙われやすいといわれるのかについてですが

  • 世界中の訳7割がwordpressで作られているので、ユーザーが多い分wordpressが狙われているという印象になりやすい
  • wordpressサイトの構造が全て同じである(ログインURLが同じ、管理画面URLが同じなど)
  • 無料で使えるCMSでありオープンソースなので、ハッカーたちが脆弱性を見つける事が可能である

事が原因ではないかと思います。

例えばですが、あるハッカー集団がwordpressの脆弱性を見つけたとします。世界中の7割が利用するwordpressサイトに同じ攻撃を繰り返せば、セキュリティ対策を怠っているサイトは攻撃のされてしまうという事になります。他のCMSなどの脆弱性を見つけるよりも、wordpressの脆弱性を見つけて攻撃をした方がハッカーにとって効率が良いですよね?数打てばあたるという事です。

wordpressのソースコードは無料公開されていて、誰でも使えてカスタマイズなど自由にしてよいというオープンライセンスなので、ハッカーがwordpressの脆弱性を見つけるにしても都合が良いわけなんです。

また、wordpressのファイル構造は皆さん同じですよね。当たり前ですが、同じwordpressファイルをインストールして使います。そこで問題が出てきます。管理画面のURLが〇〇〇.com/wp-adminであったり、ログインURLが〇〇〇.com/loginという決まりがあります。

実際に運用しているドメイン(〇〇〇.com)に

  1. 〇〇〇.com/wp-admin
  2. 〇〇〇.com/wp-login

と入力してみてください。管理画面やログイン画面が表示されませんか?(Site Guardプラグインでセキュリティ対策を利用している方は表示されないと思います。)

パスワードを数多く攻撃してログインを突破するという事例に関しても、ログインURLがわかっている状況で攻撃をするのか、ログインURLを探してから攻撃をするのかでは、ログインURLがわからないサイトよりもわかるサイトの方に攻撃をしますよね。

wordpressを使わないでくださいという事では全くありません。正しいセキュリティ対策を行い、安全に安心してwordpressを運用をしていくためのwordpressセキュリティ対策の解説を行っていきます!

それでは、早速wordpressのセキュリティ対策を紹介していきますので、実際にサイトでセキュリティを強化していってくださいね!

webサイトのSSL化は必須となります。SSL化については

こちらを参考にしてください。

またxserver独自の標準セキュリティ対策の利用方法については以下の記事を参考にしてください!

Site Guardプラグインをインストール

wordpressのセキュリティを強化できるプラグインが存在します。【Site Guard

Site Guard公式サイト↓↓

SiteGuard WP Plugin | ソフトウェアWAFのJP-Secure
SiteGuard WP Pluginは、管理ページとログインページの保護を主な目的とする、WordPress向けのシンプルなセキュリティプラグインです。インストールするだけで簡単にセキュリティを向上でき、完全日本語対応しています。
ログインURLを変えてwordpressサイトのセキュリティ対策を行うsite guardプラグイン

wordpressの新規プラグインの追加で【siteguard】と検索をします

【今すぐインストール】をクリックして【有効化】をします 

wordpressのセキュリティ対策に有効なログインURLの変更をするsiteguardプラグインをインストール

Site Guardプラグインを有効化にした段階で、ログインURLが自動で変わります。次回からログインができない!という事にもなりかねますので注意をしてください。

1.ログインURLを変更してwordpresの入り口を隠す

まずは、共通で用意されているwordpressのログインURLを変更します。

〇〇〇.com/wp-login.php

〇〇〇.com/wp-login.phpと独自ドメインに【wp-login】または【wp-login.php】を追加するとログイン画面に切り替わります。

wordpressログイン画面はwp-login.phpでアクセス出来てしまう

Site Guardプラグインを利用してログインURLを変更する

worpdressのソースコードを変更してログインURLを変える事は難しいと思いますので、【Site Guard】というプラグインを利用してwordpressログインURLを変更します。

ログインURLを確認する

Site Guardプラグインを有効化にした段階で、ログインのURLが変わります。今までブックマークをしていた方、wp-loginでログインURLを出力していた方は注意が必要です。

ログインURLが何になったのか、確認をします。Site Guardプラグインを有効化にして追加された【SiteGuard】という項目の中の【ログインページ変更】をクリックしてください。

wordpressのセキュリティ対策に有効なログインURLの変更をするsiteguardプラグインでログインURLを変更

Site Guardプラグインログインページ変更画面での設定方法

  1. 【ON】にします。-デフォルトではONになっています。
  2. 変更後のログインページ名ー自動出力されたログインURLを使うか、任意の文字列でログインURLを指定します。
  3. オプションーこのままではwp-adminへアクセスをされるとログインURLへリダイレクトがかかる仕組みになっていますので、ログインURLを変更しても意味が余りまりません。チェックを入れます。
wordpressのセキュリティ対策に有効なログインURLの変更をするsiteguardプラグインでログインURLを変更詳細設定

実際にログインURLへアクセスをしてみます

ログアウトしていただき、設定をしたURLへアクセスをしてみてください。

wordpress管理画面からログアウト

ここで表示されたログインURLはブックマークを取るか、URLを控えておいてください。

これで、wordpressのログインURLを変更する事が出来ました。

その他にもSite Guardで行っておきたい設定があります。

Site Guardプラグインを利用してwordpressログイン画面で画像認証を追加する

wordpressのログインURLは変更をしたので、簡単にはログインURLへアクセスできなくなりましたが、それでも万が一ログインされた場合。任意のパスワードを大量に攻撃してログインをしようとした時に、画像認証があるとパスワードの攻撃+画像認証をしないとログインができないので、さらにセキュリティを強化できます。

【Site Guard】プラグインの【画像認証】をクリック

wordpressログイン画面に画像認証を加える

ログイン画面の画像認証をONにする

まずは設定が【ON】になっている事を確認します。

  • ログインページ
  • コメントページ
  • パスワード確認ページ
  • ユーザー登録ページ

にひらがな・英数字の画像認証を付加する事が出来ます。

wordpressログイン画面に画像認証を加える

Site Guardプラグインを利用してwp-adminである管理画面への不正アクセスを制御

wp-login同様に、管理画面のURLもwp-adminで決まっています。wp-adminへのアクセスに関しても、ログインをしていないユーザーがwp-adminへアクセスしても404エラー、ページがありませんと表示される事が出来ます。

デフォルトではOFFになっている機能です

【Site Guard】>【管理ページアクセス制限】をクリック

wordpress管理画面への不正アクセスを防止

管理画面アクセス制限機能を有効化

【ON】へ変更します。

wordpress管理画面への不正アクセスを防止

2、アクセスされたくないページへベーシック認証(パスワード保護)をかけます

今回はxserverでの解説となりますが

  • ログインURL
  • 管理画面URL

このページにサーバーからベーシック認証を行っていきます。

htpasswdパスワードの生成

htpasswdジェネレーターでhtpasswdをまずは生成します。

  1. ユーザー名を入力
  2. パスワード
  3. 暗号化

の手順でhtpasswdを生成します。

wordpressログイン画面と管理画面をパスワード保護

コードが生成されます

wordpressログイン画面と管理画面をパスワード保護

.htpasswdファイルを作成

メモ帳などで.htpasswdというファイルを作成して、先ほど生成されたコードを入力します。今回はTeraPadを利用しました。

コピペで入力をして【.htpasswd】という名前で保存をします。

wordpressログイン画面と管理画面をパスワード保護

もしも画像のように.htpasswd.txtとテキストの拡張子がついてしまったら、名前を変更で.txtの部分を削除します。

wordpressログイン画面と管理画面をパスワード保護

以下のファイル形式が正しいです。この作業はサーバーにファイルをアップロードした後に名前を変更しても構いません。

wordpressログイン画面と管理画面をパスワード保護

ファイルマネージャーで.htpasswdをアップロード

wordpressが入っている最上位の階層。.htaccessファイルなどが入っている階層に.htpasswdをアップロードします。これで、ベーシック認証をかけ為のパスワードの準備が整いました。

wordpressログイン画面と管理画面をパスワード保護

.htaccessファイルでベーシック認証をかけます

同じ階層にある.htaccessファイルをダウンロードしてPCに保存をしておいてください。

.htaccessファイルはwebサイトを表示させる為の大切なファイルです。間違えた記述をしてしまうとサイトが閲覧できなくなる危険がありますので、必ず編集をしていないファイルをPCに保存しておいてください。

万が一の場合は、修正をしていない.htaccessファイルをアップロードすると元に戻ります。

以下のコードを#BEGIN WordPressよりも前に記述をしてください。#BEGIN WordPressいかに記述をすると、アップデートなどで書き換えられてしまう可能性があります。

<Files wp-login.php>
AuthType Basic
AuthUserFile /*サーバーのパス*/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
require valid-user
</Files>

ログインURLアクセス時に認証が追加される

設定をするとどうなるかといいますと、ログイン画面で認証画面が出てきます

wordpressログイン画面はwp-login.phpでアクセス出来てしまう

さらにユーザー名とパスワードの入力を求められます。一度入力をしてしまえば、ブラウザを閉じるまではベーシック認証でのログインは維持できます。

wordpress管理URLとログインURLにベーシック認証を追加

3.管理画面へのアクセスのログを見る

本当に不正アクセスが行われていないのか?気になりますよね。Site Guardプラグインにはアクセスログ機能も備わっています。

アクセスログを定期的に確認する事で、不正アクセスに気づくことが出来ます。

【Site Guard】>【ログイン履歴】

wordpressのログインログを確認する
  • アクセス日時
  • アクセス結果
  • ログイン名
  • IPアドレス
  • ログイン画面のタイプ

を確認する事が出来ます。ここで、万が一いつもと違うIPアドレスが記載されていたり、結果に覚えのない失敗が多数あった場合は、ログインパスワードを変更してください。

wordpressのログインログを確認する

この説明以降のwordpressセキュリティ対策は少し難しくなります。個人レッスンで一緒に作業をする事も出来ますので、設定をしたいけれど一人では不安・出来ないという方はお気軽にお問い合わせください。

ファイルのパーミッションを変更する

ファイルにはパーミッションと呼ばれる制限機能があります。

  • 読み取り権限
  • 書き込み権限
  • 実行権限

この3つの組み合わせが3桁の数字で決まっています。

  • 自分ー管理者
  • グループーサーバーを利用できるユーザー全体
  • 他人ー第三者

というように、3桁の詳細は左から自分の権限、グループの権限、他人の権限を表します。表し方ですが

  • 7ー書き込み・読み込み・実行可能
  • 6ー読み込み・書き込み可能
  • 5ー読み込み・実行可能
  • 4ー読み込み可能
  • 0ー全て付加

主に使われるパーミッションは

  • 777ー誰でも読み込み・書き込み・実行可能
  • 755ー誰でも読み込みと書き込みは出来るが、実行できるのは自分だけ
  • 666ー誰でも読み書きだけが可能
  • 644ー管理者は読み可能だけど、グループと他の人は読み取りだけ可能

少し難しいので、理解しにくいかもしれません。

パーミッションの変更方法

FFTPの利用に慣れている方はそちらから変更も可能です。今回はxserverの管理パネルからの変更方法をご紹介します。

xserverのアカウントパネルへログインします。【ファイル管理】をクリックします。

サーバー管理パネルとは別ですのでご注意ください

wordpressのパーミッションを変更する

サーバー上のファイル一覧が見れますので、設定をする【ドメイン】をクリックして進んでください。ドメインをクリックした後は【public_html】をクリックします。

.htaccessファイルは606

.htaccessファイルは常時SSL化などで操作をした事がある方もいらっしゃると思います。サーバーを操作する大切ないファイルです。こちらに勝手に書き込みを行うと攻撃できてしまうんです。管理者と他人は読み込みと書き込みが出来るけれど、グループは全ての権限を与えないという設定になります。

まずは.htaccessファイルのパーミッション変更方法を例にご説明をしますね。

デフォルトでは644

【public_html】の直下、またはwordpressをインストールしたフォルダの直下に【.htaccess】ファイルがあります。

デフォルトでは644となっており、本人は読み書き可能だけど、クループと他人は読み込みだけ可能。この設定に対して、グループには権限をなしにする0を設定し604と変えます。

.htaccessファイルにチェックを入れます

以下、ファイルのパーミッション変更方法は共通となります。別のファイルのパーミッションを変更する場合、変更したいファイルやディレクトリにチェックを入れてください。

.htaccessのパーミッションを変更

パーミッション変更をクリック

.htaccessのパーミッションを変更

設定をするパーミッションを入力

新しく設定をするパーミッションを入力して【パーミッション変更】をクリックすれば変更完了です。

.htaccessのパーミッションを変更

wp-config.phpファイルは400

wp-config.phpファイルにはデータベースのログイン情報などの記載があります。こちらもwordpressを運用するためにはとても大切なファイルとなっています。

wordpressが入っているファイル直下、wp-admin/wp-content/wp-include フォルダがある階層と同じ場所にあります。

400になっていない場合は変更をします。管理者だけが読み込み可能でその他は全て付加にします。

wp-config.phpのパーミッションを変更

その他のディレクトリ(フォルダ)は705

その他、ディレクトリと呼ばれるファイルマネージャーで見られるフォルダには705を設定します。管理者はすべての権限を与えますが、グループはすべて不可。他人は読み込みと実行だけ許可という705設定になります。

【themes】と【uploads】は707にします。

その他のファイルは604

ディレクトリの中にある各ファイルは604設定に変えます。管理者に読み書きだけの権限を付加し、グループは全て不可。他人は読み込みだけ許可という604設定になります。

4. .htaccessファイルでセキュリティを強化

.htaccessファイルはサーバー上のファイルやページを制御するファイルになります。

wordpressをインストールした初期の状態では以下のような記述になっています。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^index\.rdf$ /feed/rdf/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

実は、.htaccessファイルはとても繊細なファイルです。

  • 1文字間違えて消してしまう
  • 全角で記述をしてしまう

このような事でサイトが表示されなくなる事があります。必ず.htaccessファイルを修正する前にはファイルをPCへダウンロードして、万が一の時にはアップロードをして元に戻せる状態にしてから作業をしてください。

ファイル一覧が表示されるのを拒否する

例えばディレクトリにアクセスした際にファイル一覧が表示される場合があります。どんなファイルが存在するのかwebサイト上から確認できてしまいます。.htaccessファイルに以下を追記します。

Options -Indexes

1行加えるだけです。

wordpressの場合、一覧が出力されない場合が多いです。こちらの設定は必要ない事もあります。

wp-config.phpとwp-cron.php にアクセス制限をかける

データベースのログイン情報などが記載されていて、攻撃されやすいwp-config.phpファイルです。それに加え、投稿やアップデート通知などの時刻と連動する処理に使われるwp-cron.phpにアクセス制限を加えます。wp-confing.phpファイルはパーミッションを変更しましたが、さらにアクセス制限もかけていきます。.htaccessファイルに以下を追記します。

<FilesMatch "^(wp-config\.php|wp-cron\.php)">
order allow,deny
deny from all
</FilesMatch>

5.wordpressの各種バージョンを隠す

wordpressのバージョンが誰でも確認が出来てしまいます。また、ソースコードを見ると、wordpressを利用しているサイトなのか、また何のプラグインを利用して、何のテーマを利用しているのかという事もわかってしまいます。

この情報が外部へ漏れると、使用しているwordpressやプラグイン、テーマのバージョンで古いものを利用してる事がわかってしまうと、その脆弱性を利用して攻撃をしてくることがあります。

利用しているテーマのfunction.phpに追記をします。

function.phpへ移動

wordpressがインストールされているファイル直下の

【wp-config】>【themes】の中にインストール済テーマファイルが入っています。

有効化しているテーマファイルへ入り【function.php】を編集します。

編集する前に【functino.php】をクリックしてPCにファイルをふぁうんロードしてください。

変更方法は、チェックボックスにチェックを入れ、【編集】ボタンをクリックします。

wordpressのバージョンを隠す

コードを入力

以下のコードをfunction.phpの最下部へ入力します。

// generator
remove_action( 'wp_head', 'wp_generator');

// rel="shortlink"
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );

// WLW(Windows Live Writer) wlwmanifest.xml
remove_action( 'wp_head', 'wlwmanifest_link');

// RSD xmlrpc.php?rsd
remove_action( 'wp_head', 'rsd_link');

//JavaScriptやCSSに付加されるWordPressのバージョン番号(?ver=4.4.2など)を削除します。
function remove_src_wp_ver( $dep ) {
    $dep->default_version = '';
}
add_action( 'wp_default_scripts', 'remove_src_wp_ver' );
add_action( 'wp_default_styles', 'remove_src_wp_ver' );

少し難しいwordpressのセキュリティ設定もありますのが、会員サイトやネットショップを構築される方は必須の設定項目となります!

サーバー側での操作もあるので、一人ではセキュリティ設定が難しい!という方はお気軽にお問い合わせください!オンライン個人レッスンも可能です!

wordpressオンラインレッスン
タイトルとURLをコピーしました