本稿ではKUSANAGI導入時におけるセキュリティ設定の説明をします。
こちらの記事の続きです。
文中コマンドにおける()や【】は、基本的に入力不要です。
著者はそれで混乱したからね!
BASIC認証のユーザー・パスワードの作成
KUSANAGIでは9.6.0-1で管理画面ログインのBASIC認証が標準化されました。
デフォルトのユーザーとパスワードはKUSANAGIユーザーとパスワード。
改めてBASIC認証用のユーザーとパスワードを設定します。
ターミナルソフトを立ち上げてログイン。
次のコマンドを打ち込みます。
# htpasswd /home/kusanagi/.htpasswd (BASIC認証のユーザー名)
ユーザー名は好きな名前をつけてください。
もちろんkusanagi以外で。
()は要りません。
パスワードを求められるので入力します。
パスワードは強固なものを生成してください。
Chrome使っていればパスワードマネージャーが覚えてくれますので記憶する必要はありません。
終わったらシークレットウィンドウでログインページを開きます。
ログインして、設定したユーザーとパスワードで認証できたら成功です。
作業用ユーザーの作成
ここまではrootでログインしてきたことと思います。
しかしrootのまま作業するのはセキュリティ上の問題があります。
そのため、
rootログインの禁止が一般的に推奨されています
もっともrootログインを禁止すると作業しようがなくなります。
なので、先に作業用ユーザーを作ります。
こちらの記事を読んで進めてください。
rootログインを禁止する
作業用ユーザーを作ったら、今後はrootログインの禁止です。
こちらの記事を読んで進めてください。
【閑話】sudoとsu
前項と前々項はsudoでコマンドを実行することを前提に記しました。
実はsudoの他にも作業用ユーザーでログインしてroot実行する方法があります。
$ sudo su
これでユーザーパスワードを打てばrootになれます。
sudoとの違いは、sudoがコマンド単位なのに対してsuはユーザーごとrootに切り替わります。
rootなのでいちいちsudoと打つ必要もパスワードを入力する必要もありません。
自分一人だけのサーバーならsuの方が楽です。
以下、全てrootで作業するものとしてsudoを省略します。
sshポートを変更する
sshポートは一般に22です。
このままではセキュリティ上の問題がありますので変更します。
# vi /etc/ssh/sshd_config
21行目前後に次の記述があります。
port 22
49152~65535の任意の番号に変更して保存して終了します。
例として50001にします。
port 50001 :wq
sshdを再起動します。
# systemctl restart sshd.service
ターミナルソフトのログイン設定もポート番号を変更しておきます(この場合は50001)。
SFTPクライアント(WinSCP)を作業用ユーザーで設定する
WinSCPを設定します。
WinSCPを立ち上げるとログイン画面が開きます。
初めての場合はそのまま。
2回目以降の場合はrootで設定しているでしょうから、作業用ユーザーで上書します。
ユーザー「tenzen」、ポート「50001」に変更したケースです。
ホスト名はサーバーのIPアドレスを入力します。
終わったら「保存」を押します。
名前はわかりやすければなんでもいいですが、ここでは「tenzen」としておきます。
左側に「tenzen」が並んだはずです。
「編集」を押して「設定」を押します。
SSH→「認証」を開きます。
「秘密鍵」で「作業用ユーザーの作成」で作った秘密鍵を入れます。
(ここではtenzen.pem)
次のダイアログが開くのでOKを押します。
tenzen.pemがtenzen.ppkに変換されて登録されます。
終わったら追加でWinSCPをroot権限で操作できるように設定します。
こちらの記事を見ながら作業してください。
公式推奨の各種セキュリティ設定を行う
公式推奨の各種セキュリティ設定をします。
KUSANAGI公式推奨のセキュリティ設定はこちらです。
せっかくWinSCPを設定したのですから早速使います。
黒い画面よりWinSCPでやった方が早いです。
WinSCPでログインします。
「home」→「KUSANAGI」→「プロファイルのホームディレクトリ(プロファイルの名前がついたフォルダ)」→「DocumentRoot」と開いていきます。
wp-config.phpというファイルがあるはずです。
ドラッグアンドドロップで上の階層(ホームディレクトリ)へ移動します。
wp-config.phpを右クリックして「プロパティ」を開きます。
次の通り設定します。
グループ:www
パーミッション:所有者とグループのR(合計2個)にチェック
→「440」になっていることを確認して「ok」を押す
再びDocumentRootフォルダまで戻ります。
wp-contentフォルダを右クリックしてプロパティから次の設定をします。
グループ:www
パーミッション:所有者のRWX、グループのRWX、その他のRX(合計8個)にチェック。
→「775」になっていることを確認して「ok」を押す
以上の作業をコマンドで書くと次の通りです。
$ sudo su # cd /home/kusanagi/(プロファイル名)/DocumentRoot # mv wp-config.php ../ # cd .. # chown kusanagi.www wp-config.php # chmod 0440 wp-config.php # ll (各種ファイルが並ぶ、略)
wp-config.phpがあること、所有権とグループ、パーミッションを確認します。
続けて、
# cd /home/kusanagi/(プロファイル名)/DocumentRoot # chmod 0755 wp-content # ll
rwxrwxr-xとなっていればokです。
ここで付け加えておきます。
ダッシュボードに出るのでわかると思いますが。
管理画面に入る度にチェックする癖はつけておいた方がいいかもです
wp-config.phpのFTP設定の変更
セキュリティとは関係ない(むしろ逆行する)設定ですが、wp-config.phpを扱ったついでにやっておきます。
WinSCPからwp-config.phpを開きます。
/** * 開発者へ: WordPress デバッグモード * * この値を true にすると、開発中に注意 (notice) を表示します。 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。 */ define('WP_DEBUG', false); (略) /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
(略)の部分のどこかに次の記述を加えます(既にある場合は変更します)
define('FS_METHOD', 'ftpext'); ←デフォルトはftpsockets define('FTP_HOST', 'localhost'); define('FTP_USER', 'kusanagi'); define('FTP_PASS', 'kusanagiのパスワード');
最初の1行は、PHP8.1では変更する必要があります。
3行目4行目はパスワード認証なしでテーマやプラグインを更新できるようにします。
本来はあまり推奨されないのですが、一人でサイト運営する分には利便性を優先していい箇所と思います。
まとめ
これでKUSANAGIで最初にやるべきセキュリティ設定は終わりです。
おつかれさま!
おつかれさまでした!