ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 の管理: セキュリティーサービス Oracle Solaris 11.1 Information Library (日本語) |
パート II システム、ファイル、およびデバイスのセキュリティー
10. Oracle Solaris のセキュリティー属性 (参照)
22. Kerberos エラーメッセージとトラブルシューティング
一部のシステムリソースは、デフォルトで保護されています。さらに、システム管理者はシステムの動作状態を制御したり、モニターしたりすることができます。システム管理者は、だれがどのリソースを使用できるかを制限したり、リソースの使用状況を記録したり、だれがリソースを使用しているかをモニターしたりできます。システム管理者は、リソースの不適切な使用を最小限に抑えるようにシステムを設定することもできます。
Oracle Solaris では、アドレス空間レイアウトのランダム化 (ASLR) を有効にするために、そのユーザーランドバイナリの多くにタグが付けられます。ASLR では、アドレス空間の主要な部分の開始アドレスがランダム化されます。このセキュリティー防御メカニズムにより、ソフトウェアの脆弱性を悪用しようとする ROP (Return Oriented Programming) 攻撃を失敗させることができます。
ゾーンは、そのプロセス用にこのランダム化されたレイアウトを継承します。ASLR の使用はすべてのバイナリに最適であるとは限らないため、ASLR の使用は、ゾーンのレベルとバイナリのレベルで構成できます。
次の 3 つの ASLR 構成が可能です。
無効 – ASLR は、すべてのバイナリに対して無効です。
タグ付きバイナリ – ASLR は、バイナリ内にコーディングされているタグによって制御されます。
Oracle Solaris での ASLR のデフォルト値は、tagged-binaries です。ASLR を使用するために Oracle Solaris リリースの多くのバイナリにタグが付いています。
有効 – ASLR は、無効にするためのタグが明示的に付いているバイナリを除くすべてのバイナリに対して有効です。
sxadm コマンドは、ASLR を構成するために使用されます。このコマンドを実行するには、root 役割になる必要があります。例および情報については、sxadm(1M) のマニュアルページを参照してください。開発者への支援については、『Oracle Solaris 11 セキュリティーサービス開発ガイド』を参照してください。
システムでスーパーユーザーアクセスを行うには、root パスワードが必要です。デフォルトの構成では、ユーザーはリモートからシステムに root としてログインできません。リモートログインするとき、ユーザーは自分のユーザー名でログインしてから、su コマンドを使用して root になる必要があります。管理者は、必要に応じて su コマンドを使用中のユーザー (特にスーパーユーザーのアクセス権を取得しようとしているユーザー) をモニターできます。スーパーユーザーをモニタリングしたり、スーパーユーザーのアクセス権を制限したりする手順については、「root アクセスのモニタリングと制限 (タスク)」を参照してください。
Oracle Solaris の機能である役割に基づくアクセス制御 (RBAC) は、スーパーユーザーの権限を管理役割に分散するように設計されています。スーパーユーザーすなわち root ユーザーは、システムのすべてのリソースにアクセスできますが、RBAC を使用すると、root の責任の多くを、個別の権限を持つ一連の役割に置き換えることができます。たとえば、ユーザーアカウントの作成を処理する 1 つの役割と、システムファイルの変更を処理する別の役割を設定できます。root アカウントを変更しない場合でも、このアカウントを役割として残し、その役割を割り当てないようにすることができます。この方法によって、システムへの root アクセスが事実上削除されます。
各役割を使用するには、既知のユーザーが自分のユーザー名とパスワードを使用してログインする必要があります。ログインしたユーザーは、特別な役割パスワードを入力してその役割を引き受けます。RBAC の詳細は、「役割に基づくアクセス制御 (概要)」を参照してください。
システム管理者は、自分自身やユーザーによって意図しないエラーが引き起こされないように防止できます。
制限されたシェルをユーザーに割り当てることもできます。システムのうち各人の作業に必要な部分だけをユーザーに提供するという方法でシェル機能を制限すると、ユーザーエラーを避けることができます。実際、慎重に設定すれば、作業を能率的に行う上で必要な部分以外にユーザーがアクセスできないように制限できます。
そのユーザーがアクセスする必要がないファイルには、限定的なアクセス権を設定できます。
PATH 変数を正しく設定しないと、他人が持ち込んだプログラムを誤って実行し、データを壊したりシステムを損傷したりするおそれがあります。このようなプログラムはセキュリティー上の危険を招くので、「トロイの木馬」と呼ばれます。たとえば、公開ディレクトリの中に別の su プログラムが置かれていると、システム管理者が気づかずに実行してしまう可能性があります。このようなスクリプトは正規の su コマンドとまったく同じに見えます。このようなスクリプトは実行後に自らを削除してしまうため、トロイの木馬が実際に実行されたという証拠はほとんど残りません。
PATH 変数はログイン時に自動的に設定されます。このパスは、.bashrc や /etc/profile などの初期設定ファイルを通して設定されます。現在のディレクトリ (.) への検索パスを最後に指定すれば、トロイの木馬のようなタイプのプログラムを実行するのを防ぐことができます。root アカウントの PATH 変数には現在のディレクトリを一切含めないようにしてください。
標準シェルを使用すると、ユーザーはファイルを開く、コマンドを実行するなどの操作を行うことができます。制限付きシェルを使用すると、ディレクトリの変更やコマンドの実行などのユーザー能力を制限できます。制限付きシェルは、/usr/lib/rsh コマンドで呼び出されます。制限付きシェルは、リモートシェル /usr/sbin/rsh ではありません。
標準のシェルと異なる点は次のとおりです。
ユーザーはホームディレクトリ内に限定されるため、 cd コマンドを使用してディレクトリを変更できません。したがって、システムファイルを閲覧することはできません。
ユーザーは PATH 変数を変更できないため、システム管理者によって設定されたパスのコマンドしか使用できません。さらに、完全なパス名を使ってコマンドやスクリプトを実行することもできません。
制限付きシェルでは、ユーザーが使用できるシステムファイルを制限できます。このシェルは、特定のタスクを実行するユーザーのために限られた環境を作成します。ただし、制限付きシェルは完全に安全なわけではありません。このシェルの目的は、あくまでも、経験の少ないユーザーが誤ってシステムファイルを損傷するのを防止することです。
制限付きシェルについては、rsh(1M) のマニュアルページを参照してください。このマニュアルページは、man -s1m rsh コマンドで表示できます。
Oracle Solaris はマルチユーザー環境なので、ファイルシステムのセキュリティーは、システムのもっとも基本的なセキュリティーリスクです。ファイルの保護には、従来の UNIX のファイル保護と、より確実なアクセス制御リスト (ACL) との両方が使用できます。
一部のユーザーには特定のファイルの読み取りを許可し、別のユーザーには特定のファイルを変更または削除するアクセス権を与えることができます。一方、あるデータを、どのユーザーからも読み取られないよう設定することもできます。ファイルのアクセス権の設定方法については、第 7 章ファイルアクセスの制御 (タスク)を参照してください。
実行可能ファイルがセキュリティーリスクとなる場合があります。いくつかの実行可能プログラムは引き続き、正しく機能するには root として実行する必要があります。これらの setuid プログラムは、ユーザー ID が 0 に設定された状態で実行されます。このようなプログラムはだれが実行したとしても root ID で実行されます。root ID で動作するプログラムは、プログラムがセキュリティーを念頭に置いて作成されていない限り、セキュリティーの問題をはらんでいます。
Oracle が setuid ビットを root に設定して出荷する実行可能プログラムを除き、setuid プログラムの使用を許可するべきではありません。setuid プログラムの使用を禁止できない場合は、その使用を制限する必要があります。しっかりした管理を行うためには setuid プログラムの数を少なくする必要があります。
詳細は、「実行可能ファイルを原因とするセキュリティーへの悪影響を防止する」を参照してください。タスク手順については、「セキュリティーリスクのあるプログラムからの保護 (タスクマップ)」を参照してください。
デフォルトでは、Oracle Solaris がインストールされると、一連の多数のネットワークサービスが無効になります。この構成は「デフォルトでのセキュリティー強化 (Secure By Default)」(SBD) と呼ばれます。SBD により、ネットワークリクエストを受け入れるネットワークサービスは sshd デーモンだけになります。ほかのネットワークサービスはすべて無効になるか、ローカル要求だけを処理するようになります。ftp などの個々のネットワークサービスを有効にするには、Oracle Solaris のサービス管理機能 (SMF) を使用します。詳細は、netservices(1M) および smf(5) のマニュアルページを参照してください。
Oracle Solaris ソフトウェアには、精巧なリソース管理機能があります。これらの機能を使用することで、サーバー統合環境内のアプリケーションによるリソース利用の割り当て、スケジュール、モニター、上限設定などを行うことができます。リソース制御フレームワークにより、プロセスが使用するシステムリソースを制限できます。このような制約を行うことで、システムリソースを混乱させようとするスクリプトによるサービス拒否攻撃を防ぎやすくなります。
これらのリソース管理機能により、特定のプロジェクトに対してリソースを指定できます。また、使用できるリソースを動的に調整することもできます。詳細は、『Oracle Solaris 11.1 の管理: Oracle Solaris ゾーン、Oracle Solaris 10 ゾーン、およびリソース管理』のパート I「Oracle Solaris のリソース管理」を参照してください。
Oracle Solaris ゾーンは、単一の Oracle Solaris OS インスタンス内に存在するほかのシステムからプロセスが分離されるアプリケーション実行環境です。この分離を行うことで、1 つのゾーン内で稼働しているプロセスがほかのゾーンで稼働しているプロセスをモニタリングしたりそれらのプロセスに影響を及ぼしたりすることが防止されます。これは、スーパーユーザー権限によって稼働しているプロセスでも同様です。
Oracle Solaris ゾーンは、単一のサーバー上にアプリケーションを複数配置する環境に適しています。詳細は、『Oracle Solaris 11.1 の管理: Oracle Solaris ゾーン、Oracle Solaris 10 ゾーン、およびリソース管理』のパート II「Oracle Solaris ゾーン」を参照してください。
システム管理者は、システムの動作をモニターする必要があります。次の点を含め、マシンのあらゆる側面に注意する必要があります。
通常の負荷はどの程度か
誰がシステムへのアクセス権を持っているか
各ユーザーはいつシステムにアクセスするか
システムでは通常どのようなプログラムを実行するか
このような情報を把握していれば、ツールを使用してシステムの使用状況を監査し、各ユーザーのアクティビティーをモニターできます。セキュリティー侵害と思われる場合は、モニタリング作業が特に役立ちます。監査サービスについての詳細は、第 26 章監査 (概要)を参照してください。
システム管理者は、管理対象のシステムにインストールされたファイルが予想外の方法で変更されないように確実な対策をとる必要があります。大規模インストールでは、各システム上のソフトウェアスタックの比較や報告を行うツールを使用すればシステムの追跡、記録が行えます。基本監査報告機能 (BART) を使用すると、一定期間にわたって1 つ以上のシステムをファイルレベルでチェックし、システムを包括的に検証できます。一定期間にわたってすべてのシステムまたは 1 つのシステムにおける BART 目録の変化を調べることで、システムの整合性を検証できます。BART には、目録作成機能、目録比較機能、レポート生成規則などが用意されています。詳細は、第 6 章BART を使用したファイル整合性の検証 (タスク)を参照してください。