WordPressのセキュリティ対策メモ
※本記事は個人用メモとなりますので、あくまでも参考用としてお願いします。
WordPressにてセキュリティ対策を施したのでメモ。
1.まずはプラグインでセキュリティ対策チェック
プラグイン「iThemes Security」(旧Better WP Security)をインストールします。
このプラグインはWordPressでセキュリティ対策が取られているか
色んな面でチェックしてアラートを出してくれます。
「Better WP Security」を初めて導入した場合は、
データベースのバックアップをするかどうかを聞かれますがお好みで。
日本語化含め、インストールには以下を参考
WordPress セキュリティプラグイン「Better WP Security」|アイムービック エンジニアブログ
インストール後、セキュリティ-ダッシュボードへ移動すると
セキュリティチェック項目がずらっと並んでいますので
赤になっている項目の対策が必要という事になります。
2.DBのプレフィックス変更
WordPressデフォルトでのDBプレフィックス名を変更
デフォルトはwp_なので、任意のプレフィックス名(hogeとか)に変更
※こちらについてはWordPressインストール時に設定していました
4.管理者ユーザーIDの変更
ID が "1" の管理者ユーザが存在する場合、攻撃を受けやすいらしいです。
DBテーブルで言う所のhoge_usersが該当します。
「Better WP Security」の機能にて変更しました。
5.管理画面の隠蔽
WordPressではパス
「/wp-admin/」「/admin/」「/wp-login.php」
にアクセスすると管理画面やログイン画面が表示され不正アクセスのリスクがあります。
管理画面URLを変更する事で不正アクセス対策を行います。
function.phpに追記
function redirect_login(){ $uri = getenv('REQUEST_URI'); if(!strpos($uri, 'hogehoge')){ if( !is_user_logged_in() ){ wp_redirect( home_url( '/' ) ); } } } add_action( 'login_form_login', 'redirect_login' );
設定後は
http://localhost/wp-admin/
http://localhost/admin/
等にアクセスしてもTOPページヘリダイレクトされます。
上記の設定例だと
http://localhost/wp-admin/?hogehoge
でアクセス可能です
6.wp-config.phpファイルの保護
wp-config.phpは重要な管理権限が含まれていますので
外部からアクセスされないようApache設定で制限をかけます。
.htaccessに追記
<files wp-config.php> order allow,deny deny from all </files>
デフォルトでは、
http://localhost/wp-config.php
にブラウザからアクセスできますが
上記設定後はアクセスできずに403エラーとなります。
7.Akismet
プラグインAkismetをインストール
コメントへのスパムコメント対策
8.ディレクトリ一覧の非表示
デフォルトでは
http://localhost/wp-includes/
にブラウザからアクセスすると
そのディレクトリ直下のファイル一覧が表示されてしまいます。
下記設定後はアクセスできずに403エラーとなります。
Options -Indexes
9.WordPressのバージョンを隠す
使用バージョンを知られてしまうとハッキングの脆弱性が増してしまう為
念のための対策です。
前述した「Better WP Security」をインストールしている事が前提です。
サイドメニューのセキュリティ - システム調整 - ヘッダの調整にて
全ての項目にチェックして「変更を保存」で対応しました
iThemes Security の場合はサイドバーのSecurity - Settingsで、
「Remove WordPress Generator Meta Tag」
にチェックを付けます
10.ログイン履歴監視
管理画面へログインしようとしているアクセスを検知する為
WordPress へのログイン履歴を保存するプラグイン「Crazy Bone(狂骨)」を導入します。
定期的にこのログを見て必要に応じて対策したいと思います。
WordPress のログイン履歴を保存するプラグイン「狂骨」 | dogmap.jp
※2015/03/08追記
プラグインの関係の問題か分かりませんが、「Crazy Bone(狂骨)」によるエラーが発生したので除外しました。
【解決】WordPressで画面が真っ白エラーなった際の対処方法 - とりあえずエンジニアの備忘録