4.4. 管理制御

自宅のマシンを管理する際は、rootユーザーとしてあるいは sudosu などの setuid プログラムから有効な root 権限を取得して、いくつかのタスクを実行する必要があります。setuidプログラムは、ユーザーがプログラムを操作するのではなく、プログラムのオーナーのユーザーID (UID)で動作するプログラムです。このようなプログラムは、次の例のように、長い一覧形式のオーナーセクションに小文字のsが表示されています:

-rwsr-xr-x    1 root     root        47324 May  1 08:09 /bin/su

しかし、社内のシステム管理者は、社内のユーザーに対し彼らのマシンへどのくらいの管理アクセスを持たせるかを決めなくてはなりません。pam_console.soと呼ばれる PAMモジュールで、再起動やリムーバブルメディアのマウントなど通常は rootユーザー専用のいくつかの作業が物理的なコンソールでログインした最初のユーザーに許可されます (pam_console.soモジュールについての詳細は、 Red Hat Enterprise Linux リファレンスガイドにある PAM (Pluggable Authentication Modules)の章を参照)。ただし、ネットワークの設定変更、新しいマウスの設定、ネットワークデバイスのマウントなどの他の重要な管理タスクは管理アクセスがないと実行できません。その結果、システム管理者はネットワーク上のユーザーがどのくらいアクセスを与えられるかを決定する必要がでてきます。

4.4.1. rootアクセスを許可する

企業内のユーザーが信頼できるコンピュータ知識の豊富な人達ばかりなら、rootアクセスの許可を与えるのは悪くないかもしれません。rootアクセスを許可するということは、デバイスの追加やネットワークインターフェースの設定などをユーザー個人で行なうことができるため、システム管理者はネットワークセキュリティや他の重要な問題の処理に時間を取ることができます。

一方、rootアクセスを個別のユーザーに与えると次のような問題の原因となる可能性があります(一部の例):

4.4.2. rootアクセスを禁止する

こうした理由や諸事情から、ユーザーに rootとしてのログイン許可を与えることが不安に思われる場合、 rootパスワードは機密とし、ランレベル1やシングルユーザーモードへのアクセスはブートローダパスワード保護(詳細は項4.2.2を参照) で禁止してください。

表4-1では、管理者が rootログインを確実に禁止する方法を示します:

方法説明効果対象外
rootシェルを変更する。/etc/passwdファイルを編集して、シェルを/bin/bashから/sbin/nologin に変更します。

rootシェルへのアクセスを妨げ、試行を記録します。
次のプログラムがrootアカウントへのアクセスを妨げられます。
login
gdm
kdm
xdm
su
ssh
scp
sftp

シェルを必要としないプログラム、FTPクライアントやメールクライアント、多くのsetuidプログラム。
以下のプログラムはrootアカウントへのアクセスを妨げられません
sudo
FTP クライアント
Email クライアント

すべてのコンソールデバイス(tty)からのrootアクセスを使用禁止にする。空の/etc/securettyファイルはコンピュータに接続しているすべてのデバイスでのrootログインを妨げます。

コンソールまたはネットワークからのrootアカウントへのアクセスを妨げます。以下のプログラムはrootアカウントへのアクセスを妨げられます。
login
gdm
kdm
xdm
ttyを開く他のネットワークサービス

rootとしてログインしないプログラム。ただし、 setuid や他のメカニズムから管理タスクを実行するもの。
以下のプログラムはrootアカウントへのアクセスを妨げられません
su
sudo
ssh
scp
sftp

rootのSSHログインを使用禁止にする。/etc/ssh/sshd_configファイルを編集して、PermitRootLoginパラメータをnoに設定します。

OpenSSHツールセットからのrootアクセスを妨げます。以下のプログラムはrootアカウントへのアクセスを妨げられます。
ssh
scp
sftp

これはOpenSSHツールセットへのrootアクセスのみを妨げます。

PAMを使ってサービスへのrootアクセスを制限する。/etc/pam.d/ディレクトリで目的のサービスのファイルを編集します。 pam_listfile.soが認証を必要とするのを確認します。[a]

PAM認識であるネットワークサービスヘのrootアクセスを妨げます。
以下のサービスはrootアカウントへのアクセスを妨げられます。
FTP クライアント
Email クライアント
login
gdm
kdm
xdm
ssh
scp
sftp
PAM認識サービスはすべて

PAM認識ではないプログラムとサービス

注記:
a. 詳細は、項4.4.2.4を参照してください。

表 4-1. rootアクセスを使用禁止にする方法

4.4.2.1. rootシェルを使用禁止にする

ユーザーが直接rootとしてログインしないようにするために、システム管理者は rootアカウントのシェルを/etc/passwdファイルで /sbin/nologinに設定できます。これにより、suコマンドやsshコマンドなど、シェルを必要とするコマンドからrootアカウントへのアクセスが妨げられます。

重要重要
 

シェルにアクセスする必要のないプログラム。電子メールクライアントや sudoコマンドなどは、rootアカウントにアクセスできます。

4.4.2.2. rootログインを使用禁止にする

