免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: luren04
打印 上一主题 下一主题

【申请加精】来自UC的《Solaris 10红宝书》系列在线课程 [复制链接]

论坛徽章:
0
81 [报告]
发表于 2008-04-14 14:28 |只看该作者
19.2 zonecfg命令   
在Solaris区域技术中,zonecfg命令是用来设置区域的命令,它的作用是非常重要的。本节主要讲述如何使用这个命令。

19.2.1 zonecfg命令
1.命令功能
zonecfg是用来设置区域的命令。下面就是zonecfg命令的功能:

 能创建或删除区域的设置。

 增加资源到特殊的设置。

 设置资源属性到区域。

 从特殊的设置中删除资源属性。

 查询和修改设置。

 恢复以前的设置。

 从zonecfg会话退出。

zonecfg提示符如下面的形式:

zonecfg:zonename>

当你设置了专门的资源类型,比如文件系统,这个资源类型也能包含在这个提示符中:

zonecfg:zonename:fs>

2.交互式zonecfg命令
在交互模式中,下面子命令可以被支持。详细的子命令信息可以查看zonecfg(1M)帮助页。

 Help:打印一般的帮助,或者显示关于给定资源的帮助

zonecfg:my-zone:inherit-pkg-dir> help

 create:为了下列目的之一,开始在内存中开始新的区域。

 应用默认设置到新的设置,这个方法是默认的。

 当用-t template选项时,创建和模板一样的设置。但要更改区域名。

 当用-F选项,强行推出设置。

 当用-b选项,创建空白设置。

 export:打印设置的标准输出,或到专门的输出文件。

 Add:在全局模式,增加专门的资源类型设置;在资源模式,增加资源属性和值。

 Set:给属性设定相应的值,这个命令可以应用在全局模式或资源模式。

 Select:只能应用在全局模式,选择资源类型。

 Remove:只能应用在全局模式,删除专门的资源类型。

 End:只能应用在资源模式,结束这个模式。

 Cancel:只能应用在资源模式,取消资源模式的设置,并返回到全局模式。

 Delete:删除设置。

 Info:显示当前的设置信息。

 Verify:检查当前设置是否正确。

 Commit:将当前的设置从内存中提交到稳定的存储。

 Revert:恢复设置到最后一次提交之前。

 Exit:退出zonecfg命令。

3.影响区域状态的命令
影响区域状态的命令分类如表19-2所示。

表19-2 影响区域状态的命令

当前区域状态
应用命令

configured
zonecfg -z zonename verify

zonecfg -z zonename commit

zonecfg -z zonename delete

zoneadm -z zonename verify

zoneadm -z zonename install

incomplete
zoneadm -z zonename uninstall

installed
zoneadm -z zonename ready(可选的)

zoneadm -z zonename boot

zoneadm -z zonename uninstall卸载区域设置

zonecfg -z zonename用来增加和删除文件系统、设备、网络设置,但不能改变zonepath和inherit-pkg-dir资源

ready
zoneadm -z zonename boot

zonecfg -z zonename用来增加和删除文件系统、设备、网络设置,但不能改变zonepath和inherit-pkg-dir资源

running
zoneadm -z zonename reboot

zoneadm -z zonename halt

zonecfg -z zonename用来增加和删除文件系统、设备、网络设置,但不能改变zonepath和inherit-pkg-dir资源


19.2.2 资源管理类型设置举例
在使用zonecfg命令设置区域时,需要设置一些很重要的资源。下面我们重点介绍分区时的资源类型设置。

1.文件系统
 例19-1 分区的文件系统相关设置。

zonecfg:my-zone> add fs //增加文件系统设置

zonecfg:my-zone:fs> set dir=/mnt //设定新增文件系统目录

zonecfg:my-zone:fs> set special=/dev/dsk/c0t0d0s2 //设置块设备

zonecfg:my-zone:fs> set raw=/dev/rdsk/c0t0d0s2 //设置裸设备

zonecfg:my-zone:fs> set type=ufs

zonecfg:my-zone:fs> add options [nodevices,logging]

zonecfg:my-zone:fs> end

在全局区域的/dev/dsk/c0t0d0s2被my-zone区mount到/mnt目录;文件系统的类型是UFS;节点设备和日志记录属性被增加进文件系统。

2.inherit-pkg-dir方式
 例19-2 以inherit-pkg-dir方式mount文件系统。

zonecfg:my-zone> add inherit-pkg-dir

zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw

zonecfg:my-zone:inherit-pkg-dir> end

inherit-pkg-dir方式就是从全局区域继承过来的,只读的文件系统。

3.网络设置
 例19-3 在分区网络端口上增加一个IP地址。

zonecfg:my-zone> add net

zonecfg:my-zone:net> set physical=hme0

zonecfg:my-zone:net> set address=192.168.0.1

zonecfg:my-zone:net> end

4.增加设备
 例19-4 在分区中增加一个设备。

zonecfg:my-zone> add device

zonecfg:my-zone:device> set match=/dev/pts*

zonecfg:my-zone:device> end

5.资源控制
 例19-5 在公平共享调度类中设置CPU资源共享。

zonecfg:my-zone> add rctl

zonecfg:my-zone:rctl> set name=zone.cpu-shares

zonecfg:my-zone:rctl> add value (priv=privileged,limit=10,action=none)

zonecfg:my-zone:rctl> end

 例19-6 设定分区中最大的LWP数量。

zonecfg:my-zone> add rctl

zonecfg:my-zone:rctl> set name=zone.max-lwps

zonecfg:my-zone:rctl> add value (priv=privileged,limit=100,action=deny)

zonecfg:my-zone:rctl> end

6.增添注释
 例19-7 增加分区的注释。

zonecfg:my-zone> add attr

zonecfg:my-zone:attr> set name=comment

zonecfg:my-zone:attr> set type=string

zonecfg:my-zone:attr> set value="Production zone"

zonecfg:my-zone:attr> end

论坛徽章:
0
82 [报告]
发表于 2008-04-14 14:28 |只看该作者
19.3 创建和删除非全局区域   
本节主要介绍如何创建和删除非全局区域。

19.3.1 在创建之前如何进行区域的设置
(1)首先创建一个目录,用来存放新的分区文件。

