Linuxでrootアカウントを無効にする4つの方法


root アカウントは、Linuxおよび他のUnix系オペレーティングシステムの最終アカウントです。このアカウントは、完全な読み取り、書き込み、および実行権限を持つシステム上のすべてのコマンドとファイルにアクセスできます。システム上であらゆる種類のタスクを実行するために使用されます。他のユーザーのアカウントの作成/更新/アクセス/削除、ソフトウェアパッケージのインストール/削除/アップグレードなどを行います。

root ユーザーは絶対的な権限を持っているため、自分が実行する操作はシステムにとって非常に重要です。この点で、ある[ルートのユーザーによるエラーはシステムの通常の運用に大きな影響を与える可能性があります。さらに、このアカウントは、誤ってまたは悪意を持って、あるいはポリシーを無視して不適切にまたは不適切に使用される可能性もあります。

そのため、Linuxサーバーでrootアクセスを無効にすることをお勧めします。代わりに、sudoコマンドを使用してrootユーザー特権を取得するように構成した管理アカウントを作成し、サーバーで重要なタスクを実行します。

この記事では、Linuxでrootユーザーアカウントのログインを無効にする4つの方法について説明します。

# useradd -m -c "Admin User" admin
# passwd admin

次に、usermodコマンドを使用してこのユーザーをシステム管理者の適切なグループに追加します。スイッチ -a はユーザーアカウントの追加を意味し、 -G はユーザーを追加するグループを指定しますin(Linuxディストリビューションに応じてwheelまたはsudo):

# usermod -aG wheel admin    #CentOS/RHEL
# usermod -aG sudo admin     #Debian/Ubuntu 

管理者権限を持つユーザーを作成したら、rootアクセスをブロックするためにそのアカウントに切り替えます。

# su admin

1. rootユーザーのシェルを変更します

rootユーザーログインを無効にする最も簡単な方法は、そのシェルを/bin/bash または/bin/bash (またはユーザーログインを許可するその他のシェル)からに変更することです。 >/sbin/nologin /etc/passwd ファイル内にあります。このファイルは、表示されているお気に入りのコマンドラインエディタを使用して編集用に開くことができます。

  
$ sudo vim /etc/passwd

行を変更してください。

root:x:0:0:root:/root:/bin/bash
to
root:x:0:0:root:/root:/sbin/nologin

ファイルを保存して閉じます。

今後、 root ユーザーがログインすると、「このアカウントは現在利用できません。」というメッセージが表示されますが、これはデフォルトのメッセージです。それを変更し、ファイル /etc/nologin.txt にカスタムメッセージを設定します。

この方法は、ユーザーログインにシェルが必要なプログラムでのみ有効です。それ以外の場合、 sudo ftp 、および email クライアントはrootアカウントにアクセスできます。

2.コンソールデバイス(TTY)経由のrootログインを無効にする

2番目の方法は、 pam_securetty という PAM モジュールを使用します。これは、ユーザーが「安全な」TTY にログインしている場合にのみルートアクセスを許可します。 /etc/securetty のリストで定義されています。

上記のファイルでは、rootユーザーがどの TTY デバイスにログインを許可されているかを指定することができます。

空のファイルを作成するには、実行してください。

$ sudo mv /etc/securetty /etc/securetty.orig
$ sudo touch /etc/securetty
$ sudo chmod 600 /etc/securetty

この方法にはいくつかの制限があります。ログイン、ディスプレイマネージャ( gdm kdm xdm など)やその他のネットワークサービスにのみ影響します。 TTYを起動します。 su、sudo、ssh、およびその他の関連するopensshツールなどのプログラムは、rootアカウントにアクセスできます。

3. SSHルートログインを無効にする

リモートサーバーやVPSにアクセスする最も一般的な方法はSSH経由であり、その下のrootユーザーログインをブロックするには/etc/ssh/sshd_config ファイルを編集する必要があります。

$ sudo vim /etc/ssh/sshd_config

次に、 PermitRootLogin ディレクティブをコメント解除し(コメントがある場合)、その値をスクリーンショットに示すように no に設定します。

完了したら、ファイルを保存して閉じます。次に、 sshd サービスを再起動して最近の設定の変更を適用します。

$ sudo systemctl restart sshd 
OR
$ sudo service sshd restart 

ご存知かもしれませんが、この方法はopensshツールセットにのみ影響し、ssh、scp、sftpなどのプログラムはrootアカウントへのアクセスをブロックされます。

4. PAMを介したサービスへのrootアクセスの制限

プラガブル認証モジュール(略して PAM )は、Linuxシステムでの集中型、プラガブル、モジュール式、そして柔軟な認証方法です。 PAMは /lib/security/pam_listfile.so モジュールを通じて、特定のアカウントの権限を制限する上で大きな柔軟性をもたらします。

上記のモジュールを使用して、login、ssh、およびPAM対応プログラムなどの一部のターゲットサービスを介してログインすることを許可されていないユーザーのリストを参照できます。

この場合、loginサービスとsshdサービスへのアクセスを制限することによって、システムへのrootユーザーアクセスを無効にします。まず、 /etc/pam.d/ ディレクトリにあるターゲットサービスのファイルを開いて編集します。

$ sudo vim /etc/pam.d/login
OR
sudo vim /etc/pam.d/sshd

次に、以下の設定を両方のファイルに追加します。

auth    required       pam_listfile.so \
        onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers

完了したら、各ファイルを保存して閉じます。それから普通のファイル/etc/ssh/deniedusers を作成します。これには一行に一つの項目が含まれていて、誰にも読めないようにしてください。

その中にrootという名前を追加してから保存して閉じます。

$ sudo vim /etc/ssh/deniedusers

これに必要な権限も設定します。

$ sudo chmod 600 /etc/ssh/deniedusers

この方法は、PAM対応のプログラムとサービスにのみ影響します。あなたはFTPやEメールクライアントなどを介したシステムへのrootアクセスをブロックすることができます。

詳しくは、関連するmanページを参照してください。

$ man pam_securetty
$ man sshd_config
$ man pam

それで全部です!この記事では、Linuxでrootユーザーのログイン(またはアカウント)を無効にする4つの方法について説明しました。ご意見、ご提案、ご質問などありましたら、下記のフィードバックフォームからお気軽にお問い合わせください。