Red Hat Training

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

第6章 権限の取得

システム管理者は (時にはユーザーも)、管理者アクセスでタスクを実行する必要があります。システムに root ユーザーでアクセスすることは危険を伴う可能性があり、システムおよびデータの著しい破損につながる場合もあります。本章では、susudo といった setuid プログラムを使用して管理者権限を取得する方法を説明します。これらのプログラムを使用すると、高レベルの制御およびシステムセキュリティーを維持しつつ、通常は root ユーザーしかできないタスクを特定のユーザーが実行できます。

管理者制御や潜在的な危険、特権アクセスの不適切な使用によるデータ破損を回避する方法は Red Hat Enterprise Linux 7 セキュリティーガイドを参照してください。

6.1. su ユーティリティーを使用した管理アクセスの設定

ユーザーは、su を実行するとroot パスワードを求められます。認証されると root シェルプロンプトが表示されます。

su コマンドでログインすると、そのユーザーは root ユーザーとなり、システムへの絶対管理アクセスを持つことになります。このアクセスが有効になっている場合は、SELinux によって課される制限が適用されることに注意してください。また、ユーザーが root になったら、パスワードを求められることなく、su コマンドを使用してシステム上の他のユーザーに変更を加えることができます。

このプログラムは非常に強力なので、組織内の管理者はこのコマンドにアクセスできるユーザーを制限してください。

簡単な制限方法は、wheel と呼ばれる特別な管理グループにユーザーを追加することです。これを実行するには、root で以下のコマンドを実行します。

~]# usermod -a -G wheel username

このコマンドで、username を、wheel グループに追加するユーザー名に置き換えます。

また、Users 設定ツールを使用して以下のようにグループのメンバーを修正することもできます。この手順を実行するには、管理者権限が必要なことに注意してください。

  1. Super キーを押してアクティビティーの概要に入り、Users と入力して Enter を押します。ユーザー 設定ツールが表示されます。Super キーはキーボードまたはその他のハードウェアに応じて様々なキーで表示されますが、多くの場合、Windows または Command キーとして通常は Spacebar の左側に表示されます。
  2. 変更を有効にするには、ロック解除 ボタンをクリックし、有効な管理者パスワードを入力します。
  3. 左側の列でユーザーアイコンをクリックし、右側のペインでユーザーのプロパティーを表示します。
  4. アカウントの種類を Standard から Administrator に変更します。これにより、ユーザーが wheel グループに追加されます。

Users ツールの詳細は 「グラフィカル環境でのユーザーの管理」 を参照してください。

wheel グループにユーザーを追加したら、この追加した特定のユーザーにのみ su コマンドの使用を許可することが推奨されます。それには、su の PAM (プラグ可能な認証モジュール) 設定ファイル (/etc/pam.d/su) を編集する必要があります。このファイルをテキストエディターで開き、以下の行の # 文字を削除してコメント設定を解除します。

#auth      required    pam_wheel.so use_uid

この変更で、wheel の管理グループメンバーのみが、su コマンドを使用して別のユーザーに切り換えることができるようになります。

6.2. sudo ユーティリティーを使用した管理アクセスを設定

ユーザーに管理アクセスを付与する別のアプローチとして sudo コマンドを利用できます。信頼されるユーザーが、管理コマンドの前に sudo を付けると、このユーザー自身の パスワードが要求されます。ユーザーが認証され、コマンドが許可されると、管理コマンドは root 権限で実行されます。

sudo コマンドの基本的なフォーマットは、以下のとおりです。

sudo command

上記の例の command の部分を、通常は root ユーザーのみが使用する mount といったコマンドに置き換えます。

sudo コマンドでは、ハイレベルの柔軟性が可能になります。たとえば、/etc/sudoers 設定ファイルに記載されているユーザーのみが sudo コマンドを使うことができ、root シェルではなく、そのユーザーの シェルでコマンドが実行されます。これは、Red Hat Enterprise Linux 7 セキュリティーガイド に示されるように、root シェルを完全に無効にできることを意味します。

sudo コマンドを使用した正常な認証のログはすべて /var/log/messages ファイルに記録され、このコマンドを実行したユーザー名で実行されたコマンドは /var/log/secure ファイルに記録されます。新たなログが必要な場合は、以下の行を /etc/pam.d/system-auth ファイルに追加して、pam_tty_audit モジュールで特定ユーザーの TTY 監査を有効にします。

session required pam_tty_audit.so disable=pattern enable=pattern

pattern で表示されるのはコンマで区切ったユーザーのリストで、オプションでグロブを使用できます。たとえば、以下の設定は、root ユーザーのTTY 監査を有効にし、その他のユーザーについては無効にします。

session required pam_tty_audit.so disable=* enable=root
重要

