第6章 権限の取得
システム管理者は (時にはユーザーも)、管理者アクセスでタスクを実行する必要があります。システムに root
ユーザーでアクセスすることは危険を伴う可能性があり、システムおよびデータの著しい破損につながる場合もあります。本章では、su
や sudo
といった 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 設定ツールを使用して以下のようにグループのメンバーを修正することもできます。この手順を実行するには、管理者権限が必要なことに注意してください。
-
Super キーを押してアクティビティーの概要に入り、
Users
と入力して Enter を押します。ユーザー 設定ツールが表示されます。Super キーはキーボードまたはその他のハードウェアに応じて様々なキーで表示されますが、多くの場合、Windows または Command キーとして通常は Spacebar の左側に表示されます。 - 変更を有効にするには、 ボタンをクリックし、有効な管理者パスワードを入力します。
- 左側の列でユーザーアイコンをクリックし、右側のペインでユーザーのプロパティーを表示します。
-
アカウントの種類を
Administrator
からStandard
に変更します。これにより、ユーザーがwheel
グループに追加されます。
Users ツールの詳細は 「グラフィカル環境でのユーザーの管理」 を参照してください。
wheel
グループにユーザーを追加したら、この追加した特定のユーザーにのみ su
コマンドの使用を許可することが推奨されます。それには、su
の PAM (プラグ可能な認証モジュール) 設定ファイル (/etc/pam.d/su
) を編集する必要があります。このファイルをテキストエディターで開き、以下の行の #
文字を削除してコメント設定を解除します。
#auth required pam_wheel.so use_uid
この変更で、wheel
の管理グループメンバーのみが、su
コマンドを使用して別のユーザーに切り換えることができるようになります。
root
ユーザーは、デフォルトで wheel
グループに含まれます。
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章ユーザーとグループの管理 では、グラフィカルユーザーインターフェースとコマンドラインを使用したシステムユーザーとグループの管理方法を説明します。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。