AlmaLinuxを利用して、rootアカウントでSSHのログイン接続を禁止する方法について説明します。AlmaLinuxのバージョン8.8と9では、設定の仕組みが変わっているため注意が必要です。
まず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
ファイルを開き、PermitRootLogin
をyes
から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では、OSをインストールするときのrootパスワードの設定箇所で、rootによるSSHログイン接続を禁止することができます。この設定は、AlmaLinux8.8では付いていませんでした。
AlmaLinux8.8の場合
AlmaLinux9の場合
ここで、「パスワードによるroot SSHログインを許可」のチェックを外すと、rootによる接続はできなくなります。もし許可したあと、後から接続を禁止したい場合、AlmaLinux8.8のやり方では、設定方法が変更されているためうまくいきません。下記の設定変更を行います。
/etc/ssh/
ディレクトリのファイルを一覧します。するとsshd_config.d
ディレクトリがあります。このディレクトリは、AlmaLinux8.8では存在していなかったもので、AlmaLinux9から追加されたものになります。
[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ログインの接続設定は、このファイルの修正を行います。
[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
ファイルを開き、PermitRootLogin
をyes
からno
に変更します。
(変更前)
# 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
ファイルでPermitRootLogin
をno
に設定しても、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接続は、理由がない限りは禁止とすべきで、一般ユーザーで接続するようにしましょう。