Go to main content
マニュアルページ セク ション 1M: シ ステム管理コマン ド

印刷ビューの終了

更新: 2016年12月6日
 
 

sxadm (1M)

名前

sxadm - Solaris セキュリティー拡張の構成の管理

形式

sxadm enable [-c property=value[,property=value,...]]
      extension[,extension,...]

sxadm delcust [extension,...]

sxadm disable extension[,extension,...]

sxadm get [-p] [-o "all" | field[,...]] <"all" | property[,...]>
     [extension]

sxadm help [subcommand]

sxadm set property=value[,property=value,...] extension

sxadm status [-p] [extension]
sxadm exec [-s extension=value],... command

説明

sxadm コマンドは、Solaris セキュリティー拡張を構成し、関連する情報を提供します。これらの拡張は、システムレベルまたはプロセスレベルで適用できます。

プロセスのセキュリティー拡張は exec(2) によって決定され、その時点からプロセスに対して有効になります。拡張は、プロセスが終了するか、再度 exec(2) を呼び出すまで、プロセスの有効期間の間持続します。システムレベルの拡張はすべてのプロセスに影響を与えます。プロセスレベルの拡張は、個々のプロセスに影響を与え、子プロセスが特権プロセスでない場合はすべての子プロセスによって継承されます。「セキュリティー拡張」を参照してください。

個々の実行可能ファイルには、ld(1) で構築する際に、セキュリティー拡張の要件をタグ付けできます。このタグ付けにより、システムレベルの拡張にかかわらず、関連付けられたプロセス要件が確実に満たされます。セキュリティー拡張がタグ付けされている実行可能ファイルは、プロセスレベルの拡張でオーバーライドできます。「実行可能ファイルにタグ付けされる拡張」を参照してください。

セキュリティー拡張

次のセキュリティー拡張が使用可能です。これらの拡張は、攻撃者が既知のエントリポイントを見つけたり、あとで実行される場所に攻撃用コードを埋め込んだりする可能性を減らします。

ASLR - アドレス空間レイアウトのランダム化

ASLR は、スタック、brk ベースのヒープ、メモリーセグメントマッピングなどのプロセスの重要な部分のランダム化をアクティブにします。位置独立実行可能ファイルとして構築されたアプリケーションのメモリーマッピングも、ASLR でランダム化されます。

NXHEAP - 実行不能ヒープ

NXHEAP は、プロセスヒープに割り当てられたページが実行可能になることを防ぎます。

NXSTACK - 実行不能スタック

NXSTACK は、プロセススタックに割り当てられたページが実行可能になることを防ぎます。旧バージョンの /etc/system noexec_user_stack および noexec_user_stack_log 設定との下位互換性は維持されていますが、このような制御は非推奨であり、代わりに sxadm を使用するようにしてください。

デフォルトでは、大域ゾーンおよびすべての非大域ゾーンで、ASLR および NXHEAP 拡張はタグ付けされたバイナリに対してのみ有効になり、NXSTACK 拡張はすべてのプロセスに対して有効になります。

セキュリティー拡張のプロパティー

セキュリティー拡張には 1 つ以上のプロパティーを設定できます。すべての拡張に model プロパティーがあります。このプロパティーは、拡張が適用される対象を定義します。次の model プロパティーがあります。

model=all

すべてのプロセスに対してセキュリティー拡張を有効にします。

model=tagged-files

タグ付けされているバイナリに対してセキュリティー拡張を有効にします。

model=default

セキュリティー拡張システムのデフォルトに従います。「セキュリティー拡張」を参照してください。

セキュリティー拡張に追加のプロパティーが存在する場合もあります。

NXHEAP および NXSTACK にはロギングプロパティーがあり、これが有効になっている場合、実行不能なメモリー範囲 (NXSTACK の場合はスタック、NXHEAP の場合はヒープとデータ) から実行が試行されると報告されます。

log=enable

ロギングを有効にします。

log=disable

ロギングを無効にします。(デフォルト構成)

セキュリティー拡張の管理

