Webサーバーに関し、root 権限での SSH ログインを禁止する手順等ついてまとめておきます。
以下の構成を想定しています。
構成:
・ レンタルサーバ(ConoHa VPS)、CentOS (サーバー側)
・ Windows パソコン、Tera Term (クライアント側: SSH ログイン用端末)
背景
Web サーバを構築してサイトを運用するとき、サーバーにアクセスするため、Tera Term などを使って SSH (Secure Shell) 接続をすることになると思います。
このとき、Linux の初期設定では root 権限でサーバーにログインできるようになっていると思います。
root 権限で SSH 接続ができてしまうと、万が一、第三者にパスワードが推測されてしまうと、サーバー内を自由に改変できてしまうことになり、セキュリティ上の問題があります。
ということで、root 権限で SSH ログインができないようにする方法についてまとめておきます。
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
⑥ Tera Term などを入れた Window パソコンなどから、サーバーに対し、SSH 接続を試みてください。
・ ②のポート番号で、一般ユーザーで SSH 接続を試みてください。
・ また、root ユーザーでも SSH 接続を試みてください。
→ 一般ユーザーでは接続ができ、root では接続ができないことを確認できたら、動作確認まで完了です。
まとめ
SSH 接続に関して、ポート番号を変更して、root 権限でのログインを禁止する手順をまとめました。
SSH 接続もセキュリティを強化しておきましょう。
設定が終わったら、以下の関連リンクでアクセスログを確認しておくことをお勧めします。
危険さがわかると思います(Web サーバを見つけ出し、SSH で自動ログインを試みる人々が相当数いる)。
関連リンク
・ Web サーバのアクセスログの確認方法 【Linux】
・ WordPress 公開時に必ずやること【Linux】
・ ポートの状態を確認する 【Python】