Web tan tan !

中小企業のぼっちWeb担のブログ

WordPressが狙われた!500エラー頻発!すぐにできるセキュリティ対策

Web担当のうたまるです。どーもです。

先日、私のWordPressサイトがサイバー攻撃を受けました。ビックリです。突然、サイトの表示が異様に重くなり、500エラーが頻発しました。

幸いテスト用だったので、すぐにWordPress自体を削除することで、とりあえずの問題は解決しましたが、改めてWordPressのセキュリティ対策を見直しました。

そんなに難しくないので、セキュリティ対策をまだやってないよ、という方は是非、やってみてください。

自分のサイトは大丈夫、って思ってない?

具体的な対策の前に「なんで、セキュリティ対策をするのか?」をちょっとだけ考えてみました。WordPressは狙われやすいとよく言われますが、なんとなく他人事のように思っていないでしょうか?

私も「まさか自分のサイトが」と思っていた節があります。そして、その「まさか」が起こってしまいました。

  • 狙われるのは大企業だけでしょ?
  • ECサイトじゃないし、個人情報を持ってないよ?
  • アクセスの少ないサイトなんて誰も狙わないでしょ?
  • 面倒だし、別に何もしなくても大丈夫でしょ?

なんて、思ってるとキケンです。

ニュースで見るような、情報漏洩を狙った大企業へのサイバー攻撃もありますが、単純に嫌がらせや興味本位のいたずらで攻撃を仕掛けてくる悪者もいます。もっと怖いのは、自分がサイバー攻撃の加害者にさせられることです。

例えば、

  • スパムメールの踏み台にされる
  • スパムサイトへのリンクを貼られる
  • 閲覧者にも感染するウイルスを埋め込まれる
  • フィッシングサイトへリダイレクトされる
  • Dos攻撃の踏み台にされる

自分のサイトに勝手にプログラムを書き込まれて、他のサイトを攻撃するための踏み台や、閲覧者に危害を加えるための道具にされてしまいます。

サイバー攻撃の目的が「あなた」ではなく、「見ず知らずの他の誰か」かもしれません。知らないうちにサイバー攻撃に加担させられたり、下手をすれば犯人だと疑われるかもしれません。

そう考えるとちょっと怖いですよね…。

中小企業もターゲットにされやすい

セキュリティサービス会社のシマンテック(ウイルス対策ソフトで有名な会社)の調査では、サイバー攻撃を受けた会社の内、中小企業が占める割合が年々増加していると言われています。

中小企業が狙われやすいのは、「セキュリティに不備があることが多い」からです。例えば、中小企業のWeb担当ってこんなケースが多くないでしょうか?

  • Webに詳しい人材が少ない、いない
  • Web担当が他の業務を兼任していて忙しい
  • Webにコストをかけられない
  • セキュリティ対策の知識がない

私もこの中の1人です。会社のWeb担当は私だけですし、予算もそれほどかけられません。

大企業であれば、社内にWeb制作者が何人もいたり、外部に依頼する予算があったりするかもしれません。しかし、中小企業の場合はそうもいかず、セキュリティの不備を抱えていることが多いため、攻撃者から見れば「攻めやすいターゲット」になってしまいます。

さらに、WordPressは無料で誰でも使えるため、攻撃者が脆弱性を探して攻撃を仕掛けてきます。WordPressはシェアが大きいので、 脆弱性を1つ見つければ、多くのサイトを一度に狙えます。攻撃者から見れば効率の良い攻撃対象ということになります(怒)。

つまり、セキュリティ対策をしていないWordPressはめちゃくちゃ狙いやすいカモということですね…。

次の項目で具体的なセキュリティ対策についてご紹介します。「あっ…やばいかも…」と思った方は、是非、やってみて下さい。

うたまる
うたまる

全部はできなくても、何もしないよりはましなので、できそうなものからやってみて下さい。

インストール時に行うセキュリティ対策

データベースのテーブル接頭辞を変更する

WordPressをインストールする時にこんな画面が出てくると思います。この時に【テーブル接頭辞】を変更します。

デフォルトのままだとデータベースのハッキングが容易になってしまうので、【wp_】の部分を他人が予測しにくい文字列に変えておきましょう。

(例)wp_  ⇒ example_ ※最後のアンダーバーを忘れずに。

データベースのテーブル接頭辞を変更する

ユーザー名にadminを使用しない

【admin】のような他人に推測されやすいユーザー名を使用しない。ユーザー名は後から変更することができないので、インストール時に推測されにくいユーザー名をつけましょう。

もし、すでに【admin】を使用している場合は、ユーザーIDを追加することで対応できます。

  1. 新しく管理者権限のユーザーIDを作る
  2. 一旦、ログアウトする
  3. 新しく作ったユーザーIDでログインする
  4. adminアカウントを削除する

