WordPress

「KUSANAGI for さくらのVPS」と「通常WordPress」を比較

「KUSANAGI for さくらのVPS」は、WordPressが高速に動作する無償の仮想マシンイメージ。
さくらのVPSの標準OSインストールとして、2016年10月31日からKUSANAGIの提供が開始されています。
実際にKUSANAGIを使用するとWordPressがどれくらい高速化するのか「KUSANAGI for さくらのVPS」と「通常WordPress」を比較検証してみました。

続きを読む

WordPressのファイルアップロード上限サイズの変更

WordPressにオリジナルテーマをアップロードしようとした際、下記のようなメッセージが表示されてインストールができない。
「本当に実行していいですか? もう一度お試しください。」

何故なのか調べてみると、php.iniで設定されているアップロードファイルの上限サイズを超えてしまったようです。
たしか、以前のWordPressで同じようにアップロードファイルの上限サイズを超えた場合には、下記のメッセージだったはずですが表示変更されたのでしょうか。
「アップロードしたファイルはphp.iniで定義されたupload_max_filesizeを超過しています。」

解決方法は、php.iniで記述されている「upload_max_filesize」の設定を変更します。
まず、php.iniがどこにあるか探すため、findコマンドでphp.iniを検索します。

[root@ ~]# find / -name php.ini

次に、php.iniを開いて「File Uploads」の項目にある「upload_max_filesize」の設定を変更します。
初期設定では、「upload_max_filesize = 2M」と記述してありますので、その行頭に;を追加してコメントアウトします。
その次の行に「upload_max_filesize = 10M」を新たに追加します。

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
;upload_max_filesize = 2M
upload_max_filesize = 10M

変更完了後、php.iniを上書き保存し、WEBサーバーを再起動させます。

[root@ ~]# service httpd restart

以上で10Mまでのファイルをアップロードできます。
今回は10Mまで上限サイズを変更していますが、必要な容量に合わせて数値は変更してください。

.htaccessでWordPressを守る

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