Linux で SSH ログイン関連の設定、確認方法について、まとめておきます。
以下の構成を想定しています。
構成:
・ レンタルサーバ(ConoHa VPS)、CentOS (サーバー側)
・ Windows パソコン、Tera Term (クライアント側: SSH ログイン用端末)
背景
Web サーバを構築してサイトを作ったとき、サーバーにアクセスするため、Tera Term などを使って SSH (Secure Shell) 接続をすることになると思います。
このとき、Linux の初期設定では、root 権限でサーバにログインできるようになっていると思います。
root 権限で SSH 接続ができてしまうと、万が一、第三者にパスワードが推測されてしまうと、サーバ内を自由に改変できてしまうことになり、セキュリティ上問題があります。
そこで、root 権限ではログインができないようにする方法についてまとめておきます。
SSH 接続で root 権限でのログインができなくても、サーバーの会社のコンソール画面からログイン可能ですので、通常の使用で特に問題はないと思います。
なお、設定にあたり、SSH でのログイン用のユーザ(root 以外のユーザ)を、サーバのコンソール画面上で作成しておく必要があります。
手順
① サーバ(VPS)のコンソールを起動し、ssh のディレクトリに移動します。
# cd /etc/ssh/
# ls -al
② sshd_config のバックアップを取り、編集モードにします。
# cp sshd_config sshd_config.backup
# vi sshd_config
③ sshd_config 内で Port 22 となっている行を探し、以下を参考に書き換えます。
Port 22 (修正前)
Port 2343 (修正後 数値は例ですので変えてください)
④ PermitRootLogin の行について、冒頭の # を削除し、yes を no に書き換えます。
#PermitRootLogin yes (修正前)
PermitRootLogin no (修正後)
[esc] -> :wq [enter] で保存
⑤ 編集後のファイルのチェックをして、再起動します。
# sshd -t
# systemctl restart sshd
⑥ ローカル PC から、②のポート番号で一般ユーザ権限で SSH 接続を試みてください。
また、root 権限でも SSH 接続を試みてください。
一般ユーザ権限で接続でき、root 権限で接続できないことを確認できたら、完了です。
まとめ
ポート番号を変更し、root 権限でのログインを禁止する設定はこれで完了です。
SSH 接続もセキュリティを強化しておきましょう。
設定が終わったら、下記あたりでアクセスログを確認しておくことをお勧めします。危険さがわかる(Web サーバに SSH で自動ログインを試みる人々が相当数いる)と思います。
関連リンク
・ Web サーバのアクセスログの確認方法 【Linux】
・ WordPress 公開時に必ずやること【Linux】