VPSサーバーは、ある程度まで構築してしまうと日常であまりやることがありませんw
今回は、WordPressを導入したときの、.htaccessによる基本的なセキュリティ設定方法についてご紹介します。
.htaccessファイルに下記のコードを設定していきます。
①.htaccessの保護
まずは、.htaccessに不正アクセスされては元も子もないので、.htaccessファイル自体をアクセス拒否して保護します。
<Files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </Files>
②WordPress内にあるディレクトリ一覧の非表示
WordPress内にあるディレクトリ一覧をブラウザなどで閲覧できないようにします。
当サイトのWebサーバーの構築で既に設定済みですが、念のため。
Options -Indexes
③wp-config.phpの保護
wp-config.phpには、データベース関連のパスワードなど大切な設定が書かれていますので、必ず保護しましょう。
# protect wp-config.php <files wp-config.php> order allow,deny deny from all </files>
④wp-mail.phpとinstall.phpを保護
wp-config.phpを保護しましたが、さらにwp-mail.phpとinstall.phpもアクセス拒否して保護します。
下記の設定では、wp-config.phpも保護する設定です。
<FilesMatch "^(wp-config\.php|wp-mail\.php|install\.php|\.ht)"> order allow,deny deny from all </FilesMatch>
⑤スクリプトインジェクション対策
フォームから不正なscriptタグを入力しても実行処理しないようにします。
Options +FollowSymLinks RewriteEngine On # <script> タグ RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR] # PHP グローバルに関連するもの RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR] # _REQUEST を変更しようとするもの RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) #マッチしたURLへのアクセスを禁止("403 Forbidden"のレスポンスを返す) RewriteRule ^(.*)$ index.php [F,L]
⑥日本国外からのログイン画面へのアクセスを制限
不正アクセスの多くが日本国外からのため、国内のIPアドレスの場合だけログイン画面にアクセスできるようにし、日本国外のIPアドレスはログイン画面にアクセス出来ないようにします。
また、XML-RPCの脆弱性を狙った不正アクセスの試みも頻繁に発生するため、xmlrpc.phpへのアクセス制限も一緒にします。
下記サイトにアクセスして、「.htaccessダウンロード」ボタンを押して、.htaccessファイルをダウンロードします。その.htaccessファイルに記載されている「allow from IPアドレス」全てをコピーして、下記のハイライトした部分にペーストしてください。
IPアドレスで日本国外(海外/外国)からのアクセスを制限する.htaccess CGI’s
<Files ~ "^(wp-login\.php|xmlrpc\.php)$"> Order deny,allow Deny from all allow from 1.0.16.0/20 allow from 1.0.64.0/18 allow from 1.1.64.0/18 allow from 1.5.0.0/16 allow from 1.21.0.0/16 allow from 1.33.0.0/16 (以下、日本国内IPアドレス続く) ... ... ... </Files>
以上の.htaccess設定でWordPressの基本的なセキュリティは確保できると思います。
上記以外にも.htaccessによるセキュリティ向上方法があった場合には、随時追記していきます。
【参考サイト】
.htaccessをWordPressで徹底活用 | CSSPRO
WP インストール時の注意点とセキュリティ | Web Design Leaves