ことろぐ。

◆ 【All-In-One Security】設定の備忘録

  • 2024/02/09
  • WEB制作

何事もセキュリティ対策は?

たいせつ!

ということで、WordPressのセキュリティを強化できるプラグイン「All-In-One Security (AIOS)」の設定方法を備忘録的に残したいと思います。

All-In-One Securityとは

「All-In-One Security」とは、WordPressを運営する上で大切なセキュリティを強化できる無料のプラグインです。
プラグインを有効にすると、左のサイドバーに「WP セキュリティ」という項目が表示されますが、それが「All-In-One Security」です。
クリックすると、以下のような項目が表示されます。

ここでは設定が必要な項目のみを抜粋して紹介していくので、一部項目の紹介はスキップさせていただきます。

設定

WP バージョン情報

上記の「WP Generator メタ情報の削除」にチェックを入れます。
これはバージョン情報を知られないようにする(HTMLに出力しないようにする)設定です。
WordPressのバージョンによっては脆弱性があるものもあり、そのバージョンのサイトは攻撃者に狙われる可能性があるため、それを防ぐためにもバージョン情報は出力しないようにしておきます。
以降、どの項目でも設定を変更したら都度「Save settings」をクリックして設定を保存していきます。

User Security

1.User accounts

ユーザー名が「admin」になっていないかを確認します。
「admin」になっている場合はセキュリティの観点からもよくないので、ユーザー名を変更する必要がありますが、「admin」以外のユーザー名である場合は対応不要です。

ユーザー名(ログインに必要なID)と表示名が同じアカウントがある場合は修正しましょう。
上記のような表示になっていれば修正の必要はないですが、修正する場合はWordPress編集画面の【ユーザー】→【プロフィール】内にある「ニックネーム」を設定し、表示名をニックネームにすることで修正が完了します。

ニックネームはユーザー名を推測されないものにすると安全だ。
そのための変更設定でもあるからな。

続いて「ユーザー番号を無効化」にもチェックを入れます。
これを設定することによって攻撃者にユーザー名が漏洩すること防げるようです。
調べたところによると、WordPressは初期状態で?author=【数字】というアクセスを許可しており、アクセスすると/author/ユーザー名/という投稿者の記事一覧ページが表示され、ユーザー名がわかってしまうとのこと。
ユーザー名が分かればあとはパスワードを推測するのみとなり、攻撃者にヒントを与えてしまうことになりかねないので、それを防ぐためにも必ず設定しておくべき項目のようです。

2.Login lockout

ここではログイン時のパスワード入力を間違えたとき、ログイン試行のロックを有効にする設定を行います。

「ログインロックダウン機能を有効化」にチェックを入れることで、ログインに失敗したらロックされるようになります。

「ロック解除リクエストを許可」の項目は対応不要。
「最大ログイン試行回数」は何回間違えたらロックするかの設定です。
デフォルトでは「3」が入力されていますが、自分が間違えた時にロックされるのを防ぐためにも、「5」に変更しています。
「ログイン再試行時間」や「最小ロックアウト時間」「最大ロックアウト時間」はデフォルトのままです。

つまりこの場合は、「5分間に5回パスワードを間違えたら最大60分間はログインできません」というわけだ。

最後に、メールで通知にチェックを入れます。
誰かがログインに失敗した時にメールで通知をもらうようにする設定です。
万が一攻撃されたときに気づけるように設定するのがオススメです。
「Login lockout」内のそのほかの設定は対応不要なため、スキップして次に進みます。

3.Force logout

「ユーザーの強制ログアウトを有効化」にチェックを入れます。
一定時間が経過するとログアウトするようにする設定で、誰かにPCを操作されてWordPressを利用されるのを防ぐことにもつながります。
「ユーザーはXX分後にログアウトします。」では何分後にログアウトするかを設定します。
今回は「60分」でログアウトするように設定しました。

ぼくたちが記事を書いてても ろぐあうと する……?

その通りだ。60分毎にログインが必要で少々面倒だが、この一手間でセキュリティ向上につながるのなら、設定しない選択肢はないな。

4.手動承認

「新規登録の手動承認を有効にする」にチェックを入れます。
このサイトではアカウント登録をしていただくことはないですが、自動でのアカウント登録を全て無効化する(手動での承認制にする)設定のため、有効化しておきます。

Salt」「Additional settings」は未対応です。
※後日調べて必要そうであれば追記する予定です。

データベースセキュリティ

データベースの接頭辞

現在のテーブル接頭辞が「wp_」になっていないかの確認です。
「wp_」になっている場合は変更が必要ですが、上記の画像にもある通り、必ずデータベースのバックアップを行ってから設定します。
「データベースのテーブル接頭辞を新しく生成」にチェックを入れる、または下の空欄に任意の文字列を入力して独自の接頭辞を設定することで対応が完了します。

バックアップには「BackWPup」プラグインがオススメだ。
詳しくは以下の記事で紹介しているから是非読んでほしい。

File security

1.File permission

ファイルの読み書きや実行に関する権限(パーミッション)を設定する項目です。
上記の画像のように「推奨パーミッションを設定」と表示されている部分をクリックします。
自動で権限が変更されるので、「アクション不要」の表示になっていればOKです。

2.File protection

「WP デフォルトのインストールファイルへのアクセスを防止」にチェックを入れます。
その下の「Delete readme.html and wp-config-sample.php」は、【readme.html】【wp-config-sample.php】を削除する設定ですが、これらのファイルはWordPressを運営する上で不要なファイルであり、アクセスすることでサーバーエラーやデータベースエラーを引き起こす可能性もあるため、削除するのがベターなようです。
「削除」ボタンを押すことですぐに削除ができ、「Automatically delete the files after a WP core update.」にチェックを入れることで、アップデート後に自動で削除されるようになります。

