どうも、フリーランスのITエンジニア兼ブロガー兼投資家のKerubitoです。
WordPressはサイトやブログを作成する際に超絶便利なCMSなのですが、セキュリティ面が弱いのが悩みどころ。
特に対策しなければ、攻撃者の思う壺だったりします。
それにサイトやブログはレンタルサーバーやVPS上で運用しているケースが多いと思いますが、サーバーへの攻撃も見逃せません。
本記事では、WordPressでサイトやブログを運営する際に最低限実施しておきたいセキュリティ対策をまとめました。
脆弱性とはどんなものがあるのか?
対策を打つ前にどのようなリスクがあるのかを知っておくほうがいいでしょう。
レンタルサーバーやWordPressの脆弱性としてあげられるのは以下のようなものがあります。
・ファイル改ざん
・不正アクセス(踏み台として利用される)
・管理画面への不正ログイン
・プログラムの脆弱性(ブルートフォースアタック、SQLインジェクション、OSコマンドインジェクション、クロスサイトスクリプティング)
・大量データの送信(バッファオーバーフロー)
WordPressは利用ユーザーが多い、管理画面などの構造が把握しやすい、オープンソースといった理由から非常に狙われやすい対象となっています。
WordPressの管理画面のユーザー名・パスワードの複雑化
まずはWordPress側の対策から。
基本中の基本ですが、WordPressの管理画面のユーザー名やパスワードの複雑化はやっておきましょう。
以前、仕事でWordPressの設定をいじったことがあったのですが、ユーザー名が「User」でパスワードも4桁の数字でした。
これだと時間の問題で、その気になれば私でも破れます(笑
たとえば、ユーザー名は「brid_4865」として、パスワードは「Catch@3261:jqv9」なんていうちょっとややこしいのがよいです。
WordPressのバージョンアップデート
これも基本ですが、さぼる人が多い(笑
WordPressはバグや不具合、脆弱性問題に対策を施しますので、アップデートのお知らせがきたら確実にアップデートしましょう。
プラグインのアップデートもセキュリティの観点からはしたほうがいいのですが、これに関してはやったことによって一部が動かなくなったりと悩ましいところでもあります。
未使用のプラグインを削除する
ブログを運営しているとその過程でいろんなプラグインを入れると思います。
しかし、その中の一部は結局無効化され、そのままなんてことが多々あるかと。
このプラグインに脆弱性があると、そこを攻撃者につかれることがあります。
使ってないプラグインがあれば、速やかに削除しましょう。
必要になれば、また入れればいいので。
ログインロック対策をする
上でブルートフォースアタックという脆弱性をあげましたが、これは総当たりでユーザー名とパスワードを入力して、WordPressの管理画面を突破したりするものです。
ユーザー名とパスワードの桁数を多くして、複雑化すればそう簡単には破られませんが、合わせてログインロックもしておくと万全。
ログインロックとは何度かユーザー名またはパスワードを間違えると、ログイン画面をロックする仕組みです。
何度かパスワードを間違えてしまい、ログインがロックされてしまった・・・。
誰しも1度は経験があるんじゃないでしょうか。
ログインロックのプラグインとしては以下のようなものがあります。
- Limit Login Attempts
- Limit Login Attempts Reloaded
- miniOrange Limit Login Attempts
- Limit Attempts by BestWebSoft
- WP Limit Login Attempts
All In One WP Security & Firewallを導入する
All In One WP Security & FirewallはWordPressの総合的なセキュリティ対策を行えるプラグインです。
「難しいことはよくわからないけど、最低限対策しておきたい」
「面倒なことは極力したくないけど、最低限対策しておきたい」
といった人にはうってつけにプラグインです。
All In One WP Security & FirewallではWordPressの重要なファイルへのアクセス制御やファイアウォールの設定、上であげたログインロック対策も行えます。
例として、ログインロックの設定をあげます。
Enable Login Lockdown Feature : チェックを入れると有効になります。
Max Login Attempts : ロックされるまでの失敗回数です。
Login Retry Time Period (min) : ユーザー名・パスワードの入力を「連続して繰り返されている」とみなす時間(分)。
Time Length of Lockout (min): : ロックされてからログインできなくなる時間。
PHPのバージョンを最新化
ここからはレンタルサーバー向けの対策です。
レンタルサーバーはサービスによって違ってきますので、そのあたりは各々の状況によって対策を施してください。
WordPressはPHPというスクリプト言語によって動作します。
このPHPのバージョンを最新にしておくことによって、セキュリティを強化できます。
ただし、PHPのバージョンはレンタルサーバーやWordPressのバージョンとも密接に関連しているので、注意が必要です。
場合によってはPHPを最新化することによって、予期しないエラーが発生したり、プラグインが動かなくなったります。
PHPのバージョンを上げる際には、事前にバックアップを取っておきましょう。
国外IPアドレスのアクセス制限
不正アクセスの大半は海外からです。
なので、国外IPアドレスからのアクセスを制限するとリスクは低くなります。
たとえば、私の利用しているサクラのレンタルサーバー だと、以下がアクセス制限の対象となります。
- メール送信 (SMTP)
- ファイル転送 (FTP/sftp)
- シェルログイン (SSH)
- ウェブアクセス (HTTP/HTTPS 特定ファイルのみ)
ウェブアクセスに関しては、管理画面などの特定ファイルのみが対象となり、ブログの閲覧は可能です。
Webアプリケーションファイアウォールを設定
WAF(Webアプリケーションファイアウォール)は最近はどこのレンタルサーバーも用意しているかと。
ファイアウォールとは、不正アクセスから身を守ってくれるまさに「防火壁」。
機能はレンタルサーバーのサービスによって異なりますが、最低限必要なものが一通り揃っています。
注意点としては、WAFを導入すると、WordPressが誤作動したり、ブログの閲覧ができなくなってしまう場合があります。