はじめに
別部署のユーザーから「開発用Linux端末のあるログを採取して欲しい。Linuxはわかんないので」と依頼された際に「じゃあ、ログイン情報と鍵ファイルをください」とお願いしたところ、そのまま直でrootログイン情報を渡されたんですよ。
思わず、「ちょっと待てい!」ってなりましたので、ユーザーさんにはrootログインの禁止方法をお教えいたしました。
なぜ直接sshでrootログインは危険なのか
言わずもがなですが、rootは管理者ユーザーであり、Linuxにおける最上位の権限を持っています。
ですので管理者権限を悪意を持った存在に盗られると、もうおしまいです。
となると、不正アクセスを狙うクラッカーもrootでのログインをしたがりますよね。
rootというログインユーザー名は共通して存在するので狙われやすいです。クラッカーがsshで不正ログインを試みる際はまずrootを狙う可能性が高いでしょう。
仮に一般ユーザーで不正ログインされた場合でも、その一般ユーザーがsudo権限を持っていなければ被害は少なく済む可能性があります。
職場などでは管理者権限とログオンユーザーが統合されたWindowsPCがだいたいひとり1台があてがわれますし、普段からサーバーを触っていないと、一般ユーザーと管理者ユーザーを分ける考え方は馴染みが薄くなるのかもしれません。
環境
Ubuntu 20.04 LTS
今回はこの環境で行います。
ssh で直接 root へのログインを禁止する
では早速rootのsshを禁止して行きます。が、まずはその前に他のユーザーを作成して、sshできることをしっかり確認しておきましょう。
もし他のユーザーを作成しないでrootのsshを禁止してしまうとサーバーにアクセスできるユーザーがいなくなってしまいます。(シングルユーザーモードといった面倒な手法を取るハメになります)
- sshログインに関する設定は
/etc/ssh/sshd_config
で行います。
configファイルを変更する前に、念のためにファイルをバックアップしておきましょう。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_org
- バックアップができたら、次にファイルを編集します。
vim
を使ってますが、エディタは好みでどうぞ。
sudo vim /etc/ssh/sshd_config
- 36行目あたりに
PermitRootLogin
という記述があります。(環境によって異なっている可能があります)
コメントアウトされていたら、外してください。
yes
という記述をno
に書き換えてください。
PermitRootLogin no
- sshプロセスを再起動させて、変更した設定を反映させてください。
systemctl restart sshd
- rootでのsshログインを試行してみて、
Permission denied, please try again
と表示されるなどして接続できなかったら有効です。