上記2つの項目についても、それぞれチェックを入れて問題ない項目です。

3.フレーム

ほかのサイトからインラインフレームで表示されるのを防ぐ設定です。
念のため有効にしておくと良いとのことなので、有効化させています。

なお、画面上で右クリックやテキストのコピーができなくなる「コピー・プロテクション」については、文章がメインとなるブログではテキスト選択ができなくなるとサイト内検索時などに不便だったりするので、今回は無効にしています。

イラストメインで投稿するサイトなら「コピー・プロテクション」を有効にして、転載防止に活用するのもありかもしれないな。

ファイアウォール

1.PHP rules

「XML-RPC へのアクセスを完全にブロック」にチェックを入れることで、よりセキュリティを向上させることができますが、一部プラグインやスマホ・タブレット用のWordPressアプリが動かなくなるため、アプリなどを使いたい方は下の「XML-RPC のピンバック機能を無効化」のみにチェックを入れるのがオススメです。

上記も全てチェックを入れるのが推奨されているようです。
最後の「高度な文字列フィルター」に関しては、有効化することでこのサイトで使っているタグページを表示させる機能が使えなくなってしまったため、無効化しています。
セキュリティが向上する一方で、一部のアプリなどが機能しなくなってしまう場合があるようです。
本来は推奨されている項目なので、有効化してもサイトの表示などに問題がないようであれば有効化しておきましょう!

動かなくなるかどうかなんて、どうやってわかるの?

こればかりば実際やってみなきゃ分からないのが本音だ。
それ故、項目を有効化するごとにサイトを一通り確認するのが1番手っ取り早い確認方法になるだろうな。

2..htaccess rules

この項目にある上記の設定は全てチェックを入れるのが推奨されているようです。
サイトの動作を確認しつつ、問題なければ有効化するようにしましょう。

3.6G firewall rules

「6Gファイアウォール保護を有効化」にチェックを入れます。
その下に「5G」の項目もありますが、推奨されているのは「6G」のようなので、こちらにチェックを入れています。

4.オンラインのボット

「偽のGooglebotsをブロック」にチェックを入れます。
その下にある「Blank HTTP headers」についてはまだ詳細を調べれていないため、分かり次第追記する予定です。

総当たり攻撃

1.ログインページの名称を変更

ここでは「~~~~/wp-login.php」という世界共通のWordPressログインページ名を変更する設定を行います。
「ログインページの名前変更機能を有効化」にチェックを入れ、ログインページURLの空欄部分に任意の文字列を入力することで、それがログインURLになります。
変更するとデフォルトの「~~~~/wp-login.php」は404エラーとなり、ログインができなくなるため、変更したURLは忘れないように必ずスクショするなどして保管しておきましょう。

「Cookieベースの総当たり攻撃の防止」は上記のログインページの名称変更のさらに高度な設定となるようですが、複雑にすることでバグなどの影響が出る可能性もあるようなので、こちらの設定は行っていません。

2.CAPTCHA settings

ここではログインなどの際にGoogle reCAPTCHAを導入する設定を行います。
設定するにあたりGoogle reCAPTCHAのサイトキーとシークレットキーを取得する必要がありますが、詳しくは以下の記事をご確認ください。

どの場面でGoogle reCAPTCHAを利用するかの設定です。
導入する以上は全ての項目で有効化して問題ないようなので、全ての項目にチェックを入れています。

ログインのホワイトリスト」は特定のIPアドレスのみログインページへのアクセスを許可する設定ですが、さまざまな場所からログインする可能性がある場合は対応不要のためスキップします。
オフィスなどの特定の場所からしかアクセスしない場合は有効にするのがオススメです。

3.404 検出

「404エラー検出とIPブロック」にチェックを入れます。
不正アクセスと見られるHTTPエラー404アクセスが続いた場合に、そのIPアドレスからのアクセスを指定した時間だけロックする設定です。
「404ロックアウト転送URL」はデフォルトの http://127.0.0.1 のままでOKとのこと。
このアドレスが自分のホストを表しており、攻撃者自身のコンピュータにリダイレクトすることでアクセスを防ぐ仕組みのようです。

4.ハニーポット

CAPTCHAと同様にロボットやプログラムからの不正アクセスを防ぐ設定です。
ログインフォームおよびユーザー登録ともにチェックを入れて有効にしておきましょう。

人間には見えず、ロボットにだけ見える入力フォームが作られて、そこに入力があったらロボットと判断される仕組みのようだな。

スパム防止

Comment spam

「Detect spambots posting comments」にチェックを入れます。
スパムボットのコメントをブロックする設定のため、有効にしておきましょう。

このブログのようにコメント機能を使っていなくても有効にして損はないだろう。

スキャナー

File change detection

システムファイルが攻撃者によって変更されていないかを確認できる設定です。
「自動ファイル変更検知スキャンを有効化する」「変更を検知したらメールする」にチェックを入れます。
システムファイルの変更を定期的にスキャンし、変更があったらメールでアラート通知を受け取ることができます。
スキャン時間の間隔は任意で「○時間」「○週間」に変更が可能です。
現在は1日間隔の設定にしています。

まとめ

以上が調べながら実施したセキュリティ設定となります。
「All-In-One Security」で検索するとさまざまな方が設定方法を解説してくれているので、いろんな方の記事を参考にしながら自分のサイトに合うセキュリティ設定をしていくのがオススメです!
以上、ことろぐ。的「All-In-One Security」設定の解説でした!

▼ X、マシュマロ(匿名)での感想もお待ちしてます!