セキュリティ対策

ホーム > WordPressの記事

WordPressはセキュリティの問題が不安だと言われていますが、実際はWordPressそのものがセキュリティに問題があるのではなく、Webの知識が全くなくホームページを作った事すらない人が、本を片手に何カ所かクリックするだけで導入できてしまうほど簡単である事に原因があります。

そのため、世界中に同じようなセキュリティ上の洞穴を開けたWordPressのサイトが大量に存在し、そのサイトを自動的に探し出して狙うプログラムが、ホームページのデータを改ざんして、ハッキングの中継地点として利用したりしています。

ここではWordPressを導入するなら最低でもやっておきたい対策を紹介して、セキュリティに関する知識を理解できるようにまとめてみました。

SiteGuardの導入

WordPress対応のセキュリティ対策プラグイン SiteGuard WP Pluginを元にそれぞれのセキュリティ対策について、解説します。

管理ページアクセス制限

管理ページからログインしたIPアドレスを保存し、そのIPアドレス以外からのwp-admin以下へのアクセスを禁止します。

つまり不正アクセスは、何も正面玄関から来るとは限らないわけで、ログインせずに何かしらの不正処理を行おうとするアクセスに気を付けなくてはなりません。

ログインページ変更

ログインページをランダムな名前に変更します。管理者すらログインURLがわからなくなってしまうので、この変更は定期的にされるわけではありません。

WordPressをインストールする時に、未入力でも最初から用意されているデフォルト設定は、世界中のセキュリティ認識の甘い製作者達が採用しているものなので、同じ不正アクセスプログラムが狙い放題というわけです。

画像認証

ハッカーは人間とは限りません。人間が故意に狙った不正アクセスよりも、網漁業的に狙ったプログラムの被害にあうケースがとても多いです。そんな時に、ログインしようとする者が人間であるかどうかを確認する場合に役立つのが、この画像認証です。

ログイン詳細エラーメッセージの無効化

不正にログインしようとした時に、失敗したその理由をいちいちエラーメッセージで表示してしまえば、それは不正ログインを成功させるためのヒントを与えているようなものです。

ログインロック

不正ログインを試みようとするのは、定期的に実行するプログラムだったりします。プログラムは機械的にログインを試みて、失敗を繰り返して、正しい情報を探ろうとするので、明らかに機械だとわかるような処理を繰り返している場合、ログインを拒否する機能はとても役立ちます。

ログインアラート

WordPressにログインがあると指定のメールアドレスにお知らせが届きます。身に覚えのない急なログインは怪しいですね。

フェールワンス

正しい情報を入力しても、必ず1回だけログインが失敗します。これは扉を一回ノックしただけでは無視し、2回ロックされたら開けるという仲間内の約束事に似ています。

XMLRPC防御

Pingbackや、XMLRPCを無効にします。

ブログの人気の秘訣は、更新頻度の高さ。管理画面からログインして、投稿画面から入力して、投稿するのは面倒臭いです。一日に何度も更新する事を売りにしたブログですとなおさら。そんな時はメールを送れば自動で投稿できたりと、正規なやり方ではない簡単な遠隔投稿ができると、とても便利です。

しかし、不正アクセスを試みる人から見ても、こんなに便利な話はありません。遠隔で悪い事が出来ちゃうわけですから。

この便利を実現するのが、Pingbackや、XMLRPCと呼ばれる機能です。そもそも、この機能をまとめて無効にしてしまえば、セキュリティの安全度はグッと引きあがります。

更新通知

WordPress本体やプラグインの更新があった場合に、お知らせされます。更新もせずに、長い間放置してあるプログラムほど不正アクセスを試みる者からうれしいものはありません。

WAFチューニングサポート

WordPressの作業中に急に出る403エラーは、WAF(Web Application Firewall)が不正動作を勘違いしてエラーを出してしまっている場合があります。その除外ルールを記述したhtaccessを視覚的に編集するための設定です。WAFについては次の項目で詳しく説明します。

WAFへに対応について

メールフォームを設置したり、英語版のページを作っている時など、WordPressを操作していたら、急に403エラーが出るようになり。同じページを編集すると、どうやっても403エラーが出てしまう場合があります。

原因を検索すると、どうやらWAFというのが原因のようで、サーバ側の設定でWAFを無効にしたらエラーが出なくなった。という事があります。

WAFとはWeb Application Firewallの略で、このプログラムは、特定の通信内容を、外部からの不正アクセスや、内部からの不正プログラムの実行と判断する機能を持っています。

WordPressの記事を編集したり、プラグインを実行する時に、このプログラムが「不正」と判断するような文字列が含まれていたり、プログラムの羅列が、不正プログラムっぽい形をしていたりしたのでしょう。

これを無効にしてしまうと、いざ本当に不正プログラムが実行された時に、判断してもらえなくなってしまいます。

そこで、WAFそのものの無効化ではなく、htaccessファイルで、特定のシグネチャを無効にすると良いです。

