跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Trusted Extensions 管理员规程 Oracle Solaris 10 8/11 Information Library (简体中文) |
3. Trusted Extensions 管理员入门(任务)
4. Trusted Extensions 系统上的安全要求(概述)
5. 在 Trusted Extensions 中管理安全要求(任务)
6. Trusted Extensions 中的用户、权限和角色(概述)
7. 在 Trusted Extensions 中管理用户、权限和角色(任务)
8. Trusted Extensions 中的远程管理(任务)
9. Trusted Extensions 和 LDAP(概述)
10. 在 Trusted Extensions 中管理区域(任务)
Trusted Extensions 中的区域和 IP 地址
11. 在 Trusted Extensions 中管理和挂载文件(任务)
13. 在 Trusted Extensions 中管理网络(任务)
14. Trusted Extensions 中的多级别邮件(概述)
16. Trusted Extensions 中的设备(概述)
17. 管理 Trusted Extensions 的设备(任务)
以下任务列表说明了特定于 &ProductShort 的区域管理任务。本图同时也指出了在 Trusted Extensions 中执行的常见过程;与它们在 Oracle Solaris 系统中的执行一样。
|
此过程会创建一个 shell 脚本,以显示当前区域以及当前区域配置的所有区域的标签。
开始之前
您必须具有全局区域中的 "System Administrator"(系统管理员)角色。
有关详细信息,请参见如何在 Trusted Extensions 中编辑管理文件。
提供脚本的路径名,例如 /usr/local/scripts/getzonelabels。
#!/bin/sh # echo "NAME\t\tSTATUS\t\tLABEL" echo "====\t\t======\t\t=====" myzone=`zonename` for i in `/usr/sbin/zoneadm list -p` ; do zone=`echo $i | cut -d ":" -f2` status=`echo $i | cut -d ":" -f3` path=`echo $i | cut -d ":" -f4` if [ $zone != global ]; then if [ $myzone = global ]; then path=$path/root/tmp else path=$path/export/home fi fi label=`/usr/bin/getlabel -s $path |cut -d ":" -f2-9` if [ `echo $zone|wc -m` -lt 8 ]; then echo "$zone\t\t$status\t$label" else echo "$zone\t$status\t$label" fi done
# getzonelabels NAME STATUS LABEL ==== ====== ===== global running ADMIN_HIGH needtoknow running CONFIDENTIAL : NEED TO KNOW restricted ready CONFIDENTIAL : RESTRICTED internal running CONFIDENTIAL : INTERNAL public running PUBLIC
从全局区域运行时,脚本显示所有就绪或正在运行区域的标签。下面是从缺省 label_encodings 文件创建的区域的全局区域输出:
示例 10-1 显示所有就绪或正在运行区域的标签
在下面的示例中,用户在内部区域中运行 getzonelabels 脚本。
# getzonelabels NAME STATUS LABEL ==== ====== ===== internal running CONFIDENTIAL : INTERNAL public running PUBLIC
此过程创建一个 shell 脚本,以显示当前区域的已挂载文件系统。从全局区域运行时,该脚本显示每个区域中所有已挂载文件系统的标签。
开始之前
您必须具有全局区域中的 "System Administrator"(系统管理员)角色。
有关详细信息,请参见如何在 Trusted Extensions 中编辑管理文件。
提供脚本的路径名,例如 /usr/local/scripts/getmounts。
#!/bin/sh # for i in `/usr/sbin/mount -p | cut -d " " -f3` ; do /usr/bin/getlabel $i done
# /usr/local/scripts/getmounts /: ADMIN_LOW /dev: ADMIN_LOW /kernel: ADMIN_LOW /lib: ADMIN_LOW /opt: ADMIN_LOW /platform: ADMIN_LOW /sbin: ADMIN_LOW /usr: ADMIN_LOW /var/tsol/doors: ADMIN_LOW /zone/needtoknow/export/home: CONFIDENTIAL : NEED TO KNOW /zone/internal/export/home: CONFIDENTIAL : INTERNAL USE ONLY /zone/restricted/export/home: CONFIDENTIAL : RESTRICTED /proc: ADMIN_LOW /system/contract: ADMIN_LOW /etc/svc/volatile: ADMIN_LOW /etc/mnttab: ADMIN_LOW /dev/fd: ADMIN_LOW /tmp: ADMIN_LOW /var/run: ADMIN_LOW /zone/public/export/home: PUBLIC /root: ADMIN_LOW
示例 10-2 显示被限制区域中文件系统的标签
一般用户从有标签区域运行时,getmounts 脚本显示该区域中所有已挂载文件系统的标签。在已经为缺省 label_encodings 文件中的每个标签创建了区域的系统中,以下是被限制区域的输出:
# /usr/local/scripts/getmounts /: CONFIDENTIAL : RESTRICTED /dev: CONFIDENTIAL : RESTRICTED /kernel: ADMIN_LOW /lib: ADMIN_LOW /opt: ADMIN_LOW /platform: ADMIN_LOW /sbin: ADMIN_LOW /usr: ADMIN_LOW /var/tsol/doors: ADMIN_LOW /zone/needtoknow/export/home: CONFIDENTIAL : NEED TO KNOW /zone/internal/export/home: CONFIDENTIAL : INTERNAL USE ONLY /proc: CONFIDENTIAL : RESTRICTED /system/contract: CONFIDENTIAL : RESTRICTED /etc/svc/volatile: CONFIDENTIAL : RESTRICTED /etc/mnttab: CONFIDENTIAL : RESTRICTED /dev/fd: CONFIDENTIAL : RESTRICTED /tmp: CONFIDENTIAL : RESTRICTED /var/run: CONFIDENTIAL : RESTRICTED /zone/public/export/home: PUBLIC /home/gfaden: CONFIDENTIAL : RESTRICTED
利用此过程,指定有标签区域中的用户可以查看缺省情况下未从全局区域导出的文件。
开始之前
您必须具有全局区域中的 "System Administrator"(系统管理员)角色。
# zoneadm -z zone-name halt
例如,允许普通用户查看 /etc 目录中的文件。
# zonecfg -z zone-name add filesystem set special=/etc/filename set directory=/etc/filename set type=lofs add options [ro,nodevices,nosetuid] end exit
注 - 某些文件不为系统使用,所以回送挂载它们没有任何影响。例如,Trusted Extensions 软件不会检查有标签区域中的 /etc/dfs/dfstab 文件。有关更多信息,请参见从有标签区域共享文件。
# zoneadm -z zone-name boot
示例 10-3 回送挂载 /etc/passwd 文件
此示例中,安全管理员希望允许测试人员和编程人员检查他们的本地口令是否已经设置。停止沙箱区域后,其配置为回送挂载 passwd 文件。然后,重新启动区域。
# zoneadm -z sandbox halt # zonecfg -z sandbox add filesystem set special=/etc/passwd set directory=/etc/passwd set type=lofs add options [ro,nodevices,nosetuid] end exit # zoneadm -z sandbox boot
缺省情况下,用户可以查看较低级别文件。删除 net_mac_aware 特权,以防止从特定区域查看所有较低级别文件。有关 net_mac_aware 特权的说明,请参见 privileges(5) 手册页。
开始之前
您必须具有全局区域中的 "System Administrator"(系统管理员)角色。
# zoneadm -z zone-name halt
从区域删除 net_mac_aware 特权。
# zonecfg -z zone-name set limitpriv=default,!net_mac_aware exit
# zoneadm -z zone-name boot
示例 10-4 防止用户查看较低级别文件
在此示例中,安全管理员希望防止一个系统中的用户被混淆。因此,用户只能查看其正在工作的标签的文件。从而,安全管理员可以阻止查看所有较低级别文件。在该系统中,用户无法看到公用文件,除非用户以 PUBLIC 标签工作。此外,用户只能在区域的标签对文件进行 NFS 挂载。
# zoneadm -z restricted halt # zonecfg -z restricted set limitpriv=default,!net_mac_aware exit # zoneadm -z restricted boot
# zoneadm -z needtoknow halt # zonecfg -z needtoknow set limitpriv=default,!net_mac_aware exit # zoneadm -z needtoknow boot
# zoneadm -z internal halt # zonecfg -z internal set limitpriv=default,!net_mac_aware exit # zoneadm -z internal boot
因为 PUBLIC 是最低级别标签,安全管理员不对 PUBLIC 区域运行这些命令。
在此过程中,要在有标签区域中挂载一个具有读/写权限的 NFS 数据集。因为所有命令都在全局区域中执行,全局区域管理员可以对向有标签区域添加 ZFS 数据集进行控制。
有标签区域至少要处于 "ready"(就绪)状态下才能共享数据集。区域可以处于正在运行状态。
开始之前
要以数据集配置区域,首先停止该区域。
# zfs create datasetdir/subdir
数据集的名称可以包括目录,例如 zone/data。
# zoneadm -z labeled-zone-name halt
# zfs set mountpoint=legacy datasetdir/subdir
如果挂载点与有标签区域相对应,设置 ZFS 挂载点属性时会设置挂载点的标签。
# zonecfg -z labeled-zone-name # zonecfg:labeled-zone-name> add fs # zonecfg:labeled-zone-name:dataset> set dir=/subdir # zonecfg:labeled-zone-name:dataset> set special=datasetdir/subdir # zonecfg:labeled-zone-name:dataset> set type=zfs # zonecfg:labeled-zone-name:dataset> end # zonecfg:labeled-zone-name> exit
通过将数据集作为文件系统而添加,会在解释 dfstab 文件之前在区域中的 /data 处挂载该数据集。此步骤可以确保不会在引导区域之前挂载数据集。具体来说,区域引导,挂载数据集,然后解释 dfstab 文件。
将数据集文件系统的项添加到 /zone/labeled-zone-name/etc/dfs/dfstab 文件。此项还使用 /subdir 路径名。
share -F nfs -d "dataset-comment" /subdir
# zoneadm -z labeled-zone-name boot
引导区域后,将自动挂载数据集,作为标签为 labeled-zone-name 的 labeled-zone-name 区域中的读/写挂载点。
示例 10-5 从有标签区域共享和挂载 ZFS 数据集
在此示例中,管理员将一个 ZFS 数据集添加到 needtoknow 区域,然后共享数据集。数据集 zone/data 当前被指定到 /mnt 挂载点。被限制区域中的用户可以查看该数据集。
首先,管理员停止区域。
# zoneadm -z needtoknow halt
因为数据集当前被指定到不同的挂载点,管理员要删除之前的指定,然后设置新的挂载点。
# zfs set zoned=off zone/data # zfs set mountpoint=legacy zone/data
接下来,在 zonecfg 交互式接口中,管理员明确将数据集添加到 needtoknow 区域。
# zonecfg -z needtoknow # zonecfg:needtoknow> add fs # zonecfg:needtoknow:dataset> set dir=/data # zonecfg:needtoknow:dataset> set special=zone/data # zonecfg:needtoknow:dataset> set type=zfs # zonecfg:needtoknow:dataset> end # zonecfg:needtoknow> exit
接下来,管理员修改 /zone/needtoknow/etc/dfs/dfstab 文件以共享数据集,然后引导 needtoknow 区域。
## Global zone dfstab file for needtoknow zone share -F nfs -d "App Data on ZFS" /data
# zoneadm -z needtoknow boot
现在,可以访问该数据集了。
被限制区域(支配 needtoknow 区域)中的用户可以通过更改到 /data 目录来查看挂载的数据集。从全局区域的角度看,他们使用挂载数据集的完整路径。在此示例中,machine1 是包括有标签区域的系统的主机名。管理员将此主机名指定给非共享 IP 地址。
# cd /net/machine1/zone/needtoknow/root/data
故障排除
如果尝试从较高级别标签访问数据集时返回错误找不到或无此类文件或目录,管理员必须通过运行 svcadm restart autofs 命令来重启自动挂载程序服务。
开始之前
您必须具有全局区域中的 "Security Administrator"(安全管理员)角色。
# zoneadm -z zone-name halt
向区域添加适当特权。Windows 特权允许用户使用拖放和剪切粘贴操作。
# zonecfg -z zone-name set limitpriv=default,win_dac_read,win_mac_read,win_dac_write, win_mac_write,win_selection,file_downgrade_sl exit
# zonecfg -z zone-name set limitpriv=default,win_dac_read,win_mac_read,win_dac_write, win_mac_write,win_selection,sys_trans_label,file_upgrade_sl exit
# zonecfg -z zone-name set limitpriv=default,win_dac_read,win_mac_read,win_dac_write, win_mac_write,win_selection,sys_trans_label,file_downgrade_sl, file_upgrade_sl exit
# zoneadm -z zone-name boot
对于允许重新设置标签的用户和进程要求,请参见 setflabel(3TSOL) 手册页。要授权用户重新为文件设置标签,请参见如何允许用户更改数据的安全级别。
示例 10-6 允许从内部区域升级
在此示例中,安全管理员希望允许系统上的授权用户升级文件。通过允许用户升级信息,管理员使他们能够在更高的安全级别保护这些信息。在全局区域中,管理员运行以下区域管理命令。
# zoneadm -z internal halt # zonecfg -z internal set limitpriv=default,sys_trans_label,file_upgrade_sl exit # zoneadm -z internal boot
现在,授权用户可以从内部区域将内部信息升级到被限制。
示例 10-7 允许从被限制区域降级
在此示例中,安全管理员希望允许系统上的授权用户将文件降级。因为管理员不向区域添加 Windows 特权,授权用户不能使用文件管理器来重新为文件设置标签。要重新为文件设置标签,用户可以使用 setlabel 命令。
通过允许用户降级信息,管理员允许较低安全级别的用户访问文件。在全局区域中,管理员运行以下区域管理命令。
# zoneadm -z restricted halt # zonecfg -z restricted set limitpriv=default,file_downgrade_sl exit # zoneadm -z restricted boot
现在,授权用户可以使用 setlabel 命令,从被限制区域将被限制信息降级到内部或公共。
此过程用于启用通过 udp 的 NFSv3 向下读取挂载。Solaris Management Console 用于添加 MLP。
开始之前
您必须具有全局区域中的 "Security Administrator"(安全管理员)角色。
有关详细信息,请参见如何使用 Solaris Management Console 管理本地系统。
工具箱的标题包括 Scope=Files, Policy=TSOL。
# tnctl -fz /etc/security/tsol/tnzonecfg
在有标签区域中运行的应用程序需要多级别端口 (multilevel port, MLP) 来与区域通信时,使用此过程。在此过程中,一个 Web 代理与区域进行通信。Solaris Management Console 用于添加 MLP。
开始之前
您必须具有全局区域中的 "Security Administrator"(安全管理员)角色。有标签区域必须存在。有关详细信息,请参见《Oracle Solaris Trusted Extensions 配置指南》中的"创建有标签区域"。
有关详细信息,请参见如何使用 Solaris Management Console 管理本地系统。
工具箱的标题包括 Scope=Files, Policy=TSOL。
单击 "Action"(操作)菜单,选择 "Add Template"(添加模板)。
# zoneadm -z zone-name boot
例如,如果区域具有共享 IP 地址,执行以下操作:
# route add proxy labeled-zones-IP-address # route add webservice labeled-zones-IP-address