sxadm のサブコマンド enabledisableset、および delcust を使用すると、システム全体のセキュリティー拡張を変更できます。たとえば、次の sxadm コマンドは、拡張をシステム全体で有効にします。

% sxadm enable nxstack
% sxadm enable aslr,nxheap

次の sxadm コマンドも拡張をシステム全体で有効にしますが、各プロパティーを明示的に指定しています。

% sxadm enable -c model=all aslr
% sxadm enable -c model=all -c log=enable nxstack

また、sxadm のサブコマンド exec を使用すると、セキュリティー拡張をプロセスに対して有効または無効にすることができます。このサブコマンドは、セキュリティー拡張のステータスにのみ影響します。拡張のほかのプロパティーは、すべてシステムプロパティーから継承されます。次の sxadm コマンドにより、foobar プロセスは必ず拡張が無効になった状態で実行されます。

% sxadm exec -s aslr=disable -s nxheap=disable foobar

実行可能ファイルにタグ付けされる拡張

個々の実行可能ファイルには、次の ld(1) オプションで構築する際に、セキュリティー拡張の要件をタグ付けできます。

–z alsr[=mode]

ASLR のタグ付けを制御します。

–z nxheap[=mode]

実行不能ヒープのタグ付けを制御します。

–z nxstack[=mode]

実行不能スタックのタグ付けを制御します。

mode には enabled または disabled を指定できます。mode が指定されていない場合、デフォルトは enabled です。

タグ付けされた実行可能ファイル内に定義されているセキュリティー拡張は、システム全体のセキュリティー設定と次のように相互に作用します。

  • セキュリティー設定が有効または無効に指定されている実行可能ファイルは、システムのセキュリティー設定にかかわらず尊重されます。プロセスレベルのセキュリティー設定は、タグ付けされた実行可能ファイルの設定をオーバーライドします。

  • システムのセキュリティー設定が tagged-files の場合、セキュリティー設定がタグ付けされている実行可能ファイルだけが尊重されます。

サブコマンド

sxadm コマンドには次のサブコマンドがあります。

sxadm enable [–c property=value[,property=value,...]] extension[,extension,...]

現在のゾーンに対して指定したセキュリティー拡張を有効にします。–c オプションにより sxadm で特定の拡張のプロパティー値を渡すことができます。

sxadm delcust [extension,...]

拡張をデフォルト構成に復元します。このオプションは実質的にすべてのカスタマイズ内容を削除します。

sxadm disable extension[,extension,...]

現在のゾーンに対して指定したセキュリティー拡張を無効にします。

sxadm help [subcommand]

sxadm に関する使用法の情報または各サブコマンドの詳細情報を表示します。

sxadm status [–p] [extension]

現在のゾーンのすべてのセキュリティー拡張のステータスに関する情報を報告します。–p を指定した場合、出力は簡単に解析可能な形式で表示されます。コマンド行にextensionを指定すると、特定の拡張にフィルタします。マシン解析可能な出力はコロン区切りのフィールドのリストです。

extension:status (model):configuration (model)

各表記の意味は次のとおりです。

extension

拡張の名前

status

拡張の現在のステータス (有効または無効)

model

セキュリティー拡張に対して現在有効になっているモデル (すべて、デフォルト、タグ付けされたバイナリ)

configuration

拡張の保存されている構成 (有効、無効、またはシステムデフォルト)

文字のコロン (:)、NULL 記号 (\0)、および改行 (\n) は、どのコンポーネント (extension_name、status、extra、および configuration) にも使用できません。

sxadm get [–p] [–o "all" | field[,...]] <"all" | property[,...]> [extension]

セキュリティー拡張のプロパティーの値を表示します。拡張が指定されている場合は、指定された拡張のプロパティーの値だけを表示します。すべてのセクションに関連するプロパティーを表示するには、"all" を指定します。プロパティーごとに、次の列が表示されます。

extension: the extension the property refers to
name: the name of the property
value: the value of the property

