- 2017年10月16日
- ヨシダですけど
WordPressの管理画面のセキュリティを強化してみた(Basic認証、画像認証など)
どーも、ヨシダです。
今日は珍しくセキュリティの話だ。
前の記事で自分のサイトをAWSで構築したのだが、セキュリティ面を考慮してなかったので色々設定してみた。
AWSのWordPress Certified by Bitnamiの場合でやりますので、お使いの環境に合わせてところどころ変更してください。
①管理者ユーザー名の変更
前の記事を見ればわかりますが、ユーザー名がデフォルトで「user」になっている。
しかも、パスワードの長さまでバレている。
これでは僕のサイトが突破されるのも時間の問題だ。
てことですぐに変更しました。
管理画面に入ったら、左の「ユーザー」から「新規追加」をクリック。
ユーザー名にはできるだけランダムな文字列を入力しましょう。
パスワードは勝手に強力な文字列をつくってくれるので、コピーしてどこかに保存しておいてください。
権限グループを「管理者」にして、「新規ユーザーを追加」。
管理者権限のユーザーアカウントが作成できましたら、元々あった「user」という管理者アカウントは消しておきましょう。
②管理画面にBasic認証
WordPress Certified by BitnamiはカスタマイズされたAMIで、Apacheの設定ファイルも独自の構成となっているようです。
なので、僕はここでめちゃくちゃつまづきました。
Basic認証をかける方法は色々あり、phpでそのまま入力するということもできますが、パスワードがそのままHTTPのネットワークを流れるので、盗聴などの危険性があり却下。
かといって、.htaccessをいじっても、Apacheの設定がややこしく、特定のページに認証をかけるのができなかった。
うおーめんどくせえ。てことで、httpd.confに直接入力することにしました。
まずは.htpasswdの作成から。
前々回の記事を参考にEC2に接続してください。
コマンド「sudo htpasswd -c -b /opt/bitnami/apache2/conf/.htpasswd ユーザー名 パスワード」を入力。
ユーザー名とパスワードのところは、できるだけランダムな文字列を入力してください。
これがBasic認証する時に使うものになります。
ちなみに、オプション -c は「新しいパスワードファイルを作成する。既存ファイルがあった場合は上書きされる。」オプション -b は「パスワードを対話式ではなくコマンドライン引数として入力できるようにする。」です。
.htpasswdの権限がrootになっているので、一応bitnamiに変更するコマンド「sudo chown -R bitnami /opt/bitnami/apache2/conf/.htpasswd」を入力。
次にhttpd.confの設定です。
コマンド「sudo vi /opt/bitnami/apache2/conf/httpd.conf」を入力したら、一番下に
を追加して入力。
Directoryのところは、Basic認証をかけたいディレクトリを入力してください。
今回はWordPressの管理画面に認証をかけたかったので、wp-login.phpにしました。
最後にコマンド「sudo /opt/bitnami/ctlscript.sh restart apache」を入力してApacheを再起動します。
入力したコマンドは下の9~12になります。(※historyコマンドで確認しています)
これで完了です。
管理画面のURLをいれたときにBasic認証がかかっており、さきほど設定したユーザー名とパスワードを入力して表示できれば成功です。
③管理画面に画像認証
WordPressに画像認証を加えれるプラグインがあり、簡単に設定できます。
「プラグイン」から「新規追加」。
「SiteGuard WP Plugin」で検索するとでてきます。
「インストール」して「有効」にしたら、左下に追加されているのでクリック。
すると、色々できることがあるので、お好きなように設定してください。
画像認証を加えるときは、「画像認証」を「ON」にして、ログインページにチェックをいれておけば完了です。
これでブルートフォース攻撃の対策もばっちりだ。
とりあえず今回は以上です。
お疲れ様です。
他にもセキュリティを強化するために設定しなければいけないことは、もちろんあります。これで安心してはいけないぜ。
ありがとうございました。