WordPressのセキュリティ強化用プラグイン「All in One WP Security & Firewall」の設定の後編です。前半では主にユーザーアカウントやログインに関するセキュリティ設定を行いましたが、このプラグインにはファイアーウォールをはじめ、他にもWordpressのセキュリティを高める機能がありますので、それらの機能を使って安全性を高めましょう。
Database Security – DB Prefix
WordPressはサイトに関する情報をデータベースに保存していますが、デフォルトではデータベースの接頭辞は「wp_」になっています。この接頭辞は、Wordpressのインストール実行のときに任意に変更可能になっていますが、特に変更せずにデフォルトの「wp_」のままにしていると、SQLインジェクションなどデータベースに対する外部の攻撃者から狙われやすくなるため、この機能を使って任意またはランダムな値に変更しましょう。接頭辞を「wp_」以外に設定している方は、特に何もしなくても大丈夫です。
Database Security – DB Backup
自分のWebサイトやブログに何か問題が発生した場合に備えて、Wordpressのデータベースは自動的に、且つ定期的にバックアップを取るようにしておく必要があります。Wordpressのバックアップは、バックアップ専用のプラグインを用いた方が、より細かな設定が可能なので良いと思いますが、この「All in One WP Security & Firewall」にもバクアップ機能があるので、これを使う場合は、ここで設定します。
Enable Automated Scheduled Backups | バックアップ機能を使用する場合はチェックします。 |
Backup Time Interval | 自動バックアップを行うサイクルを設定します。 |
Number of Backup Files To Keep | バックアップしたファイルを保持する数を設定します。 |
Send Backup File Via Email | バックアップしたファイルをメールで送信する場合はチェックしてメールアドレスを入力します。 |
Filesystem Security – File Permissions
WordPressの重要なディレクトリとファイルのパーミッションを一覧化して、セキュリティ上のおすすめ設定になっていないディレクトリとファイルを警告してくれます。ここでおすすめされている設定よりもセキュリティが緩くなっているものは、ボタンを押すだけでおすすめの設定に変更することができます。
最初の設定のときだけでなく、新しいプラグインを導入した場合などは、この一覧を確認して重要なディレクトリやファイルのセキュリティが低下していないかを確認した方が良いでしょう。
Filesystem Security – PHP File Editing
WordPressの管理者用ダッシュボードでは、管理者がプラグインやテーマのPHPファイルを編集することが可能になっています。PHPファイルの編集が必要でなければ、この機能を無効にすることでセキュリティを高めることができます。
Filesystem Security – WP File Access
WordPressをインストールすると、インストールしたディレクトリ内にreadme.htmlやlicense.txt、wp-config-sample.phpといったファイルが作成されますが、これらのファイルにはWordpressのバージョン情報などが含まれていますので、この機能をONにして、これらのファイルへアクセスできないようにしましょう。
Firewall – Basic Firewall Rules
基本的なファイアーウォールの設定を行います。All in One WP Security & Firewallは、.htaccessファイルにコードを書き込むことでファイアーウォール機能を実現するため、前編でも説明しましたが、.htaccessファイルのバックアップを事前に取りましょう。
Enable Basic Firewall Protection | Basic Firewallを有効にする場合はチェックします |
Max File Upload Size (MB) | アップロードできるファイルの最大サイズを設定します。空欄の場合はデフォルト値である10MBが設定されます。 |
Completely Block Access To XMLRPC | WordPressの持つXML-RPC機能を使用しておらず、XML-RPCへの外部からのアクセスを遮断する場合はチェックします。 |
Disable Pingback Functionality From XMLRPC | JetpackやWP iOSなどのXML-RPC機能を必要とするアプリを使用している場合はチェックします。これにより、Wordpressのpingbackの脆弱性に対する保護が有効になります。 |
Block Access to debug.log File | WordPressが作成するdebug.logへのアクセスをブロックする場合はチェックします。 |
Firewall – Additional Firewall Rules
高度なファイアーウォールの設定を行います。.htaccessファイルは予めバックアップを取りましょう。その上で、設定してもサイトに特に不具合が生じないようであれば、全てチェックすることをおすすめします。
Disable Index Views | ディレクトリとファイルのリスト化を無効にします。 |
Disable Trace and Track | トレースと追跡を無効にします。 |
Forbid Proxy Comment Posting | プロキシコメントの投稿を禁止します。 |
Deny Bad Query Strings | XSSを使った悪意のあるクエリから保護します。 |
Enable Advanced Character String Filter | XSSからの不正な文字の一致がブロックされます。 |
Firewall – 6G Blacklist Firewall Rules
Perishable Pressが設計した6Gおよび5Gファイアーウォールのルールを適用することができます。6Gの方が5Gよりも新しいバージョンとなるため、ここでは、「Enable 6G Firewall Protection」にチェックを入れると良いと思います。Perishable Pressは、ApacheなどのWebサーバーやWordpress向けにファイアーウォールのルールを作成・テストしている団体です。
Firewall – Internet Bots
この機能は、GoogleがWebサイトやブログをインデックスするために用いているGooglebotを偽装しているbotによるアクセスを防止します。インターネット上の悪意のあるbotの多くがGooglebotを偽装しているため、アクセスしてくるbotがGoogleが正式に運用しているbotであるかどうかを判別します。但し、偽装Googlebot以外のbotからのアクセスを全て防止できるものではないようです。
Firewall – Prevent Hotlinks
この機能を有効にすると、自分のサイトの画像に対して他人が直接リンクさせることを防ぐことができます。Webサイトやブログの画像は、サーバー上で保存されており、それぞれにアクセスするためのリンクがあります。そのため他人が自分のWebサイトやブログ上でその画像のリンクを組み込むことで表示させることができてしまうのですが、画像を表示させるには自分のWebサーバーのリソースを使用することになります。
そのためこの機能を有効にして、自分の画像を他人が使用できないようにすることをおすすめします。
Firewall – 404 Detection
404エラーやNot Foundエラーは、誰かがWebサイトやブログに存在しないページにアクセスしようとした場合に発生するものであり、削除された記事に誰かがアクセスしようとした場合などは特に問題ありませんが、様々なページに繰り返しアクセスして侵入を試みる不正アクセスのために発生している可能性もあります。
この機能を使用すると、404エラーが発生した場合にアクセス元のIPアドレスを含むログが記録され、画面上で操作すればそのIPアドレスからのアクセスを一定時間拒否することができます。
また、「All in One WP Security & Firewall」のアドオンである「Smart 404 Blocking Addon」をインストールすれば、設定した回数の404エラーを発生させたIPアドレスを自動的に拒否することも可能になります。今回の記事ではこのアドオンについての説明はしませんが、改めて機会があれば紹介したいと思います。
Brute Force – Rename Login Page
WordPressのログインページのURLを変更する機能です。通常、Wordpressのログインページは「サイトのURL/wp-login.php」になっていますが、サイトのURLの後ろに任意の文字列を追加して、ログインページのURLを「サイトのURL/任意の文字列/wp-login.php」に変更します。ログインページが分からないようにするのは、ブルートフォースアタックを防止する上で効果的な方法で、このプラグインの機能を使わずに設定する方法もありますが、All in One WP Security & Firewallの機能を使うと簡単に設定することができます。
Brute Force – Cookie Based Brute Force Prevention
この機能は、WordpressのログインページのURLを秘密の任意の言葉として入力した文字列を含む特別なURLに変更するとともに、ブラウザに対して特別なCookieを発行し、特別なCookieを持つブラウザしかログインページへアクセスできないようにします。
ブルートフォースアタックは、自動的に様々な組み合わせでIDとパスワードを何度も繰り返し試すことで不正侵入を試みるため、攻撃を受けると何度もログインを試行されることでサーバーの負荷が高まってしまうのですが、この機能を使うと攻撃者は特別なCookieを持たないため自動的に指定したURLへリダイレクトされます。
リダイレクトURLは、デフォルトではローカルホストのアドレスとなるため、攻撃者は自分自身にリダイレクトすることになり、攻撃者自身のサーバーなどの負荷を高めることになります。
Brute Force – Login Capcha
この機能を使うと、ログインページやパスワード忘れの場合のページなどにキャプチャを追加することができます。キャプチャは、Google reCAPTCHA v2を使用するか、簡単な計算問題に答えるキャプチャを使用するかを選ぶことができます。
Google reCAPTCHA v2は、色んなサイトでも使用されていますが、「私はロボットではありません」にチェックを入れたり、複数の画像から指定された画像のみを選んでbotではないことを認証するものになっています。簡単な計算問題でも、数字のみではなく、英語と数字の組み合わせによる計算問題となっています。
ログインページやパスワード忘れのページには、ログインキャプチャを設定しておくことをおすすめします。
Brute Force – Login Whitelist
WordPressのログインページにアクセスできるIPアドレスまたはIPアドレスの範囲をホワイトリストに登録することで、登録されたIPアドレスまたはIPアドレスの範囲以外のIPアドレスからログインページへのアクセスを拒否する機能です。
悪意のある攻撃は、日本国外からの発信であることが多いため、この機能で日本国内のIPアドレスの範囲以外からのアクセスを制限するといった使い方もあるかと思います。
Brute Force – Honeypot
この機能は、Wordpressのログインページに非表示の特別なフィールドを追加してロボットによるログインを防止します。特別なフィールドは、人の目には見えませんが、ロボットにはフィールドがあるように見え、ロボットはログインページの全ての入力フィールドに値を入力して送信するものが多いため、このフィールドに値が入力されて送信されると、自動的に発信元のローカルアドレスにリダイレクトされます。
SPAM Prevention – Comment SPAM
この機能は、ブログのコメント投稿におけるスパムを防止するための機能です。
Enable Captcha On Comment Forms | コメント投稿フォームにキャプチャを追加してスパムを防止します。 |
Block Spambots From Posting Comments | 自分のブログのドメイン以外から送信されているコメントをブロックします。 |
SPAM Prevention – Comment SPAM IP Monitoring
「Auto Block SPAMMER IPs」は、指定した回数以上のスパムコメントを送信したIPアドレスを自動的にブロックする機能です。Akismetプラグインまたは管理者がWordpressのコメントメニューからスパムとしてマークを付けたコメントがカウントされます。
「List SPAMMER IP Addresses」は、指定した回数以上のスパムコメントを送信したIPアドレスをリスト表示します。管理者はリストに表示されたIPアドレスに対してブロックを指示することができます。
Scanner – Fire Change Detection
この機能は、Wordpress内のファイルの変更を検出します。悪意のある攻撃者が侵入した場合、攻撃者はコードやファイルをシステムに挿入することで悪意のある行為を実行します。それに対してこの機能では、自動で定期的にWordpress内のファイルが変更されていないかをチェックし、変更がある場合は指定されたメールアドレスにメールを送信し、管理者は自分が意図していない変更が行われていないかをチェックすることができます。
Enable Automated File Change Detection Scan | この機能を使用する場合はチェックします。 |
Scan Time Interval | チェックのインターバルを「週」「日」「時間」で指定します。 |
File Types To Ignore | チェックしないファイルの拡張子を指定します。 |
Files/Directories To Ignore | チェックしないファイルまたはディレクトリを指定します。 |
Send Email When Change Detected | チェックが検出された場合のメール送信先を指定します。 |
Miscellaneous – Copy Protection
この機能を使用すると、Webサイトやブログへの訪問者によるテキストのコピーを防止します。管理者がログインしているときは、管理者がコピーをすることはできます。
Miscellaneous – Frames
この機能を使用すると、他のサイトがframeまたはiframeを使って自分のWebサイトまたはブログの内容を表示することを防止します。
Miscellaneous – Users Enumeration
この機能を使用すると、外部ユーザーやbotが「/?author=1」のようなURLでWordpressのユーザー情報を取得するのを防止します。
Miscellaneous – WP REST API
この機能を使用すると、無許可のリクエストに対するWordpress REST APIアクセスをブロックします。管理者がログインしている場合はWP REST APIへのリクエストの処理が許可されます。
最後に
前編・後編の2回に分けて、Wordpressのセキュリティを高めるプラグイン「All in One WP Security & Firewall」の設定方法について書いてきましたが、このプラグインは結構多機能な割に設定方法も分かりやすいので、おすすめできるプラグインだと思います。
私自身もこのプラグインを導入して気付いたのですが、Wordpressでブログを開設すると、かなり早い時期から外部攻撃者による不正ログインの試行が始まり、毎日のようにログに記録されていました。
「All in One WP Security & Firewall」をインストールして設定してからは、不正ログインと思われるログは殆ど検出されなくなっており、セキュリティが向上していることを実感しています。ただ、このプラグインでは検出できないものもあると思われ、そうしたものはログにも記録されないので、今後も自分のWebサイトやブログを守るためにセキュリティを高める他の方法も学んでいきたいと思います。
学んだものは、このLIFEWORK Blogでご紹介できればと思っておりますので、今後も是非ご覧いただければ幸いです。最後までお読みいただき、ありがとうございました。