この章では、Solaris 環境のシステムのセキュリティを設定する手順について説明します。
この章で説明する手順は次のとおりです。
システムのセキュリティの概要については、「システムのセキュリティ」を参照してください。
この節では、ユーザーのログイン情報を表示する方法について説明します。
logins コマンドを使用してユーザーのログイン状態を表示します。
# logins -x -l username |
-x |
ログイン状態情報の拡張セットを表示する |
-l username |
指定するユーザーのログイン状態を表示する。username はユーザーのログイン名。複数のログイン名は、コンマで区切って指定する |
logins コマンドは、ローカルの /etc/passwd ファイルとネームサービスパスワードデータベース (使用している場合) を使用して、ユーザーのログイン状態を表示します。詳細は、logins(1M) のマニュアルページを参照してください。
次の例では、ユーザー rimmer のログイン状態が表示されます。
# logins -x -l rimmer rimmer 500 staff 10 Arnold J. Rimmer /export/home/rimmer /bin/sh PS 010170 10 7 -1 |
すべてのユーザーが有効なパスワードを持っているかどうかを確認する必要があります。
スーパーユーザーになるか、同等の役割を引き受けます。
logins コマンドを使用して、パスワードを持っていないユーザーをすべて表示します。
# logins -p |
-p オプションを指定すると、パスワードを持たないユーザーが表示されます。logins コマンドは、ローカルの /etc/passwd ファイルとネームサービスパスワードデータベースを使用して、ユーザーのログイン状態を表示します。
次の例では、パスワードを持っていないユーザー pmorph が表示されます。
# logins -p pmorph 501 other 1 Polly Morph # |
ユーザーのログインを一時的に無効にするには、次のどちらかの操作を行います。
/etc/nologin ファイルを作成します。
システムを実行レベル 0 (シングルユーザーモード) にします。シングルユーザーモードに変更する方法の詳細については、『Solaris のシステム管理 (基本編)』の「システムのシャットダウン (手順)」を参照してください。
このファイルを作成する目的は、シャットダウンやルーチン保守のためにシステムが一定の期間利用できなくなるときに、ユーザーのログインを禁止して、ユーザーに通知することです。
このファイルが存在するシステムにユーザーがログインしようとすると、nologin ファイルの内容が表示されて、ユーザーのログインは中断されます。スーパーユーザーのログインは影響を受けません。詳細については、nologin(4) のマニュアルページを参照してください。
スーパーユーザーになるか、同等の役割を引き受けます。
エディタを使用して、/etc/nologin ファイルを作成します。
# vi /etc/nologin |
システムの利用に関するメッセージを入力します。
ファイルを閉じて、保存します。
この例は、システムが利用できないことをユーザーに通知する方法を示しています。
# vi /etc/nologin (ここでシステムメッセージを追加する) # cat /etc/nologin ***ログインは許可されません。*** ***システムは AM12:00 まで利用できません。*** |
root 専用の読み取り権と書き込み権を使用して /var/adm/loginlog ファイルを作成すると、失敗したログイン操作を保存できます。loginlog ファイルを作成したあとは、操作に 5 回以上失敗すると、失敗したログイン操作がすべてこのファイルに自動的に書き込まれます。手順の詳細については、「失敗したログイン操作を保存する方法」を参照してください。
loginlog ファイルには、失敗した操作ごとに 1 つずつエントリが入っています。各エントリには、ユーザーのログイン名、tty デバイス、操作の失敗回数が入っています。4 回以下の失敗であれば、ログに記録されません。
loginlog ファイルは急激に大きくなることがあります。このファイル内の情報を使用し、ファイルが大きくなりすぎないようにするには、ファイルの内容をときどき確認して消去する必要があります。このファイルに多数の操作が記録されている場合は、コンピュータシステムに誰かが侵入しようとした可能性があります。このファイルについての詳細は、loginlog(4) のマニュアルページを参照してください。
/var/adm ディレクトリに loginlog ファイルを作成します。
# touch /var/adm/loginlog |
loginlog ファイルに root の読み取り権と書き込み権を設定します。
# chmod 600 /var/adm/loginlog |
loginlog ファイルのグループのメンバーシップを sys に変更します。
# chgrp sys /var/adm/loginlog |
間違ったパスワードを使用してシステムに 5 回ログインしようとしたログが記録されていることを確認します。/var/adm/loginlog ファイルを表示します。
# more /var/adm/loginlog rimmer:/dev/pts/1:Wed Jan 16 09:22:31 2002 rimmer:/dev/pts/1:Wed Jan 16 09:22:39 2002 rimmer:/dev/pts/1:Wed Jan 16 09:22:45 2002 rimmer:/dev/pts/1:Wed Jan 16 09:22:53 2002 rimmer:/dev/pts/1:Wed Jan 16 09:23:01 2002 # |
モデムやダイヤルアップポートを通じてシステムにアクセスするユーザーに「ダイヤルアップパスワード」を要求して、パスワード保護にセキュリティ層を追加できます。ダイヤルアップパスワードは、ユーザーがシステムへのアクセス権を取得する前に入力する必要があるパスワードです。
スーパーユーザー以外はダイヤルアップパスワードを作成または変更できません。システムの完全性を確保するために、月に一度はパスワードを変更する必要があります。この機能の最も有効な使用方法は、ゲートウェイシステムへのアクセス権を取得するためのダイヤルアップパスワードを要求することです。
ダイヤルアップパスワードの作成には、/etc/dialups と /etc/d_passwd という 2 つのファイルが必要です。/etc/dialups のファイルには、ダイヤルアップパスワードを必要とするポートのリストを含みます。/etc/d_passwd のファイルには、追加のダイヤルアップパスワードとして暗号化パスワードを必要とするシェルプログラムのリストを含みます。
ユーザーのログインプログラム (/etc/passwd ファイルで指定) が /etc/d_passwd ファイル内で見つからない場合や、/etc/passwd ファイルのログインシェルフィールドが空の場合は、/usr/bin/sh のパスワードエントリが使用されます。
/etc/passwd 内のユーザーのログインシェルが /etc/d_passwd 内のエントリと一致する場合、そのユーザーはダイヤルアップパスワードを入力する必要があります。
/etc/passwd 内のユーザーのログインシェルが /etc/d_passwd 内で見つからない場合、そのユーザーはデフォルトのパスワードを入力する必要があります。デフォルトのパスワードは /usr/bin/sh のエントリです。
/etc/passwd 内のログインシェルフィールドが空の場合、そのユーザーはデフォルトのパスワード (/usr/bin/sh のエントリ) を入力する必要があります。
/etc/d_passwd に /usr/bin/sh のエントリがない場合、/etc/passwd 内のログインシェルフィールドが空のユーザー、または /etc/d_passwd 内のエントリと一致しないユーザーには、ダイヤルアップパスワードの入力を求めるプロンプトは表示されません。
/etc/d_passwd にエントリ /usr/bin/sh:*: しか入っていない場合、ダイヤルアップログインは使用できません。
最初にダイヤルアップパスワードを設定するときには、少なくとも 1 つのポートにログインしている状態で、別のポートでパスワードをテストしてください。追加のパスワードをインストールし、ログアウトして新しいパスワードをテストする間に失敗すると、元どおりログインできなくなることがあります。まだ別のポートにログインしていれば、元に戻ってミスを訂正できます。
スーパーユーザーになるか、または同等の役割を引き受けます。
ダイヤルアップパスワード保護が必要なすべてのポートを含む、シリアルデバイスのリストが入った /etc/dialups ファイルを作成します。
/etc/dialups ファイルは次のようになります。
/dev/term/a /dev/term/b /dev/term/c |
ダイヤルアップパスワードを要求するログインプログラムと暗号化されたダイヤルアップパスワードが入った /etc/d_passwd ファイルを作成します。
uucico、sh、ksh、csh など、ユーザーがログイン時に実行できるシェルプログラムを含めます。/etc/d_passwd ファイルは次のようになります。
/usr/lib/uucp/uucico:encrypted-password: /usr/bin/csh:encrypted-password: /usr/bin/ksh:encrypted-password: /usr/bin/sh:encrypted-password: |
2 つのファイルの所有権を root に設定します。
# chown root /etc/dialups /etc/d_passwd |
2 つのファイルのグループの所有権を root に設定します。
# chgrp root /etc/dialups /etc/d_passwd |
2 つのファイルの root の読み取り権と書き込み権を設定します。
# chmod 600 /etc/dialups /etc/d_passwd |
暗号化パスワードを作成します。
username.temp ファイルから /etc/d_passwd ファイルに暗号化パスワードをコピーします。
ログインシェルごとに別のパスワードを作成するか、共通のパスワードを使用できます。
スーパーユーザーのアカウントは、基本的な機能を実行するためにオペレーティングシステムに使用され、オペレーティングシステム全体を広範囲にわたって制御します。また、重要なシステムプログラムにアクセスして実行する権限を持ちます。このため、スーパーユーザーによって実行されるプログラムの場合、セキュリティ上の制約はほとんどありません。
/etc/default/login ファイルを通じて特定の装置へのスーパーユーザーアクセスを制限すると、システム上のスーパーユーザーアカウントを保護できます。たとえば、スーパーユーザーアクセスをコンソールに限定しておくと、コンソールからしかスーパーユーザーとしてシステムにログインできなくなります。誰かがシステムにリモートログインしてシステム管理作業を実行する場合は、まず自分のユーザーログインを使用してログインしてから、su コマンドを使用してスーパーユーザーになる必要があります。詳細な手順については、次の節を参照してください。
Solaris をインストールする場合、コンソールへのスーパーユーザーログインはデフォルトで制限されます。
スーパーユーザーのアカウントを使用しない場合は、役割によるアクセス制御 (RBAC) を設定します。RBAC の概要については、第 17 章「役割によるアクセス制御 (概要)」を参照してください。
/etc/default/login ファイルを編集します。
次の行のコメントを解除します。
CONSOLE=/dev/console |
このシステムにリモートログインするユーザーは、まず自分のユーザーログインを使用してログインしてから、su コマンドを使用してスーパーユーザーになる必要があります。
このシステムにスーパーユーザーとしてリモートログインして、操作が失敗することを検証してください。
/var/adm/sulog ファイルを監視すると、su の操作を監視することができます。su コマンドを使用するたびに、このファイルにログが記録されます。このファイルへの su ログの記録は、デフォルトで、 /etc/default/su ファイルの次のエントリで有効になっています。
SULOG=/var/adm/sulog |
su コマンドを使用すると、sulog ファイルには、ユーザーからスーパーユーザーに切り替えたときの su コマンドの使用を含め、すべての su コマンドの使用歴が記録されます。各エントリは、コマンドが入力された日時、su コマンドの成否 (+ または -)、コマンドが実行されたポート、およびユーザー名と切り替えたユーザー ID を示します。
/etc/default/su ファイルを通じて、リモートシステムから su コマンドを使用してスーパーユーザーのアクセス権を取得しようとする操作が発生するたびに、コンソールに表示されるようにシステムを設定することができます。これは、現在作業中のシステム上で誰かがスーパーユーザーのアクセス権を取得しようとした場合に、それをすぐに検出する適切な方法です。詳細な手順については次の章を参照してください。
/var/adm/sulog ファイルの内容を定期的に監視します。
# more /var/adm/sulog SU 12/20 16:26 + pts/0 nathan-root SU 12/21 10:59 + pts/0 nathan-root SU 01/12 11:11 + pts/0 root-joebob SU 01/12 14:56 + pts/0 pmorph-root SU 01/12 14:57 + pts/0 pmorph-root |
/etc/default/su ファイルを編集します。
次の行のコメントを解除します。
CONSOLE=/dev/console |
su コマンドを使用してスーパーユーザーになり、システムコンソールにメッセージが出力されるかどうかを検証してください。
システムのアボートシーケンスを無効または有効にするには、次の手順を使用します。デフォルトのシステム動作では、システムのアボートシーケンスは有効になっています。
一部のサーバーシステムでは、キースイッチを安全な位置に設定すると、ソフトウェアキーボードのアボート設定が無効になります。そのため、次の手順で行なった変更が実装されないことがあります。