他にもadministorator 、test(test123、testuserなどもNG)、ドメイン名(ドメイン名+adminなどもNG) と言った、推測されやすいユーザー名はやめておきましょう。

インストール後に行うセキュリティ対策

パスワードを複雑でランダムな文字列にする

【test】や【password】など特定されやすいものは使わない。辞書にある単語を片っ端から組み合わせてパスワードを突破する【辞書攻撃】という攻撃もあるので、パスワードは意味のない複雑な文字列を設定する。

(例)YmMnk6D$Xv-x ←大文字、小文字、数字、記号を含んだランダムな文字列

うたまる
うたまる

複雑なパスワードを考えるのがめんどい方はこんなツールがおすすめです。英数字や記号を含んだパスワードを自動で生成してくれます。

ユーザー名を表示させない

デフォルトの設定では、ユーザー名がブログの投稿者として表示されるようになっています。これはログインIDを公開しているようなものなので、ニックネームが表示されるように設定を変更しておきましょう。

管理画面の【ユーザー】→【あなたのプロフィール】からニックネームを表示するように設定できます。

テーマやプラグインは公式のものを使う

公式に公開されているテーマやプラグインは、脆弱性やバグがないか厳しく審査されています。もし、脆弱性やバグが見つかった場合は、バージョンアップで対応されることが多いので、テーマやプラグインは公式のものを使う方が安心です。

プラグインを選ぶときの目安です。

  • 頻繁に更新されている(数ヶ月以内)
  • 利用しているWordPressのバージョンに対応している
  • インストールされている数が多い
  • 評価が高い

wp-config.phpのセキュリティを強化する

wp-config.phpはデータベース情報が記載された重要なファイルです。このファイルにアクセスされてしまうと、データベースを操作されてしまう危険性があります。

方法1:wp-config.phpへのアクセスを制限する

wp-config.phpファイルと同じ階層に.htaccessを設置し、下記の内容を記載する。これで外部からアクセスできないようにします。

<files wp-config.php>
order allow,deny
deny from all
</files> 

方法2:wp-config.phpのパーミッションを変更する。

wp-config.phpファイルのパーミッションを[400]に設定する。管理者のみ読み取り可能にします。

Akismetでスパムコメントをフィルタリング

AkismetはWordPressのコメント欄に入ってくるスパムコメントを自動的にスパムフォルダへ振り分けてくれます。英語などの訳の分からないコメントや広告といった迷惑なコメントを専用のフォルダへ振り分けてくれます。サイト内にフォームやコメント欄がある場合に有効です。

SiteGuard WP Pluginでセキュリティを強化

WordPressを保護するための無料プラグインです。日本語表示なのと、設定が簡単なので使いやすいです。各項目の設定内容をご紹介します。

管理ページアクセス制限
ログインが行われていない接続元IPアドレスに対して、管理画面へのアクセスを404(Not Found)で返します。
ログインページ変更
WordPressのログイン画面のURLは【https://example.com/wp-admin】のように最後がwp-adminになっています。初期設定のままだとログイン画面のURLがバレバレなので、特定されにくいURLに変更しておきましょう。
画像認証
ログインページに画像認証を追加します。不正ログインを行う自動プログラムは画像の文字を判別できないため、セキュリティの強化に有効です。また、表示される画像の文字列をひらがなに設定しておくと、海外の攻撃者が攻撃しにくくなります。
ログイン詳細エラーメッセージの無効化
デフォルトの設定では、ログインエラー時に「ユーザー名が違います」「パスワードが違います」と表示されるため、不正ログインのヒントになってしまいます。どれが違うのかを分からなくすることでIDとPWを特定されにくくします。
ログインロック
ログインの失敗を繰り返す接続元を一定期間ロックします。
ログインアラート
ログインがあったことをメールで知らせてくれます。心当たりのないログインがあった場合は、不正ログインの可能性があるのでパスワードを変更するなどの対応をしましょう。
フェールワンス
ログイン情報が正しくても、あえて1度ログインを失敗させます。
XMLRPC防御
ピンバック機能を無効化する。これにより大量のピンバックを送信して、サーバーに負荷をかける攻撃を防ぎます。(過去にこの機能を利用した大規模なDDoS攻撃がありました。)
更新通知
WordPress、プラグイン、テーマの更新が必要になった場合にメールで通知してくれます。
ログイン履歴
ログインを試みた【ユーザー名】【IPアドレス】の履歴が確認できます。もし、ログインエラーを繰り返しているなど、不審な履歴があった場合は、該当のIPを制限したり、ユーザー名を削除するなどの対策をしましょう。

定期的に行うセキュリティ対策

WordPress本体、テーマ、プラグインを最新の状態にしておく

