/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 は、スタック、brk ベースのヒープ、メモリーマッピングなどのプロセスの重要な部分のランダム化をアクティブにします。
デフォルトで、大域ゾーンとすべての非大域ゾーンは、タグ付けされたバイナリに対してのみ ASLR が有効にされてブートします。タグ付けされたバイナリはリンカーの –z aslr オプションを使用して構築されます。詳細については、Oracle Solaris 11 セキュリティーサービス開発ガイドのアドレス空間配置のランダム化 (ASLR) のセクションを参照してください。多くのコア Solaris バイナリは ASLR が有効にされてタグ付けされます。sxadm enable、disable、および restore サブコマンドを使用して、ASLR をシステム規模で構成できます。sxadm enable の ASLR 構成値:
すべてのプロセスに対して ASLR を有効にします。
タグ付けされたバイナリに対してのみ ASLR を有効にします。
システムのデフォルトに従います。現在: tagged-files
sxadm exec コマンドの ASLR 構成値:
プロセスに対して ASLR を有効にします。
プロセスに対して ASLR を無効にします。
ASLR は Solaris 10 コンテナではサポートされていません。
sxadm コマンドには次のサブコマンドがあります。
現在のゾーンに対して指定したセキュリティー拡張を有効にします。–c オプションにより sxadm で特定の拡張の構成情報を渡すことができます。
複数の拡張と複数の構成値の両方をコマンド行に指定できますが、構成値がすべての拡張に適用しない場合、コマンドは失敗します。そのため、このコマンドのもっとも一般的な使用法は:
% sxadm enable extension1 extension2
補足:
% sxadm enable -c prop=value,prop2=value2 extension
その他の例については「例」セクションを参照してください。
現在のゾーンに対して指定したセキュリティー拡張を無効にします。
拡張をデフォルト (初期) 構成に復元します。
現在のゾーンのすべてのセキュリティー拡張のステータスに関する情報を報告します。–p を指定した場合、出力は簡単に解析可能な形式で表示されます。コマンド行に extension を指定すると、特定の拡張にフィルタします。
マシン解析可能な出力はコロン区切りのフィールドのリストです。
extension_name:status[.extra]:configuration[.extra]
各表記の意味は次のとおりです。
拡張の名前。
拡張の現在のステータス (有効または無効)。
拡張が報告することを望む (重要な) 特別な情報を表します。例として、ASLR の場合、ASLR が有効にされていると、extra はモデルに応じて tag または all を指定できます。
拡張の保存されている構成 (有効、無効、またはシステムデフォルト)
文字のコロン (:)、NULL 記号 (\0)、および改行 (\n) はどのコンポーネント extension_name、status、extra、および configuration にも使用できません。
セキュリティー拡張の特定の構成で、指定したコマンドを実行します。コマンド行に明示的に構成されていない各セキュリティー拡張に対しては、システム構成が使われます。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 に関する使用法の情報または各サブコマンドの詳細情報を表示します。
下の 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
コマンドが正常に完了しました。
エラーが発生したため、コマンドが終了しました。
属性についての詳細は、マニュアルページの 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 の下