[AlmaLinux]rootでのSSHログイン接続を禁止する方法

AlmaLinuxを利用して、rootアカウントでSSHのログイン接続を禁止する方法について説明します。AlmaLinuxのバージョン8.8と9では、設定の仕組みが変わっているため注意が必要です。

AlmaLinux8.8の場合

まずrootでログイン接続できることを確認しましょう。

PS C:\> ssh root@192.168.213.148
The authenticity of host '192.168.213.148 (192.168.213.148)' can't be established.
ED25519 key fingerprint is SHA256:qJVKij6Mm87TPsTpsbcbXJW6VJajNMcmFgWWga2TAXM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.213.148' (ED25519) to the list of known hosts.
root@192.168.213.148's password:
Last login: Thu Aug 10 22:23:24 2023
[root@localhost ~]#

このようにrootで接続することができました。次に接続を禁止するように設定を変更します。

/etc/ssh/sshd_configファイルを開き、PermitRootLoginyesからnoに変更します。

(変更前)
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

(変更後)
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

変更を保存したら、sshdを再起動します。

systemctl restart sshd.service

これで設定は完了です。rootで接続できるか確認してみます。

PS C:\> ssh root@192.168.213.148
root@192.168.213.148's password:
Permission denied, please try again.
root@192.168.213.148's password:

Permission deniedとなり、ログインを禁止することができました。

AlmaLinux9の場合

次にAlmaLinux9では、OSをインストールするときのrootパスワードの設定箇所で、rootによるSSHログイン接続を禁止することができます。この設定は、AlmaLinux8.8では付いていませんでした。

AlmaLinux8.8の場合

AlmaLinux9の場合

ここで、「パスワードによるroot SSHログインを許可」のチェックを外すと、rootによる接続はできなくなります。もし許可したあと、後から接続を禁止したい場合、AlmaLinux8.8のやり方では、設定方法が変更されているためうまくいきません。下記の設定変更を行います。

設定方法

/etc/ssh/ディレクトリのファイルを一覧します。するとsshd_config.dディレクトリがあります。このディレクトリは、AlmaLinux8.8では存在していなかったもので、AlmaLinux9から追加されたものになります。

/etc/ssh/
[root@localhost ssh]# ls -la
total 616
drwxr-xr-x.  4 root root       4096 Jul 23 08:55 .
drwxr-xr-x. 77 root root       8192 Jul 23 11:31 ..
-rw-r--r--.  1 root root     578094 Apr  6 05:03 moduli
-rw-r--r--.  1 root root       1921 Apr  6 05:03 ssh_config
drwxr-xr-x.  2 root root         28 Jul 23 08:49 ssh_config.d
-rw-r-----.  1 root ssh_keys    492 Jul 23 08:55 ssh_host_ecdsa_key
-rw-r--r--.  1 root root        162 Jul 23 08:55 ssh_host_ecdsa_key.pub
-rw-r-----.  1 root ssh_keys    387 Jul 23 08:55 ssh_host_ed25519_key
-rw-r--r--.  1 root root         82 Jul 23 08:55 ssh_host_ed25519_key.pub
-rw-r-----.  1 root ssh_keys   2578 Jul 23 08:55 ssh_host_rsa_key
-rw-r--r--.  1 root root        554 Jul 23 08:55 ssh_host_rsa_key.pub
-rw-------.  1 root root       3667 Apr  6 05:03 sshd_config
drwx------.  2 root root         59 Jul 23 08:51 sshd_config.d

sshd_config.dディレクトリのファイルを一覧すると01-permitrootlogin.confファイルがありrootログインの接続設定は、このファイルの修正を行います。

/etc/ssh/sshd_config.d/
[root@localhost sshd_config.d]# ls -la
total 12
drwx------. 2 root root   59 Jul 23 08:51 .
drwxr-xr-x. 4 root root 4096 Jul 23 08:55 ..
-rw-r--r--. 1 root root  141 Jul 23 08:51 01-permitrootlogin.conf
-rw-------. 1 root root  719 Apr  6 05:03 50-redhat.conf
[root@localhost sshd_config.d]#

01-permitrootlogin.confファイルを開き、PermitRootLoginyesからnoに変更します。

01-permitrootlogin.conf
(変更前)
# This file has been generated by the Anaconda Installer.
# Allow root to log in using ssh. Remove this file to opt-out.
PermitRootLogin yes

(変更後)
# This file has been generated by the Anaconda Installer.
# Allow root to log in using ssh. Remove this file to opt-out.
PermitRootLogin no

このファイルに設定される、PermitRootLogin の値が、AlmaLinux8.8で設定したsshd_configファイルより優先されます。そのため、sshd_configファイルでPermitRootLoginnoに設定しても、01-permitrootlogin.confファイルでyesである限り、SSHによるログイン接続ができてしまうのです。

また、01-permitrootlogin.confファイルを削除すれば、/etc/ssh/sshd_configの設定は有効になりますが、システムファイルを削除することは好ましくないため01-permitrootlogin.confファイルの設定を変更した方が良いでしょう。

設定後は、sshdを再起動して、rootで接続できるか確認します。

systemctl restart sshd.service
PS C:\> ssh root@192.168.213.148
root@192.168.213.148's password:
Permission denied, please try again.
root@192.168.213.148's password:

このようにroot接続を禁止することができました。rootでのSSH接続は、理由がない限りは禁止とすべきで、一般ユーザーで接続するようにしましょう。