ルート accountは、Linuxおよびその他のUnixライクなオペレーティングシステムの究極のアカウントです。このアカウントは、完全な読み取り、書き込み、および実行のアクセス許可を持つシステム上のすべてのコマンドとファイルにアクセスできます。これは、システム上であらゆる種類のタスクを実行するために使用されます。他のユーザーのアカウントの作成/更新/アクセス/削除、ソフトウェアパッケージのインストール/削除/アップグレードなど。
ルート ユーザーには絶対的な力があり、ユーザーが実行するアクションはすべてシステム上重要です。この点で、ルートによるエラー ユーザーは、システムの通常の操作に大きな影響を与える可能性があります。さらに、このアカウントは、誤って、悪意を持って、またはポリシーを不注意に無視して、不適切または不適切に使用することによって悪用される可能性もあります。
したがって、Linuxサーバーでrootアクセスを無効にすることをお勧めします。代わりに、サーバーで重要なタスクを実行するために、sudoコマンドを使用してrootユーザー権限を取得するように構成する必要がある管理者アカウントを作成します。
この記事では、Linuxでrootユーザーアカウントのログインを無効にする4つの方法について説明します。
-m
ユーザーのホームディレクトリと-c
を作成することを意味します コメントを指定できます:
# useradd -m -c "Admin User" admin # passwd admin
次に、usermodコマンドを使用して、このユーザーをシステム管理者の適切なグループに追加します。ここで、switch -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


ファイルを保存して閉じます。
これから、ルートのとき ユーザーがログインすると、「このアカウントは現在利用できません。」というメッセージが表示されます。 」これはデフォルトのメッセージですが、ファイル /etc/nologin.txt に変更して、カスタムメッセージを設定できます。 。
この方法は、ユーザーログインにシェルを必要とするプログラムでのみ有効です。それ以外の場合は、 sudo 、 ftp およびメール クライアントはrootアカウントにアクセスできます。
2。コンソールデバイス(TTY)を介したrootログインを無効にする
2番目の方法では、 PAMを使用します pam_securettyというモジュール 、ユーザーが「安全な」TTYにログインしている場合にのみrootアクセスを許可します 、 / etc / securettyのリストで定義されています 。
上記のファイルでは、どの TTYを指定できます rootユーザーがログインを許可されているデバイス。このファイルを空にすると、コンピューターシステムに接続されているデバイスでrootがログインできなくなります。
空のファイルを作成するには、を実行します。
$ 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経由のサービスに制限する
Pluggable Authentication Modules ( 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つの方法について説明しました。コメント、提案、質問がありましたら、下のフィードバックフォームからお気軽にご連絡ください。