root@b1000:/# mkdir -p /zone/zone1

注意目录的权限

root@b1000:/# ls –l /zone /zone/zone1

drwxr-xr-x 2 root other 512 Dec 4 14:42 /zone/

drwx------ 4 root root 512 6月 8日 14:45 zone1

(2)创建一个名为zone1的分区设置:

root@b1000:/# zonecfg -z zone1

zone1: No such zone configured

Use 'create' to begin configuring a new zone.

zonecfg:zone1> create //开始创建分区

zonecfg:zone1> set zonepath=/zone/zone1

zonecfg:zone1> set autoboot=true

zonecfg:zone1> add net //开始网络设置状态

zonecfg:zone1:net> set address=192.168.0.101

zonecfg:zone1:net> set physical=eri0

zonecfg:zone1:net> end //退出网络设置状态

(3)查看刚才设置的分区信息

zonecfg:zone1> info

zonepath: /zone/zone1

autoboot: true

pool:

inherit-pkg-dir:

dir: /lib

inherit-pkg-dir:

dir: /platform

inherit-pkg-dir:

dir: /sbin

inherit-pkg-dir:

dir: /usr

net:

address: 192.168.0.101

physical: eri0

zonecfg:zone1> verify

zonecfg:zone1> commit //提交设置信息

zonecfg:zone1> ^D

root@b1000:/#

(4)分区配置完成,查看刚才保存好的zone1的设置信息:

root@b1000:/# zonecfg -z zone1 info

zonepath: /zone/zone1

autoboot: true

pool:

inherit-pkg-dir:

dir: /lib

inherit-pkg-dir:

dir: /platform

inherit-pkg-dir:

dir: /sbin

inherit-pkg-dir:

dir: /usr

net:

address: 192.168.0.101

physical: eri0

至此zone1分区的设置完成。

查看分区列表,zone1分区还在设置状态:

root@b1000:/# zoneadm list -vc

ID NAME STATUS PATH

0 global running /

- zone1 configured /zone/zone1

19.3.2 创建非全局区域
必须在全局区域创建非全局区域,其步骤如下:

(1)成为超级用户或授权角色用户。

(2)安装zone1需要使用zoneadm命令和参数-z:

global# zoneadm –z zone1 install

(3)如果出现错误信息,需要查看zone1区的状态:

global# zoneadm –z zone1 list -v

(4)正确的安装状态如下:

ID NAME STATE PATH

0 global running /

- zone1 installed /zone/zone1

19.3.3 如何启动非全局区域
必须在全局区域启动非全局区域,其步骤如下:

(1)成为超级用户或授权角色用户。

(2)使用zoneadm命令和参数-z来启动非全局区域。

# zoneadm -z zone1 boot

zoneadm: zone 'zone1': WARNING: hme0:1: no matching subnet

found in netmasks(4) for 192.168.0.1; using default of

255.255.255.0.

(3)查看启动结果:

global# zoneadm list -v

ID NAME STATE PATH

0 global running /

1 zone1 running /zone/zone1

(4)用单用户模式启动非全局区域

global# zoneadm -z zone1 boot -s

19.3.4 如何关闭非全局区域
关闭非全局区域步骤如下:

(1)成为超级用户或授权角色用户。

(2)查看非全局区域是否在启动状态。

global# zoneadm list -v

ID NAME STATE PATH

0 global running /

1 zone1 running /zone/zone1

(3)使用下列命令关闭非全局区域:

global# zoneadm -z zone1 halt

(4)查看非全局区域状态:

global# zoneadm list -v

ID NAME STATE PATH

0 global running /

- zone1 installed /zone/zone1

19.3.5 如何重启非全局区域
重新启动非全局区域的步骤如下:

(1)成为超级用户或授权角色用户。

(2)看非全局区域是否在启动状态:

global# zoneadm list -v

ID NAME STATE PATH

0 global running /

1 zone1 running /zone/zone1

(3)使用下列命令重启非全局区域:

global# zoneadm -z zone1 reboot

(4)查看非全局区域的状态:

global# zoneadm list -v

ID NAME STATE PATH

0 global running /

2 zone1 running /zone/zone1

注意:zone1的ID变成了2,说明对非全局区域而言,ID不是固定的。

19.3.6 卸载非全局区域
卸载非全局区域的步骤如下:

(1)成为超级用户或授权角色用户。

(2)确认非全局区域必须在非启动状态:

global# zoneadm list -v

ID NAME STATE PATH

0 global running /

- zone1 installed /zone/zone1

(3)使用下列命令卸载非全局区域:

global# zoneadm -z my-zone uninstall -F

(4)查看区域状态:

global# zoneadm list -v

ID NAME STATE PATH

0 global running /

19.3.7 彻底删除非全局区域
彻底删除非全局区域的步骤如下:

(1)成为超级用户或授权角色用户。

(2)关闭非全局区域。

global# zlogin zone1 shutdown

(3)卸载非全局区域。

global# zoneadm -z zone1 uninstall -F

(4)删除非全局区域。

global# zonecfg -z zone1 delete -F

(5)检查结果:

global# zoneadm list -v

ID NAME STATE PATH

0 global running /

论坛徽章:
0
83 [报告]
发表于 2008-04-14 14:30 |只看该作者
19.4 登录和退出非全局区域   
在非全局区域启动以后,非全局区域还不能正常工作,还需要首先进行初始化设置。这个初始化设置是在首次登录非全局区时完成的。

下面介绍首次登录和初始化设置的步骤:

(1)在全局区域,成为超级用户或授权角色用户。

(2)使用下面命令登录:

global# zlogin -C zone1

(3)因为是首次登录,所以出现一些初始化设置问题,情形如下:

SunOS Release 5.10 Version Generic 64-bit

Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.

Use is subject to license terms.




Hostname: zone1

Loading smf(5) service descriptions:

Select a Language




0. English

1. French




Please make a choice (0 - 1), or press h or ? for help:




Select a Locale




0. English (C - 7-bit ASCII)

1. Belgium-Flemish (ISO8859-1)

2. Belgium-Flemish (ISO8859-15 - Euro)

3. Great Britain (ISO8859-1)

4. Great Britain (ISO8859-15 - Euro)

5. Ireland (ISO8859-1)