TTY の監査システムの pam_tty_audit PAM モジュールを設定すると、TTY 入力のみが記録されます。つまり、監査されるユーザーがログインすると、pam_tty_audit には、/var/log/audit/audit.log ファイルに記録されるキーストロークと同じ内容が記録されます。詳細は、man ページの pam_tty_audit(8) を参照してください。

sudo コマンドのもう一つの利点は、各ユーザーのニーズに応じて特定のコマンドへのアクセスを管理者が許可できることです。

管理者が sudo 設定ファイルである /etc/sudoers を編集する場合は、visudo コマンドを使用することが推奨されます。

他のユーザーに完全な管理権限を付与する場合は、visudo と入力し、ユーザー権限の指定セクションに以下の行を追加します。

juan ALL=(ALL) ALL

この例では、ユーザーの juan は、sudo を使用すればどのホストからでもどのコマンドを実行できることを示しています。

以下の例では、sudo を設定する際に可能な粒度を示しています。

%users localhost=/usr/sbin/shutdown -h now

この例が示しているのは、コンソールからであれば、 users システムグループのどのユーザーでも、/sbin/shutdown -h now コマンドを実行できるということです。

sudoers の man ページには、このファイルのオプションの詳細なリストが記載されています。

/etc/sudoers ファイルで NOPASSWD オプションを指定して、パスワードを指定する必要がない sudo ユーザーを設定することもできます。

user_name ALL=(ALL)	NOPASSWD: ALL

ただし、このようなユーザーであっても、sudo は PAM (Pluggable Authentication Module) アカウント管理モジュールを実行します。これにより、認証フェーズ外で PAM モジュールに課せられた制限を確認できるようになります。これにより、PAM モジュールが正しく動作するようになります。たとえば、pam_time モジュールの場合、時間ベースのアカウント制限は失敗しません。

警告

PAM ベースのすべてのアクセス制御ルールで、sudo を、許可されるサービスの一覧に常に含めるようにしてください。そうしないと、ユーザーが sudo にアクセスしようとしたときに「permission denied」エラーメッセージが表示されますが、現行のアクセス制御ルールに基づいてアクセスが禁止されます。

詳細は、Red Hat ナレッジベースの記事「After patching to Red Hat Enterprise Linux 7.6 sudo gives a permission denied error.」を参照してください。

重要

sudo コマンドの使用時には、潜在的なリスクがいくつか存在することを覚えておく必要があります。このリスクは、上記のように visudo を使用して /etc/sudoers 設定ファイルを編集することで回避できます。/etc/sudoers ファイルをデフォルトの状態にしておくと、wheel グループのユーザー全員に無制限の root アクセスを与えることになります。

  • sudo は、デフォルトで 5 分間、パスワードを保存します。この間はコマンドを続けて使用しても、ユーザーはパスワードを要求されません。このため、ユーザーがログイン状態のままワークステーションを離れたりロックしない状態にしておくと、攻撃者に悪用されかねません。この動作は、以下の行を /etc/sudoers ファイルに追加することで変更できます。

    Defaults  timestamp_timeout=value

    value には、指定するタイムアウトの分数を入れます。value を 0 にすると sudo は毎回パスワードを要求します。

  • sudo 使用者のアカウントが侵害されると、攻撃者は sudo を使用して管理権限のある新たなシェルを開くことができます。

    sudo /bin/bash

    この方法や同様の方法で root として新たなシェルを開くと、/etc/sudoers ファイルで指定されたタイムアウト時間を無視し、新たに開かれたセッションが閉じられるまで攻撃者に sudo パスワード入力を要求することがないため、理論上は時間の制限なく攻撃者に管理アクセスを与えることになります。

6.3. 関連資料

ユーザーに管理者権限を与えるプログラムは潜在的なセキュリティーリスクでありますが、セキュリティーの説明は本ガイドの対象外となります。セキュリティーや管理者アクセスに関する情報は、以下に挙げる資料を参照してください。

インストールされているドキュメント

  • su(1): su の man ページには、このコマンドで利用可能なオプションの情報があります。
  • sudo(8): sudo の man ページには、このコマンドの動作のカスタマイズで利用可能なオプションのリストがあります。
  • pam(8): この man ページでは、Linux 向け Pluggable Authentication Modules (PAM) の使用方法が説明されています。

オンラインドキュメント

  • Red Hat Enterprise Linux 7 セキュリティーガイド: Red Hat Enterprise Linux 7 の セキュリティーガイド では、setuid プログラムに関する潜在的なセキュリティー問題の詳細と、そのリスクを低減するテクニックを紹介します。

関連項目

  • 4章ユーザーとグループの管理 では、グラフィカルユーザーインターフェースとコマンドラインを使用したシステムユーザーとグループの管理方法を説明します。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。