root アカウントへのアクセスを更に制限するには、/etc/securetty ファイルを編集してコンソールで rootログインを無効にすることができます。このファイルは、rootユーザーがログインする許可のあるデバイスすべてを一覧表示しています。ファイルがまったく存在しない場合は、rootユーザーはシステム上のあらゆる通信デバイスから、コンソールか rawネットワークインターフェース経由でログインできます。これはユーザーが rootとして自身のマシンに Telnet できるため危険であり、ネットワーク上で自分のパスワードを平文で送信してしまいます。デフォルトでは、Red Hat Enterprise Linux の/etc/securettyファイルは、マシンに物理的に接続されているコンソールでのログインはrootユーザーのみに許可しています。root がログインしないようにするには、以下のコマンドを入力してこのファイルの内容を削除します:

echo > /etc/securetty

警告警告
 

空白の/etc/securettyファイルは、 認証までコンソールが開かないため、OpenSSHツールセットを使う遠隔からのrootユーザー ログインは防ぎません

4.4.2.3. rootSSHログインを使用禁止にする

SSH プロトコルからの rootログインを防ぐには、SSH デーモンの設定ファイル (/etc/ssh/sshd_config)を編集します。次のように表示されている行を変更します:

# PermitRootLogin yes

次のように変更します。

 
PermitRootLogin no

4.4.2.4. PAMを使うrootを使用禁止にする

PAMは、/lib/security/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つの主要一覧を使うこともできます。

管理者が複数のサービスへのアクセスを拒否したい場合、メールクライアントの/etc/pam.d/pop/etc/pam.d/imap、あるいはSSHクライアントの /etc/pam.d/sshなどのPAM設定サービスに、似たような行を加えることができます。

PAMついての詳細は、Red Hat Enterprise Linux リファレンスガイドにある PAM (Pluggable Authentication Modules)の章を 参照してください。

4.4.3. rootアクセスを制限する

rootユーザーへのアクセスを完全に拒否する代わりに、susudoなどの setuid プログラムからのみアクセスを許可することもできます。

4.4.3.1. suコマンド

suコマンドを入力すると、ユーザーはrootパスワードを求められ、認証されるとrootシェルプロンプトが与えられます。

suコマンドからログインすると、ユーザーは rootユーザーとなり、システムに対して絶対的な管理アクセス権を持ちます。さらに、ユーザーが root になると、パスワードを求められることなくsuコマンドを使ってシステム上の他のユーザーになることが可能になります。

このプログラムは非常に強力であるため、企業内の管理者はそのコマンドへのアクセスを持つ人を限定したいことがあるかもしれません。

これを行なう簡単な方法は、ユーザーをwheelと呼ばれる特殊管理グループに追加することです。追加するには、rootになり次のコマンドを入力します。

usermod -G wheel <username>

上記のコマンドで、<username>には、wheel グループに追加するユーザー名を入れます。

この目的で ユーザーマネージャ を使用するには、メインメニューボタン (パネル上) => システム設定 => ユーザーとグループの順に進むか、シェルプロンプトでsystem-config-usersコマンドを入力します。ユーザータブを選択して、ユーザーの一覧からユーザーを選択します。ボタンメニューのプロパティをクリックします(または、プルダウンメニューからファイル => プロパティと選ぶ)。

次に、グループタブを選択して、 図4-2で示すように wheel グループをクリックします。

図 4-2. Groupsのタブ画面

次に、su (/etc/pam.d/su)の PAM設定ファイルをテキストエディタで開き、以下の行から[#]コメントを削除します。

auth  required /lib/security/$ISA/pam_wheel.so use_uid

これを行なうと、管理グループwheelのメンバーだけにそのプログラムの使用を許可します。

注記注記
 

デフォルトでは、rootユーザーはwheelグループのメンバーです。

4.4.3.2. sudoコマンド

sudoコマンドでは、ユーザーに管理アクセスを与える別の方法を提供しています。信頼できるユーザーが管理コマンドにsudoを先に付けて実行すると、このユーザーは自身のパスワードを要求されます。認証され、そのコマンドが許可されれば、管理コマンドはrootユーザーで行なわれたかのように実行されます。

sudoコマンドの基本形式は次のようになります:

sudo <command>

上記の例で、<command>には、 mountなどの通常は rootユーザー専用のコマンドを入れます。

重要重要
 

sudoer は 5分間パスワードを求められることなく再度そのコマンドを使用できるため、sudoコマンドのユーザーは、マシンから離れる前にログアウトするよう十分に気をつける必要があります。このセッティングは設定ファイルの/etc/sudoersから変更できます。

sudoコマンドは高い柔軟性を備えています。例えば、/etc/sudoers設定ファイルに記載されているユーザーのみがsudoコマンドの使用を許可され、そのコマンドは rootシェルではなくそのユーザーのシェルで実行されます。つまり、項4.4.2.1で示すように rootシェルを完全に使用禁止にすることができます。

sudoコマンドは広範囲の追跡監査も行ないます。成功した認証はそれぞれ/var/log/messagesファイルに記録され、発行されたコマンドは発行者のユーザー名と共に/var/log/secure ファイルに記録されます。

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

sudo設定ファイルの/etc/sudoersを編集する管理者は、visudoコマンドを使用してください。

誰かに管理権限を与えるには、visudoを入力してからユーザーの権利指定セクションで以下のような行を追加します。

juan ALL=(ALL) ALL

この例では、ユーザーjuanが どのホストからもsudoを使用してどのコマンドも実行できるように決めています。

例えば、sudoを設定する際に、以下のように特定コマンドを設定できます。

%users  localhost=/sbin/shutdown -h now

この例では、コンソールでならいずれのユーザーも/sbin/shutdown -h now コマンドを発行できるように決めています。

sudoersのmanページにはこのファイル用オプションの詳細一覧が記述されています。