シグネチャとはWAFがガードするプロセスの事で、レンタルサーバなどのサービスでは、どのシグネチャが何時何分何秒にどんなプログラム実行をガードしたかのログが残っていますので、そのログを見て、WordPressの特定の処理をガードしているシグネチャを除外します。

<IfModule mod_siteguard.c>
 <Files post.php >
  SiteGuard_User_ExcludeSig sqlinj-10
  SiteGuard_User_ExcludeSig sqlinj-11
  SiteGuard_User_ExcludeSig sqlinj-12
 </Files>
</IfModule>

しかし、シグネチャのログを探すのは大変な場合もありますし、そのシグネチャを本当に除外してしまって良いのものかどうか?も不安だったりします。あるいは、シグネチャを除外して一時的に無効化されても、時間が経つと他のシグネチャが新しくガードしてきて、除外シグネチャが10個くらい並んでいるのに、結局解決されなかった。という場合もあります。

そんな時は、製作者や投稿者のIPアドレスからのアクセスの場合はWAFを無効にする。といったような設定を行う事もできます。

<IfModule mod_siteguard.c>
 SiteGuard_User_ExcludeSig ip(000.000.000.000)
 SiteGuard_User_ExcludeSig ip(000.000.000.000)
</IfModule>

データベースのプレフィックスを変更する

WordPressはインストールする時に、何も押さなくても、何も決めなくても、いくつかのクリックだけで導入できるように、デフォルトの設定が用意されています。そのデフォルトの設定に従って、そのままインストールすると、世界中に存在するデフォルト設定のサイトの仲間入りします。

そして、ハッカーが仕掛けた大きな網にザザーッとまとめてすくわれる事になります。

まずはログインネームでadminとか使っているようでしたら、絶対に変更しましょう。

更に、WordPressの入り口は管理画面だけとは限りません。データベース本体を直接狙う事もできます。そこで、ログインネームがadminで、デフォルト設定のテーブルが並んでいたら、どんなに管理画面へのアクセス制限を固めても、裏口は開いてますと言っているようなものです。

WordPressをインストールする時に、データベースの頭文字は必ず設定し、もしレンタルサーバのサービスによって、その設定が無いようでしたら、インストール後に手間をかけてでも、プレフィックスの変更をしましょう。

SSLに対応する

今の時代、URLはhttpではなく、httpsで始まる事が必須の時代になりました。httpsで始まるURLのサイトは、SSL(Secure Sockets Layer)またはTLS(Transport Layer Security)に対策したサイトであるという事になります。

どういう事か?というと、通信が暗号化されるという事です。ユーザーがアクセス。またはサイト内のプログラムが交信する時に、いちいち暗号化されます。するとメールフォームやPHPなどのプログラムの通信が暗号化され、何かしら悪意を持って中継プログラムが挟み込まれても、理解不能な暗号となって、大事な情報が守られます。

サーバ側の設定。または借りているサーバのサービスの中を探して、SSLに対応しましょう。

管理画面に認証をつける

wp-admin以下には、必ずBASIC認証などの、ログイン認証をつけて、2重にログイン対策してください。認証はレンタルサーバなどでは当然にように用意されていますし、自分でhtaccessファイルを編集しても簡単に設置する事ができます。

ファイルの一覧表示を無効にする

サーバ上で、index.htmlやindex.phpなどがないディレクトリに/だけでアクセスした場合、何が表示されますか?必ずご自分のサイトをご確認ください。

ページが存在しません。と表示されるようでしたら、特に対策しなくても問題ありませんが、中にはディレクトリの中身がズラッと一覧表示される場合もあります。家の中を見せびらかしているようなもので、こんな危険な事はありません。中身がない空白のindex.htmlを作って、サーバにアップロードしておいてください。

サーバを移転した時に、移転元のサーバでは、ページが存在しません。と表示されていたのに、移転先はファイルの一覧表示する仕様になっている場合もありますので注意が必要です。

バージョンアップは必ずする

有名なOSや、販売されている有名なアプリケーション。またネット上で動いているプログラムは、いつもハッカーに狙われています。どんなにセキュリティを強化しても、必ず破られて、いたちゴッコを続けます。だからこそ、使う側もそのいたちゴッコに合わせて回ったほうが良いです。

いたちゴッコを辞めてしまうと、ならばその尻尾は私が貰おうかと狙われてしまいます。

WordPress本体、そしてプラグインは定期的にバージョンアップし、最新の状態にしておきましょう。

結局守るのはIDとパスワード

ハッキングはIDとパスワードを盗んだり、予測したりする事から始まります。どこかから流出したパスワードを元に、IDに照らし合わせたり、IDからパスワードを予測したりして、何度も試みます。

結局のところ、IDとパスワードを定期的に変更してしまう事が、一番のセキュリティ対策だったりします。毎日とは言いませんが、毎週、または毎月パスワードを変更しているようなサイトを狙うハッカーの労力は相当のものです。

最高のセキュリティ対策として、定期的にパスワードを変更する事をお勧めしますが、WordPressのサイトを作って、最初に設定したパスワードから変更している人は世界に何割くらい存在するのでしょうか?

次はWordPressをローカル開発する方法について説明します。