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 シェルの変更
ユーザーが root として直接ログインできないようにするために、システム管理者は、/etc/passwd ファイルで root アカウントのシェルを /sbin/nologin に設定します。

表4.2 Root シェルの無効化

影響あり 影響なし
root シェルへのアクセスを阻止し、そのような試みをログに記録します。以下のプログラムは root アカウントにアクセスできません。
  • login
  • gdm
  • kdm
  • xdm
  • su
  • ssh
  • scp
  • sftp
FTP クライアント、メールクライアント、多くの setuid プログラムなど、シェルを必要としないプログラム。以下のプログラムは root アカウントにアクセスでき ません
  • sudo
  • FTP クライアント
  • Email クライアント
任意のコンソールデバイス (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 ログインの無効化

影響あり 影響なし
コンソールまたはネットワークを使用して 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 ログインの無効化

影響あり 影響なし
ツールの OpenSSH スイートを使用した root アクセスを防ぎます。以下のプログラムは root アカウントにアクセスできません。
  • ssh
  • scp
  • sftp
OpenSSH のツール群に含まれないプログラム。
PAM を使用して、サービスへの root アクセスを制限する
PAM は、/lib/security/pam_listfile.so モジュールを通じて、特定のアカウントを拒否するための優れた柔軟性を提供します。管理者は、このモジュールを使用して、ログインを許可されていないユーザーのリストを参照できます。システムサービスへの root アクセスを制限するには、/etc/pam.d/ ディレクトリーの target サービスのファイルを編集し、pam_listfile.so モジュールが認証に必要であることを確認します。
以下は、/etc/pam.d/vsftpd PAM 設定ファイルの vsftpd FTP サーバーに モジュールを使用する方法の例です(ディレクティブが 1 行にある場合は最初の行の最後にある \ 文字は必要あり ません )。
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/ ディレクトリーにある 『The Linux-』 PAM System Administrator's Guide を参照してください。

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

影響あり 影響なし
PAM が認識しているネットワークサービスへの root アクセスを防ぎます。以下のサービスは、root アカウントにアクセスできません。
  • login
  • gdm
  • kdm
  • xdm
  • ssh
  • scp
  • sftp
  • FTP クライアント
  • Email クライアント
  • すべての PAM 対応サービス
PAM を意識していないプログラム、サービス。

4.2.2. Root アクセスの許可

組織内のユーザーが信頼され、コンピューターネーカレートである場合は、root アクセスを許可することが問題ではない可能性があります。ユーザーによる root アクセスの許可とは、デバイスの追加やネットワークインターフェイスの設定などのマイナーなアクティビティーを個々のユーザーが処理できるため、システム管理者はネットワークセキュリティーやその他の重要な問題に対処できます。
一方、個々のユーザーに root アクセスを付与すると、次の問題が発生する可能性があります。
  • マシン の設定ミス - root アクセスを持つユーザーはマシンの設定を誤設定でき、問題の解決に支援が必要になる場合があります。さらに悪いことに、知らずにセキュリティーホールを発生させてしまう可能性があります。
  • 安全で ないサービス の実行 - root アクセスを持つユーザーは、FTP や Telnet などのマシン上で安全でないサーバーを実行する可能性があり、ユーザー名とパスワードが危険にさらされる可能性があります。これらのサービスは、この情報をプレーンテキストでネットワーク経由で送信します。
  • 電子メールの添付ファイルを root で実行 — まれにですが、Linux に影響を与える電子メールウィルスが存在します。悪意のあるプログラムは、root ユーザーによって実行されると、最大の脅威となります。
  • 監査証跡の維持 - root アカウントは複数のユーザーが共有されるため、複数のシステム管理者がシステムを保守できるため、特定の時点でどのユーザーが root であったかを把握することはできません。セパレートログインの場合、ユーザーがログインしたアカウントと、セッション追跡のための一意の番号がタスク構造に入れられ、ユーザーが起動するすべてのプロセスに継承されます。同時ログインを使用する場合、一意の番号を使用して、特定のログインへのアクションを追跡することができます。アクションが監査イベントを生成すると、その一意な番号に関連するログインアカウントとセッションが記録されます。これらのログインとセッションを表示するには、aulast コマンドを使用します。aulast コマンドの --proof オプションを使用すると、特定の ausearch クエリーを提案し、特定のセッションによって生成された監査可能なイベントを分離できます。監査システムの詳細については、7章システム監査を参照してください。

4.2.3. Root アクセスの制限

管理者は、root ユーザーへのアクセスを拒否するのではなく、su または sudo などの setuid プログラムを介したアクセスのみを許可したい場合があります。su および sudo の詳細は、Red Hat Enterprise Linux 7 System Administrator's Guide の Gaining Privileges の章および su (1) および sudo (8 )の man ページを参照してください。

4.2.4. 自動ログアウトの有効化

ユーザーが root としてログインすると、無人ログインセッションが重大なセキュリティーリスクを引き起こす可能性があります。このリスクを減らすために、一定時間後にアイドル状態のユーザーを自動的にログアウトさせるようにシステムを設定することができます。
  1. root として、/etc/profile ファイルの先頭に次の行を追加して、このファイルの処理が中断されないようにします。
    trap "" 1 2 3 15
  2. root として、以下の行を /etc/profile ファイルに追加し、120 秒後に自動的にログアウトします。
    export TMOUT=120
    readonly TMOUT
    TMOUT 変数は、指定された秒数のアクティビティーがない場合にシェルを終了します(上記の例では 120 に設定)。特定のインストールのニーズに応じて、制限を変更することができます。

4.2.5. ブートローダーのセキュア化

Linux ブートローダーをパスワードで保護する主な理由は、以下のとおりです。
  1. シングルユーザーモードへのアクセスの防止 - 攻撃者がシステムをシングルユーザーモードで起動できる場合、root パスワードを求められることなく、root として自動的にログインします。
    警告
    /etc/sysconfig/init ファイルの SINGLE パラメーターを編集して、パスワードを使用してシングルユーザーモードへのアクセスを保護することは推奨されません。攻撃者は、GRUB 2 のカーネルコマンドラインでカスタム初期コマンド( init= パラメーターを使用)を指定することにより、パスワードをバイパスできます。Red Hat Enterprise Linux 7 System Administrator's Guide の Protecting GRUB 2 with a Password の章に記載されているように、GRUB 2 ブートローダーをパスワードで保護することが推奨されています。
  2. GRUB 2 コンソールへのアクセスの防止 - マシンがブートローダーとして GRUB 2 を使用する場合、攻撃者は GRUB 2 エディターインターフェイスを使用して設定を変更したり、cat コマンドを使用して情報を収集したりできます。
  3. 安全でないオペレーティングシステムへのアクセスの防止 — デュアルブートシステムの場合、攻撃者は、たとえば DOS のような、アクセス制御およびファイルパーミッションを無視するオペレーティングシステムを起動時に選択することができます。
Red Hat Enterprise Linux 7 には、Intel 64 および AMD64 プラットフォームに GRUB 2 ブートローダーが含まれています。GRUB 2 の詳細については、Red Hat Enterprise Linux 7 System Administrator's Guide の Working With the GRUB 2 Boot Loader の章を参照してください。

4.2.5.1. インタラクティブスタートアップの無効化

ブートシーケンスの最初に I キーを押すと、対話的にシステムを起動できます。インタラクティブな起動中に、システムは各サービスを 1 つずつ起動するように要求します。しかし、これでは、お客様のシステムに物理的にアクセスした攻撃者が、セキュリティー関連サービスを無効化し、システムにアクセスすることができる可能性があります。
root としてユーザーが対話的にシステムを起動しないようにするには、/etc/sysconfig/init ファイルの PROMPT パラメーターを無効にします。
PROMPT=no