6. Ireland (ISO8859-15 - Euro)

7. Netherlands (ISO8859-1)

8. Netherlands (ISO8859-15 - Euro)

9. Go Back to Previous Screen




Please make a choice (0 - 9), or press h or ? for help:




What type of terminal are you using?

1) ANSI Standard CRT

2) DEC VT52

3) DEC VT100

4) Heathkit 19

5) Lear Siegler ADM31

6) PC Console

7) Sun Command Tool

Sun Workstation

9) Televideo 910

10) Televideo 925

11) Wyse Model 50

12) X Terminal Emulator (xterms)

13) CDE Terminal Emulator (dtterm)

14) Other

Type the number of your choice and press Return:

接下来的就和平时安装系统的步骤一样,设置主机名、时区、域名解析方式等。最后,就可以登录到非全局区域了。这时候我们发现,全局区域系统界面与新安装好非全局区域的系统界面没有什么区别。

退出非全局区域的方法也很简单,只要使用“~”,然后加个“.”,就可以退回全局区域:

zone1# ~.

论坛徽章:
0
84 [报告]
发表于 2008-04-14 14:31 |只看该作者
19.5 安装和删除程序包   
现在,我们已经可以登录到非全局区域进行程序包和软件的安装了。

19.5.1 如何只在全局区域安装程序包
如果只想在全局区域中安装程序包,这和在没有分区的系统中安装步骤是不一样的,请特别注意。

(1)在全局区域成为超级用户或授权角色用户。

(2)使用pkgadd –d命令和参数 –G,完成程序包的安装。

 从光盘中安装程序包:

global# pkgadd -d /cdrom/cdrom0/directory -G package_name

 如果软件包已经复制到目录中:

global# pkgadd -d disk1/image -G package_name

19.5.2 如何在全局区域和非全局区域都安装程序包
在全局区域和非全局区域都安装程序包的命令与没有进行分区的操作系统一样。

(1)在全局区域成为超级用户或授权角色用户。

(2)使用pkgadd –d命令完成程序包的安装。

 从光盘中安装程序包:

global# pkgadd -d /cdrom/cdrom0/directory package_name

 软件包已经复制到目录中:

global# pkgadd –d /disk1/image package_name

19.5.3 如何将已经在全局区安装的程序包安装到非全局区域
(1)在全局区域成为超级用户或授权角色用户。

(2)使用pkgrm在全局区域删除该程序包。

global# pkgrm package_name

(3)使用pkgadd –d命令完成全局区域和非全局区域程序包的安装。

 从光盘中安装程序包:

global# pkgadd -d /cdrom/cdrom0/directory package_name

 软件包已经复制到目录中:

global# pkgadd -d disk1/image package_name

19.5.4 如何只在非全局区域安装程序包
在非全局区域安装程序包的步骤如下:

(1)在非全局区域成为超级用户或授权角色用户。

(2)使用pkgadd –d命令,完成非全局区域程序包的安装。

 从光盘中安装程序包:

zone1# pkgadd -d /cdrom/cdrom0/directory package_name

 软件包已经复制到目录中:

zone1# pkgadd -d disk1/image package_name

19.5.5 如何检查程序包
如果在具有分区的系统中,检查程序包的安装情况,则只能在各自的区域中检查本地的程序包。也就是说在全局区域,不能检查非全局区域的程序包安装情况。

检查全局区域的程序包:

global% pkginfo SunWcsr SunWcsu

system SunWcsr Core Solaris, (Root)

system SunWcsu Core Solaris, (Usr)

检查非全局区域的程序包:

zone1% pkginfo SunWcsr SunWcsu

system SunWcsr Core Solaris, (Root)

system SunWcsu Core Solaris, (Usr)

19.5.6 如何在全局区域和非全局区域删除程序包
在全局区域和非全局区域删除程序包的步骤如下:

(1)在全局区域成为超级用户或授权角色用户。

(2)使用pkgrm命令,可在全局区域和所有非全局区域删除程序包。

global# pkgrm package_name

19.5.7 如何只在非全局区域删除程序包
只在非全局区域删除程序包的步骤如下:

(1)在该非全局区域成为超级用户或授权角色用户。

(2)使用pkgrm命令,可在该非全局区域删除程序包。

zone1# pkgrm package_name

论坛徽章:
0
85 [报告]
发表于 2008-04-14 14:31 |只看该作者
19.6 升级和删除补丁包   
19.6.1 如何只在全局区域升级补丁包
只在全局区域升级补丁包的步骤如下:

(1)在全局区域成为超级用户或授权角色用户。

(2)使用patchadd 命令和参数 –G,只在全局区域完成补丁包的升级。

global# patchadd -G patch_id

19.6.2 如何在全局区域和非全局区域都升级补丁包
在全局区域和非全局区域都升级补丁包的步骤如下:

(1)在全局区域成为超级用户或授权角色用户。

(2)使用patchadd 命令,可在全局区域和所有非全局区域完成补丁包的升级。

global# patchadd patch_id

19.6.3 如何只在非全局区域升级补丁包
只在非全局区域升级补丁包的步骤如下:

(1)在该非全局区域成为超级用户或授权角色用户。

(2)使用patchadd命令,在该非全局区域完成补丁包的升级。

zone1# patchadd patch_id

19.6.4 如何在全局区域和非全局区域都删除补丁包
在全局区域和非全局区域都删除补丁包的步骤如下:

(1)在全局区域成为超级用户或授权角色用户。

(2)使用patchrm命令,在全局区域和所有非全局区域删除补丁包。

global# patchrm patch_id

19.6.5 如何只在非全局区域删除补丁包
只在非全局区域删除补丁包的步骤如下:

(1)在该非全局区域成为超级用户或授权角色用户。

(2)使用patchrm命令,在该非全局区域删除补丁包。

zone1# patchrm patch_id

论坛徽章:
0
86 [报告]
发表于 2008-04-14 14:32 |只看该作者
19.7 Solaris 10区域管理   
本节重要介绍如何在Solaris 10操作系统上进行区域的管理工作。

19.7.1 如何使用ppriv工具来显示区域的权限
ppriv命令是用来显示区域的权限的。使用ppriv命令和参数-l,可以列表显示区域权限。