デフォルトでは、すべての列が表示されます。特定の列またはすべての列を指定するには、–o オプションを使用します。–p を指定した場合、出力は簡単に解析可能な形式で表示されます。そのような形式は、フィールドをコロンで区切ったリストです。

extension:property:value

文字のコロン (:)、NULL 記号 (\0)、および改行 (\n) は、どのコンポーネントにも使用できません。

sxadm set property=value[,property=value,...] extension

指定された拡張のプロパティーに値を割り当てます。

sxadm exec –s [extension=value]... command

セキュリティー拡張の特定の構成で、指定したコマンドを実行します。コマンド行に明示的に構成されていない各セキュリティー拡張に対しては、システム構成が使われます。command によって最終的に生成される子プロセスは、コマンド行に指定された同じセキュリティー拡張の構成を継承します。setuids および特権バイナリはどの構成も継承しません。複数の –s オプションを使用して、コマンド行から複数の構成を表すことができます。同じ拡張が複数回構成されている場合、最後の構成が優先されます。次の例で、foobarASLR が有効になった状態で実行されます。

% sxadm exec -s aslr=disable -s aslr=enable foobar

sxadm exec サブコマンドは、デバッガがデバッガによって直接起動された単一のプロセスに適用される一般的な例に対応するように設計されています。もっと複雑なシナリオでは十分でないことがあります。その場合は、sxadm を使用して、システムまたはゾーンレベルのセキュリティー拡張のデフォルトを変更するか、デバッグを容易にするために、ld(1) ユーティリティーを使用して、オブジェクト単位でのタグ付けを適用する必要がある可能性があります。

この機能が有用になるのは主に、ランダム化されたシークレットに基づく拡張 (ASLR など) がアクティブになっているときです。このような場合、メモリーアドレスの変更によってデバッグシナリオが複雑になる可能性があるためです。この機能は、セキュリティー拡張の構成が異なっているアプリケーションを明示的にテストする場合にも役立ちます。

使用例 1 セキュリティー拡張の現在の構成を表示する
$ sxadm status -p
       aslr:enabled (tagged-files):system default (default)
       nxstack:enabled (all):system default (default)
       nxheap:enabled (tagged-files):system default (default)
       $

       $ sxadm status
       EXTENSION        STATUS                   CONFIGURATION            
       aslr             enabled (tagged-files)   system default (default)
       nxstack          enabled (all)            system default (default)
       nxheap           enabled (tagged-files)   system default (default)
       $
使用例 2 set/get を使用してセキュリティー拡張のプロパティーを設定/取得する
$ sxadm get model aslr
       EXTENSION       PROPERTY          VALUE
       aslr            model            tagged-files
       $

       $ sxadm set log=enable nxheap
       $ sxadm get log nxheap
       EXTENSION       PROPERTY         VALUE
       nxheap          log              enable
       $
使用例 3 デバッグセッションの実行

次のコマンドシーケンスは、ASLR を無効にして実行されているデバッグセッションを示しています。

$ sxadm exec -s aslr=disable /bin/bash
       $
       # Because all processes (except privileged ones) inherit the(disabled)
       # ASLR configuration mdb, truss & co will have repeatable results.

       $ truss -t mmap /bin/true
       mmap(0x00000000, 32, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1,0)
       = 0xFE5B0000
       mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1,0)
       = 0xFE5A0000
       mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1,0)
       = 0xFE590000
       [...]
       $ truss -t mmap /bin/true
       mmap(0x00000000, 32, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1,0)
       = 0xFE5B0000
       mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1,0)
       = 0xFE5A0000
       mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1,0)
       = 0xFE590000
       [...]
       $ truss -t mmap /bin/true
       mmap(0x00000000, 32, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1,0)
       = 0xFE5B0000
       mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1,0)
       = 0xFE5A0000
       mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1,0)
       = 0xFE590000

終了ステータス

0

コマンドが正常に完了しました。

1

エラーが発生したため、コマンドが終了しました。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os
インタフェースの安定性
確実

関連項目

ld(1), exec(2), attributes(5)