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

印刷ビューの終了

更新: 2014 年 7 月
 
 

sxadm(1M)

名前

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

形式

/usr/sbin/sxadm enable [-c conf=value[,conf=value,...]
     extension[ extension...]
/usr/sbin/sxadm disable extension[ extension...]
/usr/sbin/sxadm delcust extension[ extension...]
/usr/sbin/sxadm exec [-s extension=value]... command
/usr/sbin/sxadm info [-p] [extension]
/usr/sbin/sxadm help [subcommand]

説明

sxadm コマンドは、システムレベル (大域ゾーン、非大域ゾーン) とプロセスレベル (/usr/sbin/sxadm exec) の両方で Solaris セキュリティー拡張を制御および構成します。

enable および disable サブコマンドは指定したセキュリティー拡張をシステム規模で有効および無効にします。–c オプションは、有効にする拡張能固有の構成情報を渡します。delcust サブコマンドは拡張を初期デフォルト構成にリセットします。

info サブコマンドは現在のゾーンのセキュリティー拡張のステータスを報告します。–p オプションは外部コンシューマ用に簡単に解析可能な出力を生成します。

exec サブコマンドにより、指定したセキュリティー拡張のステータスをプロセスレベルで制御できます。指定したコマンドは、exec サブコマンドのあとの任意の –sextension=value エントリによって表されたとおりに構成されたセキュリティー拡張で実行されます。コマンド行で構成されたセキュリティー拡張は子プロセスによって継承されます。

セキュリティー拡張

プロセスのセキュリティー拡張は、exec(2) 中に決定され、exec(2) システムコールの終了時にプロセスに対して有効になります。拡張は、プロセスが終了するか、再度 exec(2) を呼び出すまで、プロセスの有効期間の間持続します。

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

ASLR は、スタック、brk ベースのヒープ、メモリーマッピングなどのプロセスの重要な部分のランダム化をアクティブにします。

デフォルトで、大域ゾーンとすべての非大域ゾーンは、タグ付けされたバイナリに対してのみ ASLR が有効にされてブートします。タグ付けされたバイナリはリンカーの –z aslr オプションを使用して構築されます。詳細については、Oracle Solaris 11 セキュリティーサービス開発ガイドのアドレス空間配置のランダム化 (ASLR) のセクションを参照してください。多くのコア Solaris バイナリは ASLR が有効にされてタグ付けされます。sxadm enabledisable、および restore サブコマンドを使用して、ASLR をシステム規模で構成できます。sxadm enable の ASLR 構成値:

model=all

すべてのプロセスに対して ASLR を有効にします。

model=tagged-files

タグ付けされたバイナリに対してのみ ASLR を有効にします。

model=default

システムのデフォルトに従います。現在: tagged-files

sxadm exec コマンドの ASLR 構成値:

aslr=enable

プロセスに対して ASLR を有効にします。

aslr=disable

プロセスに対して ASLR を無効にします。

ASLR は Solaris 10 コンテナではサポートされていません。

サブコマンド

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

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

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

複数の拡張と複数の構成値の両方をコマンド行に指定できますが、構成値がすべての拡張に適用しない場合、コマンドは失敗します。そのため、このコマンドのもっとも一般的な使用法は:

% sxadm enable extension1 extension2

補足:

% sxadm enable -c prop=value,prop2=value2 extension

その他の例については「例」セクションを参照してください。

sxadm disable extension[,extension]

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

sxadm delcust extension[,extension]

拡張をデフォルト (初期) 構成に復元します。

sxadm info [–p] [extension]

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

マシン解析可能な出力はコロン区切りのフィールドのリストです。

extension_name:status[.extra]:configuration[.extra]

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

extension_name

拡張の名前。

status

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

extra

拡張が報告することを望む (重要な) 特別な情報を表します。例として、ASLR の場合、ASLR が有効にされていると、extra はモデルに応じて tag または all を指定できます。

configuration

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

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

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

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

% sxadm exec -s aslr=disable -s aslr=enable /usr/bin/pmap

aslr を有効にして /usr/bin/pmap を実行します。

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

sxadm help [subcommand]

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

使用例 1 pmap バイナリの実行

下の sxadm コマンドは実行時に ASLR を無効にして pmap バイナリを実行します。

bash$ pmap self
# memory addresses are randomized
101731: pmap self
101731: pmap self
0000000000400000         28K r-x--  /usr/bin/pmap
0000000000417000          4K rw---  /usr/bin/pmap
0000000000418000          8K rw---  /usr/bin/pmap
000003B0E8DF8000         36K rw---    [ heap ]
[...]
FFFFF843B8098000        344K r-x--  /lib/amd64/ld.so.1
FFFFF843B80FE000         12K rwx--  /lib/amd64/ld.so.1
FFFFF843B8101000          8K rwx--  /lib/amd64/ld.so.1
FFFFFBF4A14E0000         12K rw---    [ stack ]
      total         2592K

bash$ sxadm exec -s aslr=disable /usr/bin/pmap self
101733: /usr/bin/pmap self
101733: /usr/bin/pmap self
0000000000400000         28K r-x--  /usr/bin/pmap
0000000000417000          4K rw---  /usr/bin/pmap
0000000000418000         40K rw---    [ heap ]
[...]
FFFFFD7FFF394000        344K r-x--  /lib/amd64/ld.so.1
FFFFFD7FFF3FA000         12K rwx--  /lib/amd64/ld.so.1
FFFFFD7FFF3FD000          8K rwx--  /lib/amd64/ld.so.1
FFFFFD7FFFDFD000         12K rw---    [ stack ]
      total         2588K
使用例 2 セキュリティー拡張の構成に関する情報の表示

次の sxadm info コマンドはセキュリティー拡張の構成に関する情報を表示します。

bash$ sxadm info -p
aslr:enabled.tagged-files:system default.default
bash$ sxadm info
EXTENSION        STATUS                   CONFIGURATION
aslr             enable (tagged-files)    system default (default)
bash$ sxadm enable -c model=all aslr
bash$ sxadm info
EXTENSION        STATUS                   CONFIGURATION
aslr             enable (all)             enable (all)
bash$ sxadm info -p
aslr:enabled.all:enabled.all
使用例 3 デフォルト構成へのリセット

次のコマンド sxadm delcust コマンドは拡張をデフォルトの (初期) 構成に復元します。

bash$ sxadm info
EXTENSION        STATUS                   CONFIGURATION
aslr             enable (all)             enable (all)
bash$ sxadm delcust aslr
bash$ sxadm info
EXTENSION        STATUS                   CONFIGURATION
aslr             enable (tagged-files)    system default (default)
使用例 4 デバッグセッションの実行

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

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

bash$ 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
[...]
bash$ 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
[...]
bash$ 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)

Oracle Solaris 11.2 でのシステムおよび接続されたデバイスのセキュリティー保護

アドレス空間配置のランダム化 (PaxTeam)。http://pax.grsecurity.net/ の下

Windows Vista でのアドレス空間配置のランダム化。http://blogs.msdn.com/b/michael_howard/ の下

2.6 でのアドレス空間のランダム化。http://lwn.net/ の下

Mac OS X Snow Leopard (Mac OS X Lion には完全なランダム化があります) のライブラリランダム化についての Web サイトでの公式の説明。http://www.apple.com/macosx/security の下