ぼくのかんがえたさいきょうのWordpress@AWS環境(セキュリテイ設定編)

# はじめに
当記事は[ぼくのかんがえたさいきょうのWordpress@AWS環境](https://qiita.com/Shi-nakaya/items/7fb6d16c0adb5c7b47fd)にて記載している[作成手順](https://qiita.com/Shi-nakaya/items/7fb6d16c0adb5c7b47fd#作成手順)の
1. [WordPress入りのLightSailを作成](https://qiita.com/Shi-nakaya/items/a882963cf14dcc64fcac) 
2. [Route53にてドメインを取得](https://qiita.com/Shi-nakaya/items/edcd86a3a8811654573b)
3. [取得したドメインを元にSSL証明書を発行](https://qiita.com/Shi-nakaya/items/d35b5a0f7fb7a7689fce)
4. [CloudFront構築](https://qiita.com/Shi-nakaya/items/b00a04e07ca6e24887ca)
5. [DNSの設定](https://qiita.com/Shi-nakaya/items/30d2339c3570d012ca62)
6. [セキュリティ対策](https://qiita.com/Shi-nakaya/items/8812da74f5dca200cf45)← ここの手順の詳細です。

Wordpress構築後のセキュリティ設定を行なっていきます。

設定手順は下記の通りです。
- 初期ユーザーパスワードの確認
- 日本語設定
- 管理者ユーザの追加
- デフォルトの管理者初期ユーザの削除
- SSL対応のプラグイン(SSL Insecure Content Fixer)をインストール
- SSL Insecure Content Fixer の設定
- ログイン画面のURL変更(プラグイン Login rebuilderを使用)
- 公開すると危険なファイル(~.php)へのアクセス制限
- WordPressのBitnamiのバナー削除(左下に出てるこれ)

<img width=20% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/97e8c5a6-3706-694c-b3e1-5bb0f12a866b.png">

# 手順
## 初期ユーザーパスワードの確認
AWSにログインし、サービスからLightsailをクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/6289accd-6553-5075-306e-91d517f2efdf.png" width=40%>
LightSailの管理画面に遷移するので「インスタンス」をクリックします
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/b2937df8-7f7c-b7f2-2f59-a8b3b5870cdc.png" width=40%>
「SSHを使用して接続」をクリックします
<img width=70% alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/2a7605c8-c9f0-6906-92ce-c11cdce528cb.png">
ブラウザにコンソールが立ち上がりますので
<img width=40% alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/55320ed5-c621-9ef4-64b8-3035bef7ad6e.png">
コマンドを入力していきます

```
cat bitnami_application_password 
```
入力すると
<img width=100% alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/2026f9db-18a6-eae9-c2c1-10e7af0281cf.png">
パスワードが表示される

下記URLをWebブラウザで開き、管理者ログイン画面にアクセスする
http://[自分で設定したドメイン]/wp-login.php

「ユーザー名」に「user」を入力(初期ユーザ)
「パスワード」はコンソールで確認したパスワードを入力する
<img width=30% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/fb3f39ec-4b68-4796-6f92-5895ab0c2b2c.png">

## 日本語設定
ログインが完了したら
言語を日本語に変更します。
左側のメニューの「Setting」をクリック
<img width=30% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/82a4bd1d-77b4-ca48-0b33-16a0536e622a.png">
「SiteLanguage」が「English」になっているので
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/8c6a5d5b-ab36-81c6-fd7b-c969e81de200.png">
「日本語」に変更して
<img width=50% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/832131c5-c25c-22a6-31e1-dd85f3df7137.png">
「Save Changes」をクリック
<img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/6beb4fff-12c4-c77f-10c0-4e38707fe3e6.png">
日本語に設定される
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/49e65327-0b3d-8487-8a1d-762b62731858.png">

## 管理者ユーザーの追加
メニューの「ユーザー」をクリックする
userというユーザーが一人だけ登録されているので
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/ac57bc78-8eec-8238-c9d0-717e69747c9c.png">
「新規追加」をクリックする
<img width=30% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/babdb11e-0541-6c4f-3974-e52ee34d57ce.png">

ユーザ、メールアドレス、パスワードを入力(その他は任意で入力)する
「権限グループ」は必ず「管理者」を選択する
<img width=50% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/ba466c98-0bac-7460-874e-5fb2ed6ba7ad.png">
「新規ユーザーを追加」をクリックする
ユーザーが追加された事を確認したら
右上のユーザ名にカーソルを合わせて
「ログアウト」をクリックする
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/0e29ab8f-9be1-9400-8d09-a0a336de5dfe.png">

## デフォルトの管理者初期ユーザの削除
新規に追加したユーザーでログインする
<img width=30% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/fb3f39ec-4b68-4796-6f92-5895ab0c2b2c.png">
ログインしたら
メニューの「ユーザー」をクリックして
一覧上部の選択で「削除」を選択する
「user」にチェックをつけて
「適用」をクリックする
<img width=100% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/f47a7e30-98d4-0b22-366f-188513eb4528.png">
確認画面が表示されるので間違いなければ「削除を実行」をクリック
<img width=20% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/0c47828c-e60e-3f8a-970c-1d6d1dbc4e55.png">
初期ユーザーの削除が完了
<img width=30% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/b8cf137e-6dab-e7de-2422-24069f263d8b.png">

## SSL対応のプラグイン「SSL Insecure Content Fixer」をインストール
左のメニューから「プラグイン」→「新規追加」でプラグインの追加画面に遷移し、
キーワード欄に「SSL Insecure Content Fixer」と入力する
「SSL Insecure Content Fixer」のプラグインが表示されるので
「今すぐインストール」をクリックする
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/dce626c8-f23e-84eb-ddd9-7f47dbc5dd3b.png">
## SSL Insecure Content Fixerの設定
インストールしたら「インストール済みプラグイン」をクリックして
「SSL Insecure Content Fixer」の「設定」をクリックする
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/84814bca-b849-c391-3bf7-6aa2f53eced2.png">
設定画面に遷移したら「シンプル」を選択する
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/b837d97b-f6b7-ba2a-2f97-59b4de664d51.png">
「設定を保存」をクリック
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/e02a9afb-1af1-87f8-06b7-4734a4386eb1.png">

## ログイン画面のURL変更(プラグイン Login rebuilderを使用)
左のメニューから「プラグイン」→「新規追加」でプラグインの追加画面に遷移し、
キーワード欄に「Login rebuilder」と入力する
「Login rebuilder」のプラグインが表示されるので
「今すぐインストール」をクリックする
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/3bd40e5c-9fe2-d652-d23b-02424ed277b4.png">
インストールしたら「インストール済みプラグイン」をクリックして
「Login rebuilder」の「設定」をクリックする
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/2f42237d-aa61-a207-9219-fb71d003cb1f.png">
「無効なリクエスト時の応答」には任意の応答を選択して下さい
「新しいログインファイル」には任意のファイル名を「〜.php」で入力して下さい
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/aa233461-cf81-25fe-e5da-0b7d0bf9fe5b.png">
必要事項が入力できたら
「変更を保存」をクリック
<img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/9306f052-b34d-fae6-94c3-a67a405aa154.png">

## 公開すると危険なファイル(~.php)へのアクセス制限
LightSailの管理画面に遷移して「インスタンス」をクリックします
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/b2937df8-7f7c-b7f2-2f59-a8b3b5870cdc.png" width=60%>
「SSHを使用して接続」をクリックします
<img width=60% alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/2a7605c8-c9f0-6906-92ce-c11cdce528cb.png">
ブラウザにコンソールが立ち上がりますので
<img width=30% alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/55320ed5-c621-9ef4-64b8-3035bef7ad6e.png">
コマンドを入力していきます

下記のコマンドを入力すると

```
vi /home/bitnami/apps/wordpress/conf/htaccess.conf
```
htaccess.confのファイルを編集できます。
<img width=30% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/d3594d5f-f174-16fa-e356-77f1b4a0a93d.png">
ファイルの最後に
下記の記述を追加します。

```
# add setting of security
<Directory "/opt/bitnami/apps/wordpress/htdocs/">
<Files xmlrpc.php>
Order allow,deny
Deny from all
</Files>
<Files wp-config.php>
Order allow,deny
Deny from all
</Files>
<Files readme.html>
Order allow,deny
Deny from all
</Files>
<Files wp-cron.php>
Order allow,deny
Deny from all
</Files>
</Directory>
```
追記が完了したら`:wq`と入力します(保存して編集モードを終了します)

上記の操作で４つのファイルに外部からのアクセス設定を行いました。

| ファイル | 概要 | セキュリティ的に |
|:--|:--|:--|
| xmlrpc.php |・WordPressサイトにリンクが貼られた時に通知<BR>・スマホアプリからの記事の更新<BR>・メール投稿<BR>で使用 | 不正投稿に利用 |
| wp-cron.php | 予約投稿やアップデート通知など時間連動処理に使用 | 不正アクセスに利用 |
| wp-config.php | WordPressで使用する諸々の情報を記載するファイル(DBなど) | 情報流出 |
| readme.html | WordPressのバージョンを記載 | WordPressのバージョンがバレる |

設定内容を反映させるために下記のコマンドを実行してWordpressのWebサーバを再起動します。

```
sudo /etc/init.d/bitnami restart apache
```

## WordPressのBitnamiのバナー削除
左下のこれを削除します。
<img width=20% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/97e8c5a6-3706-694c-b3e1-5bb0f12a866b.png">
コンソールを立ち上げて
<img width=30% alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265300/55320ed5-c621-9ef4-64b8-3035bef7ad6e.png">
下記のコマンドを実行します。

```
sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1
```

以上にて最低限のセキュリテイ設定は完了です。