手册页部分 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 安全扩展。

enabledisable 子命令用于在系统范围内启用和禁用给定的安全扩展。–c 选项用于传递要启用的特定于扩展的配置信息。delcust 子命令用于将扩展重置为现成的缺省配置。

info 子命令用于报告当前区域的安全扩展的状态。–p 选项用于为外部使用者生成易于解析的输出。

exec 子命令可用于在进程级别控制给定安全扩展的状态。指定的命令会使用所配置的安全扩展来执行,该安全扩展通过在 exec 子命令后面使用任何 –sextension=value 条目来表示。在命令行上配置的安全扩展由子进程继承。

安全扩展

进程的安全扩展将在 exec(2) 期间确定,并在从 exec(2) 系统调用退出时对进程生效。扩展将在进程整个生命周期内有效,直到进程退出或再次调用 exec(2)

ASLR-地址空间布局随机化

ASLR 将对进程的关键区域(例如,堆栈、基于 brk 的堆、内存映射等)激活随机化。

缺省情况下,全局区域和所有非全局区域在引导时仅会对标记的二进制文件启用 ASLR。标记的二进制文件可使用链接编辑器的 –z aslr 选项构建。有关更多详细信息,请参见《Oracle Solaris 11 开发者安全性指南》中的“地址空间布局随机化 (Address Space Layout Randomization, ASLR)”部分。许多经过标记的核心 Solaris 二进制文件都会启用 ASLR。sxadm enabledisablerestore 子命令可用于在系统范围内配置 ASLR。sxadm enable 的 ASLR 配置值为:

model=all

为所有进程启用 ASLR。

model=tagged-files

仅为标记的二进制文件启用 ASLR。

model=default

采用系统缺省设置。当前设置:tagged-files

sxadm exec 命令的 ASLR 配置值为:

aslr=enable

为进程启用 ASLR。

aslr=disable

为进程禁用 ASLR。

Solaris 10 Container 不支持 ASLR。

子命令

sxadm 命令包含以下子命令:

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

为当前区域启用指定扩展。sxadm 可以使用 –c 选项传递特定扩展的配置信息。

可以在命令行上同时指定多个扩展和多个配置值,但如果该配置值并不适用于所有扩展,则该命令将失败。此命令最常见的用法如下:

% 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 可以是 tagall,具体取决于模型。

configuration

为扩展存储的配置(启用、禁用或系统缺省设置)

extension_namestatusextraconfiguration 组件均不允许使用冒号 (:)、空号 (\0) 和换行符 (\n)。

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 命令将执行 pmap 二进制文件,并在运行时禁用 ASLR。

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
接口稳定性
Committed(已确定)

另请参见

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

在 Oracle Solaris 11.2 中确保系统和连接设备的安全

"Address Space Layout Randomization (PaxTeam)"(地址空间布局随机化 (PaxTeam))。网址为 http://pax.grsecurity.net/

"Address Space Layout Randomization in Windows Vista"(Windows Vista 中的地址空间布局随机化)。网址为 http://blogs.msdn.com/b/michael_howard/

"Address space randomization in 2.6"(2.6 中的地址空间随机化)。网址为 http://lwn.net/

"Official mention on the web site of Library Randomization for Mac OS X Snow Leopard (Mac OS X Lion has full randomization)"(用于 Mac OS X Snow Leopard 的库随机化(Mac OS X Lion 已完全随机化)Web 站点上的官方说明)。网址为 http://www.apple.com/macosx/security