AWSでWordPress構築をしたらやるべきセキュリティ対策【Apache】

AWSでWordPress構築をしたらやるべきセキュリティ対策【Apache】 開発
スポンサーリンク

基本的にはWordPress公式が展開しているWordPressの安全性を高めるに従い対応する。

無料でできるWordPressの脆弱性無料診断のサイトもあるので、うまく活用してセキュリティー強度を高めていく。

Wordpress(ワードプレス)脆弱性診断 セキュリティースキャナ – ワードプレスの移行・修正・カスタマイズ・復旧のご依頼はWordpress Doctorへ | Blog

WordPress、プラグインは常に最新を保つ

脆弱性問題もあるから常に最新にアップデートする。

推測されるパスワードは避けて自動生成されたランダムなパスワードを設定する

プログラムで攻撃してくるので、passwordとかpassword1とかユーザ名と同じとかとか、
ある程度想定できるパスワードをさけて、しっかりと自動生成されたランダムな8桁以上のパスワードを設定する。

wp-config.php, .htaccessのパーミッションを適切に設定する

ファイルのパーミッションを適切に設定する。

wp-config.phpは、環境情報など重要な情報がはいっているので、所有者しか読み込めないように設定する。

chmod 400 wp-config.php

.htaccessは、読み込み可能、ファイルの所有者のみ変更可能に設定する。

chmod 604 wp-config.php

デフォルトの管理者ユーザ「admin」は削除する

デフォルトの管理者ユーザ「admin」は攻撃の対象となりやすいので、新たに管理者ユーザを作った方がよい。

Apache、およびPHPのバージョンを隠蔽

Apache、およびPHPのバージョンが表示されていると、セキュリティーホールが見つかった時など、このバージョンであればこの攻撃が有効だ!とわかってしまうので、バージョン情報を解らないようにする。

確認方法としては、サイトを表示してデバッグモードでResponse Headersを見ると、「server」「x-powered-by」にバージョン情報が載っている。

各種、設定をすると

serverバージョン情報が非表示に、x-powered-byが非表示になる。

またApacheのデフォルトであるTest Pageにもバージョンが記載されているので、表示しないように設定する。

Apacheバージョンの隠蔽方法

Response Headersのバージョンを非表示にする

/etc/httpd/conf/httpd.confに

ServerSignature Off
ServerTokens ProductOnly

を追記する。

Test Pageを表示しないようにする

/etc/httpd/conf.d/welcome.confの

<LocationMatch "^/+$">
    Options -Indexes
    ErrorDocument 403 /.noindex.html
</LocationMatch>

をコメントアウトする。

PHPバージョンの隠蔽方法

/etc/php.iniを修正する。

expose_php = On

expose_php = Off

に変更する。

php.iniの場所がわからない場合は、

php -i | grep "Loaded Configuration File"

で検索する。

管理画面ログインページにアクセスできるIPを制御する

管理画面ログインページ(wp-login.php)にアクセスできるIP制御をする。

たとえば自宅からしかログインページにアクセスできないようにする場合は、自宅のグローバルIPを許可するように設定する。
現在使用中のグローバルIPを調べる方法は、あなたが現在インターネットに接続しているグローバルIPで調べることができる。※固定IP化してないと変更されるので注意

設定方法としては、.htaccessに

<Files wp-login.php>
  Order deny,allow
  Deny from all
  Allow from xxx.xxx.xxx.xxx # 許可するIPを設定
  Allow from xxx.xxx.xxx.xxx # 複数設定することも可能
</Files>

を追記する。

管理画面ログインページにBasic認証を入れる

管理画面のログイン画面にBasic認証をかけて、設定したユーザ、パスワードで認証しないとログイン画面を表示できないようにする。

ユーザ、パスワードの組み合わせは、.htpasswd.phpファイルを作成

vi .htpasswd.php

して、「ユーザ:エンコードされたパスワード」の形式で、1行に認証する1ユーザーを追記する。
ユーザ:エンコードされたパスワードの形式は、こちらのサイトで作成できる。


上記生成例だと、.htpasswdには「hoge:xe2kTSigL35uA」を記述する。

Basic認証の設定方法としては、.htaccessに

AuthType Basic
AuthName "Protected Area"
AuthUserFile /pass/to/.htpasswd # .htpasswdの配置してあるパスを記載
require valid-user	

を追記する。

ディレクトリ一覧を表示させない、ディレクトリリスティングを無効化

https://{ドメイン}/wp-content/uploads/にアクセスすると、ブラウザで画像の一覧が見れてしまう。

他にも、indexファイルがないディレクトリにアクセスすると一覧が表示されてしまうので、表示されないようにする。

設定方法は、.htaccessに

Options -Indexes

を追加する。

これを入れることで、indexファイルがないパスにアクセスすると、

となる。

デフォルトのテーブルプレフィックス「wp_」は使わない

「wp-config.php」で設定している、テーブルプレフィックス(prefix)を変更する。

$table_prefix = ‘wp_hoge_‘;

既に「wp_」で設定していた場合は、

まず、テーブル名を変更する。

ALTER TABLE wp_commentmeta RENAME TO wp_hoge_commentmeta;
ALTER TABLE wp_comments RENAME TO wp_hoge_comments;
ALTER TABLE wp_links RENAME TO wp_hoge_links;
ALTER TABLE wp_options RENAME TO wp_hoge_options;
ALTER TABLE wp_postmeta RENAME TO wp_hoge_postmeta;
ALTER TABLE wp_posts RENAME TO wp_hoge_posts;
ALTER TABLE wp_terms RENAME TO wp_hoge_terms;
ALTER TABLE wp_term_relationships RENAME TO wp_hoge_term_relationships;
ALTER TABLE wp_term_taxonomy RENAME TO wp_hoge_term_taxonomy;
ALTER TABLE wp_usermeta RENAME TO wp_hoge_usermeta;
ALTER TABLE wp_users RENAME TO wp_hoge_users;

wp_optionsとwp_usermetaテーブルでLIKE検索してヒットしたものを変更する。

SELECT * FROM `wp_hoge_options` WHERE `option_name` LIKE ‘wp_%’
SELECT * FROM `wp_hoge_usermeta` WHERE `meta_key` LIKE ‘wp_%’

wp-login.phpのURLを変更する

デフォルトのログインページのパスだと、攻撃するページが丸わかりなのでURLを変更する。

方法としては、プラグインの「SiteGuard WP Plugin」を導入する。

通常だと、

https://{ドメイン}/wp-login.php

になるが、SiteGuard WP
Pluginを導入すると、

https://{ドメイン}/任意の値(英数字、ハイフン、アンダーバー)

でURLを変更できる。

# ログインURLの例
https://{ドメイン}/login_86483

ログインに画像認証を追加する

プログラムによるなりすましでログイン攻撃をしてくるので、ログイン時にプログラムには判定できない画像認証を入れることで、攻撃対策をする。

方法としては、プラグインの「SiteGuard WP Plugin」を導入すれば、デフォルトで日本語の画像認証が入る。

設定で英語に変えたりもできるので、お好みで設定。

xmlrpc.phpを無効にする

XML-RPCピングバック、XML-RPCを利用したブルートフォースアタックの対策として、xmlrpc.phpを無効にする。

方法としては、プラグインの「SiteGuard WP Plugin」を導入して、管理画面サイドバーの「XMLRPC防御」で、「XMLRPC無効化」をチェックし保存。

機能説明にもありますが、XMLRPCを使用したプラグイン、アプリの使用ができなくなるので、注意して設定すること。

スポンサーリンク

コメント

タイトルとURLをコピーしました