WordPressに脆弱性が見つかった場合は、随時アップデート版が公開されます。新しいバージョンが公開されたら、早めにアップデートしましょう。古いバージョンのまま使っていると、脆弱性を狙った攻撃をされるかもしれません。

これは、WordPress本体だけでなく、テーマ、プラグインも同様ですので、常に最新のバージョンに更新しておきましょう。

定期的にバックアップを取っておく

どんなにセキュリティ対策をしても100%安全と言うわけではありませんので、定期的にバックアップを取っておきましょう。

バックアップを取るのは【テーマファイル】と【データベース】のバックアップです。「テーマファイルってどこ?」「データベースって何?」という方は【BackWPUp】などのプラグインを使ってください。

サーバー側のセキュリティ対策

SSLを導入をする

SSLとは、ブラウザとサーバー間の通信を暗号化する技術のことです。

例えば、WordPressにログインする際に、ログイン画面に入力したIDとパスワードの情報がサーバーに送られます。この時にSSL対応をしていれば、万が一、第三者にデータ通信を盗聴されても、情報が暗号化されているため読めません。

逆に、SSLが導入されていないと、WordPressが乗っ取られたり、個人情報が流出したりするリスクが高まります。

WAFを導入する

Web・アプリケーション・ファイアウォールの略。Webアプリケーション(WordPressなど)の脆弱性を悪用した攻撃を防ぐセキュリティ対策です。Webサーバーの通信を解析・検査し、不正アクセスからWebサイトを保護してくれます。

WordPressはどんな攻撃をされる?

「サイバー攻撃」と言われてもどんな攻撃をされるのか、いまいちピンとこないので、具体的にどんな攻撃を受けやすいのかご紹介します。攻撃者がどこを狙ってくるのかを知っておくと、対策のひとつひとつの意味が理解しやすいです。

管理画面の情報が狙われる

ブルートフォースアタック(総当たり攻撃)
IDとパスワードを破り、不正にログインする攻撃です。総当たりという言葉どおり、ID・パスワードに使われていると推測される文字列を1文字ずつ変えながら、正解が出るまで総当たり的に試す方法です。また、IDとパスワードに使われやすい単語を片っ端から試す【辞書攻撃】と組み合わせて攻撃される場合もあります。

原始的な方法ですが、時間を掛ければいつかは正解にたどり着くという確実性を持った攻撃です。人の手でやると気が遠くなるような作業ですが、プログラムにやらせれば短時間で破られてしまいます。

有効な対策

  • パスワードを複雑な文字列にする
  • 推測されやすいIDを使わない
  • ログインURLを変更する
  • 画像認証を入れる

もしも、ログインURLがデフォルトのままで、ログインIDがadmin、パスワードが単純な文字列だったら…どうなるか分かりますよね?簡単にログイン画面を突破されてしまいます。

脆弱性を突いてくる

SQLインジェクション
WordPress本体やテーマ、プラグインに脆弱性があった場合、その欠陥を利用してデータベースの改ざんや破壊などを行う攻撃。Webサイトの改ざんや情報漏洩の被害につながります。
クロスサイトスクリプティング
WordPress本体やテーマ、プラグインに脆弱性があった場合、その欠陥を利用して悪意のある不正なスクリプトやHTMLをサイトに埋め込む攻撃。フィッシング詐欺やウイルス感染などの被害につながります。

有効な対策

  • WordPress本体、テーマ、プラグインは最新の状態にしておく
  • WAFを導入する

サーバーに過剰な負荷をかける

Dos攻撃
大量のデータを送り付け、サーバーに過剰な負荷をかける攻撃。サイトにアクセスしづらくなったり、サーバーがダウンしてしまう。
DDos攻撃
不正に乗っ取った複数のコンピューターのIPアドレスを使ってDoS攻撃を仕掛ける行為。WordPressのPingback機能を悪用した大規模なDDoS攻撃の例もある。

有効な対策

  • WAFを導入する

WordPressを狙った攻撃は意外と身近な問題かも

今回、狙われたWordPressは私個人のテストサイトでした。コンテンツもほとんどなく、アクセス数も0でした。また、友達がWordPressで作った個人ブログもページ改ざんの被害にあったことがあります。

個人のサイトまで攻撃されたということは、サイトの規模やアクセス数に関わらず、セキュリティの甘いサイトは狙われるということです。サイバー攻撃は意外と身近なところまで来ているのかもしれませんね。

もし、WordPressを使ってるけど、「セキュリティ対策はなんもやってない」と言う方は是非、やってみてください。

Related

WordPressの想定外の表示崩れを事前にチェック!テーマユニットテストデータ

WordPressのテスト投稿の手間を短縮できるテーマユニットテストデータを使用した時の備忘録です。想定外の記事を投稿された場合の表示崩れもチェックできるのでお勧めです!