ウェブサイト検索

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


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

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

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

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

注意: root アカウントへのアクセスをブロックする前に、sudo コマンドを使用して root を取得できる管理者アカウントを作成していることを確認してください。 useradd コマンドを使用してユーザー権限を取得し、このユーザー アカウントに強力なパスワードを与えます。フラグ -m はユーザーのホーム ディレクトリを作成することを意味し、 -c はコメントを指定できます。

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

次に、usermod コマンドを使用して、このユーザーをシステム管理者の適切なグループに追加します。スイッチ -a はユーザー アカウントの追加を意味し、-G はユーザーを追加するグループを指定します。 (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 にカスタム メッセージを設定します。

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

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

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

上記のファイルを使用すると、root ユーザーがログインできるTTY デバイスを指定できます。このファイルを空にすると、コンピュータ システムに接続されているすべてのデバイスで root ログインできなくなります。

空のファイルを作成するには、実行します。

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

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

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

リモート サーバーまたは VPS にアクセスする最も一般的な方法は SSH 経由です。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 モジュールを使用して、特定のアカウントの権限を非常に柔軟に制限できます。

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

この場合、ログイン サービスと 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 を作成します。このファイルには 1 行に 1 つの項目が含まれ、誰でも読み取れるものではありません。

そこに root という名前を追加し、保存して閉じます。

sudo vim /etc/ssh/deniedusers

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

sudo chmod 600 /etc/ssh/deniedusers

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

詳細については、関連するマニュアル ページを参照してください。

man pam_securetty
man sshd_config
man pam

それだけです!この記事では、Linux で root ユーザーのログイン (またはアカウント) を無効にする 4 つの方法を説明しました。コメント、提案、質問がありましたら、以下のフィードバック フォームからお気軽にご連絡ください。