前回は、WordPressのセキュリティで気になる2点、
- WordPressの管理画面にログインするとき
- WordPressの管理画面でテーマやプラグインをインストールするとき
のうち、1を改善しました。今回は2です。
この設定には下記のサイトが参考になりました。
テーマやプラグインをインストール処理の強化(SSH化)
WordPressの管理画面で、プラグインをインストールしたりする場合、VPS側にファイルを展開しなければなりません。
このためにはFTPを使用したりできるのですが、SSHを使うとログインを全自動化できてとても楽です。セキュリティもSSHのほうが断然強いのでファイル転送にはSSHを使用するようにしましょう。
SSHのライブラリのインストール
この機能を有効にするためにはPHP(WordPressが使用している言語)からsshの機能を呼び出せるようにする必要があります。下記のコマンドで必要なライブラリを入れます。
sudo aptitude install libssh2-php
必要ないかもしれませんが、Apache2を再起動しておきます。
sudo /etc/init.d/apache2 reload
SSH用のユーザと認証鍵の作成
WordPressのプラグインのインストール等で使用する専用のアカウントを作成します。自分のアカウントをそのまま使ってもよいのですが、いまいち気持ち悪いので専用のアカウントを作ります。このユーザ名をwpとしておきます。
sudo adduser wordpress
このユーザはwww-dataグループに入れておきます。
sudo adduser wordpress www-data
このユーザ用にSSHのキーを作成します。プラグインのインストール時に入力するのは面倒なので、パスフレーズは入力せずにリターンを押します。
sudo -u wp ssh-keygen
これで/home/wp/.sshに公開鍵id_rsa.pubと秘密鍵id_rsaができます。
この鍵のペアでログインできるようにします。
sudo cat id_rsa.pub >> authorized_keys sudo chown wp.wp authorized_keys
所有グループを調整します。
sudo chgrp www-data /home/wp/.ssh sudo chmod 750 /home/wp/.ssh sudo chgrp www-data /home/wp/.ssh/* sudo chmod 640 /home/wp/.ssh/*
通常は.sshディレクトリはグループ読み込みでできない設定ですが、www-dataグループが読み込めるようにすることで、WordPress(Apache)がこの鍵を使用することができます。
WordPressの設定の変更
/etc/wordpress/config-サイト名.phpに下記の行を追加します。
define('FS_METHOD', 'ssh2'); define('FTP_BASE', '/home/cfumylmd/public_html/scratchpad.jp/'); define('FTP_CONTENT_DIR', '/home/cfumylmd/public_html/scratchpad.jp/wp-content/'); define('FTP_PLUGIN_DIR', '/home/cfumylmd/public_html/scratchpad.jp/wp-content/plugins/'); define('FTP_PUBKEY', '/home/wp/.ssh/id_rsa.pub'); ←公開鍵があるディレクトリ define('FTP_PRIKEY', '/home/wp/.ssh/id_rsa'); ←秘密鍵があるディレクトリ define('FTP_USER', 'wp'); ← 作成したアカウント define('FTP_HOST', '127.0.0.1:ポート番号'); ← SSHでログインするホスト名とポート番号。同じサーバ上の処理なので127.0.0.1でもOK。 define('FTP_SSL', false); ←FTPSは使用しない
Apache2を再起動しておきます。
sudo /etc/init.d/apache2 reload
グループ所有権がwww-dataでないとうまく動きません。
プラグインインストール用のディレクトリを作成する
プラグインのインストール時に作業用としてupgradeというディレクトリを使用するので作っておきます。所有者はroot, グループはwww-data, グループは読み書き可にしておきます。
sudo mkdir /home/cfumylmd/public_html/scratchpad.jp/wp-content/upgrade sudo chown root.www-data /home/cfumylmd/public_html/scratchpad.jp/wp-content/upgrade sudo chmod 770 /home/cfumylmd/public_html/scratchpad.jp/wp-content/upgrade sudo chmod g+s /home/cfumylmd/public_html/scratchpad.jp/wp-content/upgrade
プラグイン・テーマ用ディレクトリの調整。
所有者をroot, グループはwww-data, グループは読み書き可にしておきます。
sudo chown -R root.www-data /home/cfumylmd/public_html/scratchpad.jp/wp-content/plugins sudo chmod 770 /home/cfumylmd/public_html/scratchpad.jp/wp-content/plugins sudo chmod g+s /home/cfumylmd/public_html/scratchpad.jp/wp-content/plugins sudo chown -R root.www-data /home/cfumylmd/public_html/scratchpad.jp/wp-content/themes sudo chmod 770 /home/cfumylmd/public_html/scratchpad.jp/wp-content/themes sudo chmod g+s /home/cfumylmd/public_html/scratchpad.jp/wp-content/themes
まとめ
これでパスワードも何も入れずに、クリックするだけでプラグインやテーマをインストールできるようになるはずです。
これにてDebianへのWordPressのインストールは完了です。あとは記事を充実させるだけです!
コメント