セキュリティ対策例
目次
先日、Wordpressで採用サイトを制作する際にネックになるのがセキュリティだと先輩から聞かされました。多くの企業でWordpressが採用されていますが、慎重な企業も多く、これが担保できれば、クライアントに提案しやすいとのこと。どんなウェブサイトでも100%のセキュリティを確保するのは難しいですが、その中でWordPressが狙われる理由は世界のウェブサイトの3割を占め、攻撃の研究が容易であることが大きいようです。下記、参考。
一方で、アメリカのホワイトハウスは2017年から公式ウェブサイトにWordpressを採用しました。間違いなく世界中のハッカーから狙われるであろうウェブサイトであり、絶対情報流出させてはいけないウェブサイトですから、セキュリティにも万全の対策を施していると考えられます。実際にどのようなセキュリティ対策がホワイトハウスのウェブサイトで講じられているのかはわかりませんが、Wordpressを使用しながらも、セキュリティを強化する方法があるはずだと思い、その方法を調べてみました。せっかくなので、調べた内容をシェアします。万全ではありませんが、現時点で、これらに対応するだけでも情報流出のリスクを下げることができるかもしれません。
攻撃されるリスクを下げる方法
攻撃されるリスクを下げる方法をいくつか見つけました。
ログインアドレスの変更
WordPressの脆弱性の原因の一つに、誰もが簡単にログイン画面にたどり着ける仕様があります。それを回避するため、SiteGuard WP Pluginなどのプラグインでログイン画面のURLを変更し、総当たり攻撃の可能性を減らします。
ログインユーザー画面の排除
ユーザー名を知られるとログインのIDが特定されるので、ログインユーザー画面を無くし、特定されることを防ぎます。プラグインやfunctionsに記述することで対策できます。下記参照。
デフォルトのユーザー名の変更
デフォルトで使用される「admin」を削除し、新たなユーザー名を登録。それにより、特定されたログインIDを減らします。下記参照。
wp-config.phpの保護
データベースへのアクセス情報が記載された各種設定ファイルであるwp-config.phpに外部からアクセスできないようにします。.htaccessに下記を記述します。下記参照。
<files wp-config.php>
Order allow,deny
Deny from all
</files>
パーミッションの設定変更
.htaccessのパーミッションを「604」か「606」に。wp-config.phpのパーミッションを「400」か「600」に変更すると良いそうです。下記参照。
ヘッダーのバージョン情報を削除
バージョン情報が攻撃の手段を示唆する可能性があるので、その情報を削除します。functionsに以下を記述。
remove_action( 'wp_head', 'wp_generator' );
バージョン管理とプラグイン管理
WordPressのバージョンを最新の状態に保持し、不要なプラグインを削除します。この対応により、SQLインジェクション攻撃・ゼロディ攻撃・クロスサイトスクリプティングなど脆弱性につけこんだハッキングをかわす狙いです。サーバー会社が用意しているWAFを用いて対策することもできます。
検索結果及び404ページをnoindexに
検索結果や404ページを悪用したスパム。それを防ぐ対策です。大手企業でも被害を受けているので、盲点の一つのようです。これ自体は大事に至らないようですが、他人にウェブサイトを操られていることが何か嫌ですよね。下記参照。
コメントをオフにする
設定のディスカッションにある「新しい投稿へのコメントを許可」のチェックを外す。これでコメントスパムに悩まされません。
攻撃を受けた後の影響を最小限にする方法
攻撃後の影響を小さくする方法をいくつか見つけたのご紹介します。
コーポレートサイトのサーバーと切り離す
コーポレートサイトのサーバーに侵入されるリスクを避けるため、採用サイトを別サーバーとして用意するのが良いでしょう。ランニングコストはかかりますが、もし採用サイトに侵入されてもコーポレートサイトを守ることができます。
セキュリティに力を入れているサーバー会社を選択
ある程度、セキュリティ対策しているサーバー会社を選択するべきでしょう。ネットで調べてみた感じでは、WAFを提供しているサーバー会社が良いそうです。ちなみに、有名なサーバー会社でもスキをつかれ、約8500件のWordpressサイトの改ざんを許すことになりました。いかに漏れの無い対策が難しいかがわかります。下記参照。
WordPress内で個人情報を管理しない
エントリー者をWordpressで管理していた場合、SQLインジェクション攻撃などでハッキングされると、個人情報が流出する可能性があります。管理していなければ、流出するのは登録されたユーザーの名前やメールアドレスくらいですから、最低限の被害に防げます。設定画面で苗字や名前を入力しなければ、メールアドレスだけで済みます。
その他の方法
上記方法以外の方法です。当たり前と言えば、当たり前ですが、念の為、記載しておきます。
SSL対応
通信内容の盗聴・改ざん、第三者によるなりすましを防ぎます。加えて、Webサイト表示の高速化を図ることが可能。サーバー会社によっては無料で対応できます。下記参照。
FTPを使わない
サーバーにデータをアップロードする際、FTPを使用すると暗号化されていない状態でサーバーと通信することになります。暗号化された状態で通信するにはFTPS・SFTP・SCPなどが知られているそう。ちなみに私はWinSCPを使っています。下記参照。
IDとパスワードを使い回わさない
複数人でウェブサイトを管理する場合、一つのIDとパスワードを複数人で使い回すケースが想定されます。その場合、どこからIDとパスワードが漏れるかわかりません。漏れるリスクを考えると、多少手間でも個々人で管理するべきだと思います。