其步骤如下:

(1)在该非全局区域成为超级用户或授权角色用户。

(2)运行命令:

zone1# ppriv -l zone

contract_event

contract_observer

file_chown

file_chown_self

file_dac_execute

file_dac_read

file_dac_search

file_dac_write

file_link_any

file_owner

file_setid

ipc_dac_read

ipc_dac_write

ipc_owner

net_icmpaccess

net_privaddr

proc_audit

proc_chroot

proc_exec

proc_fork

proc_owner

proc_session

proc_setid

proc_taskid

sys_acct

sys_admin

sys_mount

sys_nfs

sys_resource

有的读者可能觉得这些权限表述得不太清晰,使用-v选项可以获得详细信息。

zone1# ppriv -l -v zone

contract_event

Allows a process to request critical events without limitation.

Allows a process to request reliable delivery of all events on

any event queue.

contract_observer

Allows a process to observe contract events generated by

contracts created and owned by users other than the process's

effective user ID.

Allows a process to open contract event endpoints belonging to

contracts created and owned by users other than the process's

effective user ID.

file_chown

Allows a process to change a file's owner user ID.

Allows a process to change a file's group ID to one other than

the process' effective group ID or one of the process'

supplemental group IDs.

……

19.7.2 如何在运行的非全局区域上安装(mount)文件系统
安装(mount)文件系统到运行的非全局区域上,有下面的两种方法:

 作为全局区域的管理者,可以将设备直接添加到非全局区域。

 先将设备添加到全局区域中,再mount文件系统到非全局区域。

1.用zonecfg命令将块设备和裸设备mount到非全局区域。
其步骤如下:

(1)在全局区域成为超级用户或授权角色用户。

(2)改变当前路径到/usr/tmp:

global# cd /usr/tmp

(3)创建新的UFS文件系统:

global# mkfile 10m fsfile

(4)生成块设备。

如果/dev/lofi./1设备还没有被创建,可以使用下面命令创建:

global# lofiadm -a ‘pwd‘/fsfile

(5)将块设备输入到非全局区域。

global# zonecfg -z my-zone

zonecfg:my-zone> add device

zonecfg:my-zone:device> set match=/dev/rlofi/1

zonecfg:my-zone:device> end

zonecfg:my-zone> add device

zonecfg:my-zone:device> set match=/dev/lofi/1

zonecfg:my-zone:device> end

(6)重新启动区域。

global# zoneadm -z my-zone boot

(7)登录分区,检查设备是否成功启动。

my-zone# ls -l /dev/*lofi/*

brw------- 1 root sys 147, 1 Jan 7 11:26 /dev/lofi/1

crw------- 1 root sys 147, 1 Jan 7 11:26 /dev/rlofi/1

2.在非全局区域中,手动mount文件系统。
(1)在该非全局区域成为超级用户或授权角色用户。

(2)在该非全局区域创建新的文件系统。

my-zone# newfs /dev/lofi/1

(3)响应提示符。

newfs: construct a new file system /dev/rlofi/1: (y/n)? y

你将看到下面的情况:

