Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.2. root アクセスの制御

ホームマシンを管理する場合、ユーザーは root ユーザー、または sudosu などの setuid プログラムを使用して有効な root 権限を取得することによって、いくつかのタスクを実行する必要があります。setuid プログラムは、ユーザーがプログラムを操作するのではなく、プログラムの所有者のユーザー ID(UID)を操作するものです。このようなプログラムは、以下の例のように、長い形式の一覧の所有者セクションの s によって示されます。
~]$ ls -l /bin/su
-rwsr-xr-x. 1 root root 34904 Mar 10  2011 /bin/su
注記
s は大文字または小文字になります。大文字として表示される場合は、基礎となるパーミッションビットが設定されていないことを意味します。
ただし、組織のシステム管理者の場合、組織内の管理アクセスの方法は、マシンに対して行う必要があるかについて選択する必要があります。pam_console.so と呼ばれる PAM モジュールにより、通常は root ユーザーにのみ予約されている一部のアクティビティー(リムーバブルメディアの再起動やマウントなど)は、物理コンソールでログインした最初のユーザーに対して許可されます。ただし、ネットワーク設定の変更、マウスの設定、ネットワークデバイスのマウントなど、その他の重要なシステム管理タスクは、管理者権限なしでは実行できません。したがって、システム管理者は、ネットワーク上のユーザーの受信数を決定する必要があります。

4.2.1. root アクセスの拒否

管理者がこれらの理由で root としてログインできない場合、root パスワードは秘密を保持する必要があります。また、実行レベル 1 つまたは単一のユーザーモードへのアクセスは、ブートローダーパスワード保護から禁止する必要があります(このトピックの詳細は、「ブートローダーのセキュア化」 を参照してください)。
以下は、管理者がルートログインで許可されないようにする方法は 4 種類です。
root シェルの変更
ユーザーが root として直接ログインできないように、システム管理者は、/etc/passwd ファイルで root アカウントのシェルを /sbin/nologin に設定できます。

表4.2 root シェルの無効化

Effect 影響を受けない
root シェルへのアクセスを阻止し、そのような試行のログを記録します。以下のプログラムは、root アカウントにアクセスできなくなります。
  • login
  • gdm
  • kdm
  • xdm
  • su
  • ssh
  • scp
  • sftp
FTP クライアント、メールクライアント、多くの setuid プログラムなどのシェルを必要としないプログラム。以下のプログラムは、root アカウントへのアクセスを阻止できません
  • sudo
  • FTP クライアント
  • メールクライアント
任意のコンソールデバイス(tty)を使用した root アクセスの無効化
root アカウントへのアクセスをさらに制限するには、管理者は /etc/securetty ファイルを編集して、コンソールで root ログインを無効にすることができます。このファイルは、root ユーザーがログインできるすべてのデバイスを一覧表示します。ファイルが全く存在しない場合は、root ユーザーは、コンソールまたは raw ネットワークインターフェースを介してシステム上にある通信デバイス経由でログインできます。これは、ユーザーが Telnet を使用して root としてマシンにログインできるためにリスクがあり、パスワードをネットワーク上でプレーンテキストで送信するためです。
デフォルトでは、Red Hat Enterprise Linux 7 の /etc/securetty ファイルでは、root ユーザーがマシンに物理的にアタッチされているコンソールにログインすることのみが可能です。root ユーザーがログインしないようにするには、root でシェルプロンプトに以下のコマンドを入力して、このファイルの内容を削除します。
echo > /etc/securetty
KDM、GDM、および XDM ログインマネージャーでsecuretty サポートを有効にするには、以下の行を追加します。
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
下記のファイルを使用します。
  • /etc/pam.d/gdm
  • /etc/pam.d/gdm-autologin
  • /etc/pam.d/gdm-fingerprint
  • /etc/pam.d/gdm-password
  • /etc/pam.d/gdm-smartcard
  • /etc/pam.d/kdm
  • /etc/pam.d/kdm-np
  • /etc/pam.d/xdm
警告
空の /etc/securetty ファイルは、認証後にコンソールが開かないため 、root ユーザーがツールの OpenSSH スイートを使用してリモートでログインしないようにする必要があります。

表4.3 root ログインの無効化

Effect 影響を受けない
コンソールまたはネットワークを使用して root アカウントへのアクセスを阻止します。以下のプログラムは、root アカウントにアクセスできなくなります。
  • login
  • gdm
  • kdm
  • xdm
  • tty を開くその他のネットワークサービス
root としてログインしないプログラムですが、setuid またはその他のメカニズムを使用して管理タスクを実行します。以下のプログラムは、root アカウントへのアクセスを阻止できません
  • su
  • sudo
  • ssh
  • scp
  • sftp
root SSH ログインの無効化
SSH プロトコルを介した root ログインを防ぐには、SSH デーモンの設定ファイル /etc/ssh/sshd_config を編集して、以下を読み取る行を変更します。
#PermitRootLogin yes
以下のように読み取るには、以下を実行します。
PermitRootLogin no

表4.4 root SSH ログインの無効化

Effect 影響を受けない
ツールの OpenSSH スイートを使用して root アクセスを阻止します。以下のプログラムは、root アカウントにアクセスできなくなります。
  • ssh
  • scp
  • sftp
ツールの OpenSSH スイートの一部ではないプログラム。
PAM を使用したサービスへの root アクセスの制限
PAM は、/lib/security/pam_listfile.so モジュールにより、特定のアカウントを柔軟に拒否することができます。管理者はこのモジュールを使用して、ログインが許可されていないユーザーの一覧を参照できます。システムサービスへの root アクセスを制限するには、/etc/pam.d/ ディレクトリーのターゲットサービスのファイルを編集し、認証に pam_listfile.so モジュールが必要であることを確認してください。
以下は、/etc/pam.d/vsftpd の PAM 設定ファイルにある vsftpd FTP サーバーにモジュールがどのように使用されるかを示しています(ディレクティブが単一行にある場合は \ 文字は必要ありません )。
auth   required   /lib/security/pam_listfile.so   item=user \
sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
これにより、PAM が /etc/vsftpd.ftpusers ファイルを調べ、リストされたユーザーについてサービスへのアクセスを拒否します。管理者はこのファイルの名前を変更でき、各サービスに個別のリストを保持するか、または 1 つの中央一覧を使用して複数サービスへのアクセスを拒否することができます。
管理者が複数のサービスへのアクセスを拒否する場合は、以下のような行を PAM 設定ファイルに追加できます(たとえば、メールクライアントの /etc/pam.d/pop/etc/pam.d/imap、SSH クライアントの場合は /etc/pam.d/ssh など)。
PAM の詳細は、/usr/share/doc/pam-<version>/html/ ディレクトリーにある Linux-PAM』 System Administrator's Guide を参照してください。

表4.5 PAM を使用した root の無効化

Effect 影響を受けない
PAM 対応のネットワークサービスへの root アクセスを阻止します。以下のサービスが root アカウントにアクセスできなくなります。
  • login
  • gdm
  • kdm
  • xdm
  • ssh
  • scp
  • sftp
  • FTP クライアント
  • メールクライアント
  • PAM 対応のサービス
PAM を認識していないプログラムおよびサービス。