【WordPress】あなたのWordPressサイトのセキュリティは大丈夫？

※簡潔に事実だけを伝えたいので、当記事は以降ですます口調を省略します。

不安を煽るようなタイトルで申し訳ないが、
「セキュリティガチガチに固めているし大丈夫だもん！」という方は
このページから去っていただいて構わない。
「WordPressでブログを作り始めたよ！」という初心者にこそ読んで頂きたいし、
また、「セキュリティよくわかんない」などという方にも読んで頂きたいと思う。
前置きが長くなったが、早速紹介をしていこうと思う。

# はじめに
**偽のサイトにアクセスしようとしていますという警告画面が出て、自分のサイトがクラックされた**
というのが事の発端である。

クラックの記事に関しては、宣伝というわけではないのだがぜひ自分の記事を参考にして頂きたい。
自分はプログラミング初学者であり、セキュリティのセの字もわかっていない、いわゆる駆け出しエンジニアだ。
日々の勉強内容を毎日一か月近く、ブログにして更新していたのだが、クラックでフィッシングサイトにされてしまった。
https://qiita.com/chibiharu02/items/e824a810a84632e2197e

以降に記述することは数々の先輩エンジニアの方々の有益な助言をちりばめているのでぜひ参考にして頂きたい。

## まずはじめに、WordPressは脆弱性が多い
デメリットを以下に並べ立てているが、WordPressを批判しているわけではない

・バージョンをこまめに更新しないとクラックの対象になりやすい。
・Wordpressそれ自体が攻撃されやすいということ。
・サービスブログなので終了する可能性があるということ。

管理はしやすいが、その辺の知識がないとすぐクラックされてしまうだろう。

## じゃあどうしたらいいの？
**１にも２にも３にもセキュリティ対策**

**方針として**
1. 受けても大丈夫なように
2. 最悪乗っ取られたりしても復帰できるように
とこの二点が大事だと考える。

**以下対策リスト**
1. httpからhttpsへの変換を
2. プラグインの導入
3. 二段階認証設定の導入
4. ログインアドレスを変更しておくこと
5. データベースの接頭辞を変えないといけない
6. こまめにバージョンアップをすること　※最優先事項
7. 記事ひとつひとつのバックアップをとっておくこと
8. パスワードを使いまわさない（追記）
少し多いのだがこれくらいなら初心者にも十分可能だと思う。


### 1.httpsへの変換の重要性
これは混合コンテンツの防止する目的である。

自分のブログでやらかした可能性のあるものはおそらくこれが原因の一つしてあるのではないかと考えている。
httpブログの中にhttpsのリンクを埋め込んだ。

「https http 混在」でぐぐることにする。
https://www.chaco-web.com/blog/chrome81-block-https-http-mix-content/

一番最初に出てきたサイトなのだがタイトルからもう恐ろしい。

「**Google Chromeブラウザはhttpsにhttpが混在するコンテンツをブロックします。バージョン79から81で実施**」

先に述べたような https: ページ内に http: リソースが含まれる状況を「混在コンテンツ」と呼ぶ（英語では“Mixed Content”）。

そうした状況でWeb全体の安全性を高めるために、Chromeブラウザで混在コンテンツの扱いを段階的に厳しくしていくことをグーグルが発表した。次のような内容だ（いずれも混在コンテンツ状態にある場合の処理、Chromeのリリース予定は確定したスケジュールではない）。
https://webtan.impress.co.jp/e/2019/11/22/34595/page/1

### 2. プラグインの導入
１．SiteGuard WP Plugin
https://www.jp-secure.com/siteguard_wp_plugin/
SiteGuard WP Pluginは、WordPressにインストールするだけで、セキュリティを向上させることができるセキュリティプラグイン。
管理ページとログインページの保護を中心とした日本語対応のシンプル・簡単プラグインで、以下の攻撃を防ぐことができる。

２．CrazyBone
https://techacademy.jp/magazine/4031
セキュリティを向上させるというより、リスクを発見するためのプラグイン。
WordPressのログイン履歴を監視することができる。自分以外のIPアドレスからのログイン履歴があった場合は、警告が表示される。
悪意ある外部からのアクセスを事前に把握し、いざというときのリスクを回避しよう。

３．wordfence
https://easy-wordpress.work/wordpress/security-wordfence/
セキュリティ対策プラグインのWordfence Webアプリケーションファイアウォールは、PHPベースのアプリケーションレベルのファイアウォールで、サイトへの悪意のある要求をフィルタリングするプラグイン。
ファイアウォールもついていて特に狙われやすいXSSとかSQLインジェクションもある程度弾いてくれる。

>４．英語のドキュメントを読める方は以下プラグインをお勧めする（追記）
本記事の２、３、４、５項（プラグインの導入、二段階認証、ログインアドレス、データベースの接頭辞）で行っていることを以下のプラグイン一つで対応できる。
難点は日本語対応していないところだそう。
All In One WP Security & Firewall
https://wordpress.org/plugins/all-in-one-wp-security-and-firewall/


### 3. 二段階認証設定の導入

こちらもプラグインにはなるが、以下プラグインを紹介した記事があるのでそちらを参照願いたく思う。
https://goworkship.com/magazine/two_factor_authentication/

### 4. ログインアドレスを変更しておくこと

こちらもプラグインでやるのが簡単そうなので、以下に参考にさせて頂いたリンクを掲載する。
http://tanweb.net/2019/01/12/25093/

### 5. データベースの接頭辞（prefix）を変えないといけない
https://hostingstock.net/article/notes/wp-table-prefix/
https://wheelchair-coder.com/314/
こちらはやや難易度が高そうではあるが、興味のある方はぜひやってみてほしい。

### 6. こまめにバージョンアップをすること
WordPress 本体とプラグインを常にアップデートする ことが 一番優先すべき対策 。
優先というより、必須の対策（追記）
これについては説明するまでもないと思うのでやって欲しい。
もし自分がまたWordPressでWebサイトを作る時は徹底してやろうと思う。

### 7. 記事ひとつひとつのバックアップをとっておくこと
前回の記事（上記はじめに参照）で、私は解決方法ともとても言えないのだがデータベースごと削除してしまった。一か月分の記事ともなると相当だ。
もっと記事が積み重なる前に、一つ一つをGithubなどにデータとして持っておいてもいいと思う。

###8. パスワードについて（追記:07/04）
・他の Web サービスなどで登録しているパスワードなどを使い回すと、そのパスワードなどが漏洩したときに WordPress にも不正ログインされる可能性がある（パスワードリスト攻撃）
・パスワードが単純な英単語や英数字だと何回も試されて不正ログインされる可能性がある（総当たり攻撃）
そのため、ログインするユーザーの パスワードは使い回さずに推測されないランダムな文字列（文字数が多ければ多いほど総当り攻撃が困難）に設定する のも対策になる。

# おわり
いかがだったでしょうか。
今後自分がWordPressで作成するときはこれらのことを徹底して行おうと思いました。
セキュリティって難しそうなイメージがありますが、調べてみると意外と難しくなさそうなので、
これらのことをやるだけでも十分にクラックは防げると思います！
この記事を読んでいる方の助けになれば幸いです。
ハッカーに負けないように健全なサイト運営をしていきましょう。

追記（07/04）
コメントで教えて頂いた情報をそのまま記事に追記させていただきました。