/dev/rlofi/1: 20468 sectors in 34 cylinders of 1 tracks, 602 sectors10.0MB in 3 cyl groups (16 c/g, 4.70MB/g, 2240 i/g)super-block backups (for fsck -F ufs -o b=#) at:32, 9664, 19296,

(4)检查文件系统的错误。

my-zone# fsck -F ufs /dev/rlofi/1

** /dev/rlofi/1

** Last Mounted on

** Phase 1 - Check Blocks and Size

** Phase 2 - Check Pathnames

** Phase 3 - Check Connectivity

** Phase 4 - Check Reference Counts

** Phase 5 - Check Cyl groups

2 files, 9 used, 9320 free (16 frags, 1163 blocks, 0.2% fragmentation)

(5)mount文件系统。

my-zone# mount -F ufs /dev/lofi/1 /mnt

(6)校验。

my-zone# grep /mnt /etc/mnttab

/dev/lofi/1 /mnt ufs

rw,suid,intr,largefiles,xattr,onerror=panic,zone=foo,dev=24c00011073503869

19.7.3 在非全局区域间进行系统资源公平共享调度
在非全局区域间进行系统资源公平共享调度的步骤如下:

(1)激活Solaris Resource Manager的资源组功能:

#pooladm -e

(2)创建处理器设置组cpu-set,加入0到2个CPU:

# poolcfg -c 'create pset cpu-pset ( uint pset.min=0; uint pset.max=2)'

(3)创建名为rpool的资源池:

# poolcfg -c 'create pool rpool'

(4)关联处理器设置组与资源池:

# poolcfg -c 'associate pool rpool (pset cpu-pset)'

(5)在Solaris中创建虚拟的OS实例shop:

# zonecfg -z shop //建立OS实例shop

zonecfg:shop> create

zonecfg:shop> set zonepath=/diskarray/shop //给实例分配文件系统

zonecfg:shop> set autoboot=true //在OS启动时自动启动

zonecfg:shop> set pool=rpool //给实例分配资源组

zonecfg:shop> add net

zonecfg:shop:net> set physical=ce0

zonecfg:shop:net> set address=192.168.1.1/24 /给实例分配IP

zonecfg:shop:net> end

zonecfg:shop> add rctl //分配FSS

zonecfg:shop:rctl> set name=zone.cpu-shares

zonecfg:shop:rctl> add value (priv=privileged,limit=50,action=none) //分区动态分50%资源

zonecfg:shop:rctl> end

zonecfg:shop> commit

zonecfg:shop> export

zonecfg:shop> exit

# zoneadm -z shop install

# zoneadm -z shop ready

# zoneadm -z shop boot

# zlogin -C shop

...

shop console login:

论坛徽章:
0
87 [报告]
发表于 2008-04-14 14:33 |只看该作者
第20章 系统安全管理   
系统安全问题是每一个网络操作系统管理员都十分关注的问题。因为任何系统服务都可能存在固有的缺陷和弱点,并对系统安全构成威胁。虽然Solaris对比Linux或Windows,安全漏洞可能相对较少,但我们也不能忽视安全问题。

论坛徽章:
0
88 [报告]
发表于 2008-04-14 14:34 |只看该作者
20.1 系统安全概述   
Solaris系统安全的第一道防线是对系统访问的控制。控制对系统访问的方法有以下几种。

1.维护系统的物理安全
为了控制对系统的访问,必须保证计算机所处环境的物理安全。比如,一个用户登录计算机后就离开了,这时任何其他人可以利用这个系统访问操作系统和网络。因此要提醒用户注意维护系统的物理安全,避免出现上述的情况。

2.维护登录的控制
使用密码和登录控制来避免对系统或网络的未被授权的登录。系统中的所有账户都应该有密码。因为即使系统中只有一个账户没有密码,对那些知道这个账户或可以猜到这个账户名的人来说整个网络也都是可用的。

3.维护网络控制
计算机往往是网络的一部分。网络就是使得连接在一起的系统之间可以交换信息,并能访问连接到网络中的系统所提供的数据和其他资源。网络提供了一种强大且精密的计算方式。同时,网络也使得破坏系统安全成为可能。

比如,在一个网络中,每个系统都提供了信息的共享。因为很多用户要访问网络,所以不受欢迎的访问出现的机会就会增加。特别是因为用户的错误,比如用户使用了一个很容易被猜到的密码,很容易使这样的情况发生。

具体防范措施就是:首先安装防火墙是控制网络访问,是保障系统安全的有效措施。

其次,即使可以访问系统的用户也要有严格的权限才能访问系统文件和设备,这对保障系统资源使用及系统服务的正常运行非常重要。

4.限制对文件中数据的访问
使用UNIX中对目录和文件的权限设置来对文件中数据访问进行控制。在一个用户对某个文件有读权限的同时,使其他用户改变或删除该文件,也可以把一个文件设置为其他用户都不可读。

5.监控文件或目录的完整性
基本审计和报告工具(BART)是在文件系统级的文件跟踪工具。使用BART工具使你能快速、容易和可靠地得到系统中的软件构成信息。通过对某个目录的不同时间点的比较,可以确认目录中的内容是否被改动。

6.限制对设备的访问
限制对设备的访问,对资源分配系统设备的安全均有重要的意义。Solaris设备策略是限制或防止访问完整的系统设备,它是在内核中强制执行的。设备分配是限制和防止访问外围设备的,它在用户得到分配的时间中是强制配给的。

使用身份验证服务可防止非法用户登录系统。身份验证也是Solaris系统安全保障措施之一。Secure RPC服务负责在客户主机和用户对服务器进行任务申请时做安全身份验证。它使用Diffie-Hellman或Kerberos来进行身份验证。这两种身份验证方法都使用了DES(数据加密标准)来进行加密。

除了DES数据加密外,Solaris加密体系还提供了其他的加密方法。这些加密方法可以为我们带来文件和系统访问等方面的安全保障。只有了解整个加密体系,才能使我们对Solaris系统的安全有全面的认识。

论坛徽章:
0
89 [报告]
发表于 2008-04-14 14:35 |只看该作者
20.2 系统、文件及设备的安全   
系统、文件和设备的安全是Solaris系统安全的基本组成部分,下面我们进行分别介绍之。

20.2.1 系统访问控制
1.登录和密码的安全
我们可以要求远程的用户在登录系统的时候输入用户名和密码,也可以来监控未能成功登录系统的信息。

(1)如何显示用户的登录状态。

使用logins命令可以显示用户的登录状态。它从用户密码数据库中获得用户的登录状态,这个密码数据库可能是/etc/passwd文件,也可能是其他命名服务的数据库。

 例20-1 显示用户的登录状态。

# logins -x -l rimmer

rimmer 500 staff 10 Annalee J. Rimmer

/export/home/rimmer

/bin/sh

PS 010103 10 7 -1

选项解释如下:

 -x显示扩展的登录状态信息

 -l username显示专门用户的登录信息。username就是用户的登录名。

显示信息解释如下:

 rimmer登录的用户名。

 500登录用户ID。

 Staff登录用户主要组名。

 10登录用户组的ID。

 Annalee J. Rimmer注释信息。

 /export/home/rimmer用户的主目录。

 /bin/sh用户登录的Shell。

 PS 010170 10 7 -1用户密码信息,顺次为下列:

 最后改变密码的信息;

 需要多少天就要改变一次密码;

 还要多少天就可改变密码;

 警告期限。

(2)如何显示出没有密码的用户。

使用-p选项可以显示没有密码的用户列表。

 例20-2 显示没有密码的用户。

# logins -p

pmorph 501 other 1 Polly Morph

#

(3)如何临时关闭用户的登录。

如果系统在一段时间内正在维护,不允许用户登录,则可以在/etc目录下建立一个nologin文件,文件的内容可以是一些关于本次禁止登录的声明。

 例20-3 禁止用户登录。

# vi /etc/nologin

(Add system message here)

# cat /etc/nologin

***No logins permitted.***

***The system will be unavailable until 12 noon.***

(4)如何监控失败的登录信息。

为了记录试图登录的终端用户的登录信息。我们可以专门建立一个日志文件。

 例20-4 使用日志记录终端用户登录信息。

(1)建立一个日志文件:

# touch /var/adm/loginlog

(2)改变日志文件的读写权限和拥有者:

# chmod 600 /var/adm/loginlog

# chgrp sys /var/adm/loginlog

(3)以后,再使用错误密码的终端登录者试图登录的信息就会被写在文件中:

# more /var/adm/loginlog

jdoe:/dev/pts/2:Tue Nov 4 10:21:10 2003

jdoe:/dev/pts/2:Tue Nov 4 10:21:21 2003

jdoe:/dev/pts/2:Tue Nov 4 10:21:30 2003

jdoe:/dev/pts/2:Tue Nov 4 10:21:40 2003

jdoe:/dev/pts/2:Tue Nov 4 10:21:49 2003

#

例20-4只能监控终端登录信息,下面介绍可以监控所有登录失败信息的方法。

(1)编辑/etc/default/login文件,确保“SYSLOG=YES”。/etc/default/login文件内容如下:

# grep SYSLOG /etc/default/login

# SYSLOG determines whether the syslog(3) LOG_AUTH facility

# should be used

SYSLOG=YES

...

SYSLOG_FAILED_LOGINS=0

#

(2)建立一个日志文件:

# touch /var/adm/authlog

# chmod 600 /var/adm/authlog

# chgrp sys /var/adm/authlog

(3)打开syslog.conf文件,添加日志记录功能,添加内容如下:

auth.notice <Press Tab> /var/adm/authlog

(4)重新启动syslog程序:

# svcadm refresh system/system-log

这时候,如果我们登录一下,故意输错密码,就会在日志中找到登录错误的信息:

# more /var/adm/authlog

Nov 4 14:46:11 example1 login: [ID 143248 auth.notice]

Login failure on /dev/pts/8 from example2, stacey

#

如果只想将三次错误登录的用户记录下来,可以编辑/etc/default/login文件,将SYSLOG_FAILED_LOGINS的值改为3即可。

2.如何改变系统密码的加密算法
强悍的密码加密算法可以给系统提供更多的安全保障。Solaris提供的加密算法如表20-1所示。

表20-1 密码的加密算法

标志符
描 述
帮 助

1
是md5算法,它兼容BSD和Linux的MD5算法
crypt_bsdmd5(5)

2a
Blowfish算法,兼容BSD系统的Blowfish算法
crypt_bsdbf(5)

Md5
Sun公司的md5算法
crypt_sunmd5(5)

_unix_
传统UNIX的加密算法
crypt_unix(5)


(1)如何为密码指定专门的算法。

改变默认加密算法的配置文件是/etc/security/policy.conf文件。在此文件中有一个CRYPT_DEFAULT字段,将其值赋予不同的加密算法的标识符,就可以改变系统默认加密算法。

 例20-5 将系统默认加密算法改为Blowfish算法。

修改/etc/security/policy.conf,使其具有下面内容:

CRYPT_ALGORITHMS_ALLOW=1,2a,md5

#CRYPT_ALGORITHMS_DEPRECATE=__unix__

CRYPT_DEFAULT=2a

(2)如何安装新的第三方的加密模块。

新的第三方加密算法是以软件模块的方式添加到系统的。当你运行pkgadd命令时,软件包将修改/etc/security/crypt.conf文件。然后,你可以修改/etc/security/policy.conf文件来增加新加密算法。

 例20-6 增加crypt_rot13算法。

首先,使用pkgadd命令添加软件包。

其次,确认新的模块和模块标识符被添加到/etc/security/crypt.conf文件中:

# crypt.conf

#

md5 /usr/lib/security/$ISA/crypt_md5.so

rot13 /usr/lib/security/$ISA/crypt_rot13.so

# For *BSD - Linux compatibility

# 1 is MD5, 2a is Blowfish

1 /usr/lib/security/$ISA/crypt_bsdmd5.so

2a /usr/lib/security/$ISA/crypt_bsdbf.so

最后,将新的模块标识符写到/etc/security/policy.conf文件中:

# Copyright 1999-2002 Sun Microsystems, Inc. All rights reserved.

# ...

#ident "@(#)policy.conf 1.6 02/06/07 SMI"

# ...

# crypt(3c) Algorithms Configuration

CRYPT_ALGORITHMS_ALLOW=1,2a,md5,rot13

#CRYPT_ALGORITHMS_DEPRECATE=__unix__

CRYPT_DEFAULT= rot13

现在,当前新增用户密码的加密算法就是crypt_rot13算法。

论坛徽章:
0
90 [报告]
发表于 2008-04-14 14:36 |只看该作者
3.监控和限制超级用户
(1)如何监控哪些用户使用了su命令。

sulog文件列出了哪些用户使用了su命令,不仅仅指那些使用su命令转为超级用户的用户。

查看/var/adm/sulog文件:

# more /var/adm/sulog

SU 12/20 16:26 + pts/0 stacey-root

SU 12/21 10:59 + pts/0 stacey-root

SU 01/12 11:11 + pts/0 root-rimmer

SU 01/12 14:56 + pts/0 pmorph-root

SU 01/12 14:57 + pts/0 pmorph-root

信息内容解释如下:

 使用命令的日期和时间都被记录下来。

 命令使用成功以“+”标识;不成功以“-”标识。

 显示了命令运行的端口。

 最后是用户被转换了其他用户的身份的记录。

su的日志默认就是开启的,它的配置文件是/etc/default/su,其内容如下:

SULOG=/var/adm/sulog

(2)如何显示超级用户登录控制台。

有了上面的知识,在控制台上显示超级用户的登录就非常简单了。只需要在/etc/default/su中加入下面一行:

CONSOLE=/dev/console

(3)如何防止用户通过超级用户远程登录。

用户在远程使用超级用户权限登录,对系统的安全会造成较大威胁。大多数系统都禁止超级用户直接在远端登录。具体方法是在/etc/default/login文件中,写入:

CONSOLE=/dev/console

这样,超级用户只能在控制台上登录。远程用户只有以其他用户名登录后,在使用su命令,才能获得超级用户权限。

20.2.2 控制访问设备
Solaris有两种方法来控制访问设备。设备策略是限制或禁止访问完整的系统设备,它是在内核中强制执行的。设备分配是限制和禁止访问外围设备的,它在用户得到分配的时间中是强制配给的。

设备策略是用权限在内核中保护特定的设备驱动。比如,在网络端口上设备策略就需要有全部的读写权限。

设备分配给使用授权来保护外围设备,比如打印机和麦克风。在默认情况下,设备分配是关闭的。默认外围设备控制如下:

 任何用户能读写磁盘或CD-ROM。

 任何用户可以用麦克风。

 任何用户可以访问附属的打印机。

一旦设备分配开启,设备分配能防止使用设备或需要授权才能使用设备。当设备分配给某用户时,其他任何用户都不可以访问这个设备。

1.设备策略
设备策略机制能使得只有使用特权才能访问设备。Solaris操作系统提供了默认的驱动程序策略。比如,网络端口的访问需要net_rawaccess权限等。这在内核中是强制的。

在以前的Solaris版本,设备节点的保护只是通过文件的权限。比如,sys组拥有的设备只能被sys组成员用户打开。在Solaris 10中,文件的许可不再通过谁能打开设备而预知,代替的是,设备的保护是通过文件的许可和设备策略。

(1)查看设备策略。

 例20-7 显示系统中所有设备的设备策略。

% getdevpolicy | more

DEFAULT

read_priv_set=none

write_priv_set=none

ip:*

read_priv_set=net_rawaccess

write_priv_set=net_rawaccess

...

(2)增加设备策略。

 例20-8 在已有的设备上增加设备策略。

(1)查看现有策略:

# getdevpolicy /dev/ipnat

/dev/ipnat

read_priv_set=none

write_priv_set=none

(2)使用update_drv命令增加策略:

# update_drv -a -p ’read_priv_set=net_rawaccess write_priv_set=net_rawaccess’ ipnat

(3)检查更新:

# getdevpolicy /dev/ipnat

/dev/ipnat

read_priv_set=net_rawaccess

write_priv_set=net_rawaccess

(3)删除设备策略。

 例20-9 将读权限从ipnat设备上删除。

(1)查看现有策略:

# getdevpolicy /dev/ipnat

/dev/ipnat

read_priv_set=net_rawaccess

write_priv_set=net_rawaccess

(2)将读权限从ipnat设备上删除:

# update_drv -a -p write_priv_set=net_rawaccess ipnat

(3)检查结果:

# getdevpolicy /dev/ipnat

/dev/ipnat

read_priv_set=none

write_priv_set=net_rawaccess

2.管理设备分配
设备分配机制可以严格限制访问外围设备,比如CD-ROM。设备分配要求只有授权用户才能访问限制设备,能防止设备被任意访问。

(1)如何启动设备分配。

当你已经使用bsmconv命令启动了基本安全模块(BSM)的时候,设备分配在你的系统中就已经启动。

 例20-10 启动设备分配。

# bsmconv

This script is used to enable the Basic Security Module (BSM).

Shall we continue with the conversion now? [y/n] y

bsmconv: INFO: checking startup file.

bsmconv: INFO: move aside /etc/rc3.d/S81volmgt.

bsmconv: INFO: turning on audit module.

bsmconv: INFO: initializing device allocation files.

The Basic Security Module is ready.

If there were any errors, please fix them now.

Configure BSM by editing files located in /etc/security.

Reboot this system now to come up with BSM enabled.

(2)如何查看设备分配的信息。

# list_devices device-name

device-name是指下列设备:

 audio[n] – 麦克风和喇叭;

 fd[n] – 磁盘设备;

 sr[n] – CD-ROM;

 st[n] – 磁带设备。

3.分配设备
分配设备的目的就是保障一个设备在同一时间只能有一个用户使用。需要mount的设备要在mount后才能使用。

(1)如何分配设备。

 例20-11 将音频设备分配给jdoe用户。

% whoami

jdoe

% allocate audio

 例20-12 将打印机强制分配给任何用户。

$ deallocate -F /dev/lp/printer-1

 例20-13 将磁带机分配给用户jdoe。

% whoami

jdoe

% allocate st0

(2)如何分配需要mount的设备。

 例20-14 用户的角色能分配和mount设备fd0。这个磁盘设备的文件系统是PCFS。

% roles

devicealloc

% su devicealloc

Password: <Type devicealloc password>

$ mkdir /home/devicealloc/mymnt

$ chmod 700 /home/devicealloc/mymnt

$ list_devices -l

...

device: fd0 type: fd files: /dev/diskette /dev/rdiskette /dev/fd0a

...

$ allocate fd0

$ mount -o ro -F pcfs /dev/diskette /home/devicealloc/mymnt

$ ls /home/devicealloc/mymnt

…显示出磁盘内容

 例20-15 用户的角色能分配和mount CD-ROM设备,sr0。设备的文件系统是HSFS。

% roles

devicealloc

% su devicealloc

Password: <Type devicealloc password>

$ mkdir /home/devicealloc/mymnt

$ chmod 700 /home/devicealloc/mymnt

$ list_devices -l

...

device: sr0 type: sr files: /dev/sr0 /dev/rsr0 /dev/dsk/c0t2d0s0 ...

...

$ allocate sr0

$ mount -o ro -F hsfs /dev/sr0 /home/devicealloc/mymnt

$ cd /home/devicealloc/mymnt ; ls

…显示CD-ROM的内容

(3)如何交出设备。

当你使用完设备后,unmount的设备后,可以使用deallocate命令,将设备交给其他用户使用。

20.2.3 文件访问控制
对文件的访问控制有两种方法:一是UNIX的文件权限管理;二是使用访问控制列表来管理。

1.UNIX文件权限管理
(1)如何显示文件信息。

 例20-16 显示文件信息。

% cd /sbin

% ls -la

total 13456

drwxr-xr-x 2 root sys 512 Sep 1 14:11 .

drwxr-xr-x 29 root root 1024 Sep 1 15:40 ..

-r-xr-xr-x 1 root bin 218188 Aug 18 15:17 autopush

lrwxrwxrwx 1 root root 21 Sep 1 14:11 bpgetfile -> ...

-r-xr-xr-x 1 root bin 505556 Aug 20 13:24 dhcpagent

-r-xr-xr-x 1 root bin 456064 Aug 20 13:25 dhcpinfo

(2)如何改变文件的拥有者。

 例20-17 将文件的拥有者改为stacey。

# chown stacey example-file

(3)如何改变文件的组。

 例20-18 将文件的组改为scifi。

$ chgrp scifi example-file

(4)如何改变文件权限。

$ chmod a+rx example-file2

$ chmod 700 my_script

2.用访问控制列表设置文件安全
(1)如何检查文件是否有访问控制列表。

 例20-19 检查文件是否有访问控制列表。

% ls -l ch1.sgm

-rwxr-----+ 1 stacey techpubs 167 Nov 11 11:13 ch1.sgm

输出结果有“+”号时,表示文件有访问控制列表。

(2)如何给文件增加访问控制列表。

 例20-20 给ch1.sgm文件设置访问控制列表。

% setfacl -s user::rw-,group::r--,other:---,mask:rw-,user:anusha:rw- ch1.sgm

使用ls -l查看,ch1.sgm文件有“+”符号,说明访问控制列表已经起作用:

% ls -l

total 124

-rw-r-----+ 1 stacey techpubs 34816 Nov 11 14:16 ch1.sgm

-rw-r--r-- 1 stacey techpubs 20167 Nov 11 14:16 ch2.sgm

-rw-r--r-- 1 stacey techpubs 8192 Nov 11 14:16 notes

查看文件的访问控制列表的详细内容:

% getfacl ch1.sgm

# file: ch1.sgm

# owner: stacey

# group: techpubs

user::rwuser:

anusha:rw- #effective:rwgroup::

r-- #effective:r--

mask:rwother:---

(3)如何复制访问控制列表。

 例20-21 将ch2.sgm文件的访问控制列表复制到ch3.sgm上。

% getfacl ch2.sgm | setfacl -f - ch3.sgm

(4)如何改变文件的访问控制列表。

 例20-22 改变文件的访问控制列表。

% setfacl -m user:anusha:6 ch3.sgm

% getfacl ch3.sgm

# file: ch3.sgm

# owner: stacey

# group: techpubs

user::rwuser::

anusha:rw- #effective:r--

group::r- #effective:r--

mask:r--

other:r-

(5)如何删除文件的访问控制列表。

 例20-23 删除文件的访问控制列表。

% setfacl -d user:anusha ch4.sgm

20.2.4 基本审计和报告工具(BART)
BART是在文件系统级的文件跟踪工具。使用BART工具使你能快速、容易和可靠地得到系统中的软件构成信息。使用BART能很大程度地减少网络系统的管理成本。BART能够在目标系统软件目录的文件层执行检查操作。该实用程序可用于收集有关系统已安装了哪些内容的信息。BART还使你能够对已安装的系统及系统内容随时间的变化情况进行比较。

1.BART的组成
基本审计和报告工具(BART)由两个主要部分和一个可选部分组成。

(1)BART文件列表(Manifest)。

你可以使用bart create命令在特定时刻建立文件层的快照。输出的文件目录或文件属性被称为文件列表。文件列表中列出文件的信息,包括着文件属性信息及一些其他的惟一信息,比如md5的检查信息等。

(2)BART报告。

BART报告有三个输出:两个文件列表的比较和一个可能出现的差异标记。你能用bart compare命令比较两个文件列表:控制文件列表和测试文件列表。这些文件列表必须是具有相同的文件系统、选项和创建时使用的规则文件。bart compare命令报告两个文件列表的每一行的差异。这个差异就是指文件列表内表示的文件属性的任何差异。两个文件列表中条目的增加和删除也视为差异。

(3)BART规则文件。

规则文件是用来管理bart命令的文件,是可选的。它使用或排除一些规则。规则文件用来创建定制文件列表和报告。规则文件使你能使用简单的语法设置文件的类别,以及哪些属性需要监控。当你比较文件列表时,规则文件帮助识别差异。使用规则文件是得到系统专门信息的有效方法。

2.如何使用BART
规则用户、超级用户或具有重要管理权限的用户可以使用bart命令。如果你是运行bart的规则用户,你只能监控有权限访问的文件和目录,比如主目录信息。超级用户使用bart命令的优势是可以监控隐藏目录和私人目录的信息。如果要监控严格限制的目录,比如/etc/shadow和/etc/passwd目录,就需要是超级用户或具有相当角色的用户。

(1)如何创建文件列表。

 例20-24 创建包含目录/etc/ssh下所有文件信息的文件列表。

# bart create -R /etc/ssh

! Version 1.0

! Saturday, November 29, 2003 (14:05:36)

# Format:

#fname D size mode acl dirmtime uid gid

#fname P size mode acl mtime uid gid

#fname S size mode acl mtime uid gid

#fname F size mode acl mtime uid gid contents

#fname L size mode acl lnmtime uid gid dest

#fname B size mode acl mtime uid gid devnode

#fname C size mode acl mtime uid gid devnode

/ D 512 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3f81eab9 0 3

/ssh_config F 861 100644 user::rw-,group::r--,mask:r--,

other:r-- 3f81e504 0 3 422453ca0e2348cd9981820935600395

/ssh_host_dsa_key F 668 100600 user::rw-,group::---,mask:---,

other:--- 3f81eab9 0 0 5cc28cdc97e833069fd41ef89e4d9834



 例20-25 创建包含文件/etc/passwd和/etc/shadow的信息的文件列表。

# bart create -I /etc/passwd /etc/shadow

! Version 1.0

! Monday, December 15, 2003 (16:28:55)

# Format:

#fname D size mode acl dirmtime uid gid

#fname P size mode acl mtime uid gid

#fname S size mode acl mtime uid gid

#fname F size mode acl mtime uid gid contents

#fname L size mode acl lnmtime uid gid dest

#fname B size mode acl mtime uid gid devnode

#fname C size mode acl mtime uid gid devnode

/etc/passwd F 542 100444 user::r--,group::r--,mask:r--,

other:r-- 3fcfd45b 0 3 d6

84554f85d1de06219d80543174ad1a

/etc/shadow F 294 100400 user::r--,group::---,mask:---,

other:--- 3f8dc5a0 0 3 fd

c3931c1ae5ee40341f3567b7cf15e2

上面已经显示了这两个文件的详细信息,我们可以对比一下ls –al命令的输出,体会一下它们之间的不同:

# ls -al /etc/passwd

-r--r--r-- 1 root sys 542 Dec 4 17:42 /etc/passwd

# ls -al /etc/shadow

-r-------- 1 root sys 294 Oct 15 16:09 /etc/shadow

显然,文件列表的内容要比ls –al详细得多。

(2)如何比较文件列表。

如果我们在不同的时间对系统中某个目录分别建立了两个文件列表,就可以通过比较这两文件列表的不同而找到这个目录的轻微改动,这也将为系统安全带来新的保障。

 例20-26 比较不同时间的/etc目录的变化。

首先,建立/etc的文件列表:

bart create -R /etc > system1.control.121203

在另一个时间建立/etc目录的新的文件列表:

bart create -R /etc > system1.test.121503

最后,比较两个文件列表的内容:

# bart compare system1.control.121203 system1.test.121503

/vfstab:

mode control:100644 test:100777

acl control:user::rw-,group::r--,mask:r--,other:r-- test:user::rwx,

group::rwx, mask:rwx, other:rwx

通过上面的输出报告,我们发现/etc/vfstab文件已经被更改了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP