如何安装和恢复 AIX 缺省安全模式
2009-07-11 08:32:25 来源:WEB开发网Secure by Default(SbD) 缺省安全功能特性概述
Secure by Default(SbD) 缺省安全是指在安装系统时安装最小一套安全配置方面软件的安全概念,它希望安装最少数量的文件集,并希望严格控制向基础操作系统所添加的内容的用户。在缺省安全的安装中,禁用了网络连接性。也适用于在不受信任的网络中所安装的系统。
这意味着缺省安全中默认配置设置是最安全的设定,但这不一定是最具用户友好的设置。在许多情况下,安全性和用户友好是鱼与熊掌不可得兼。我们要在自身需要的基础上发动的风险分析和可用性测试,从系统稳定安全角度,来讨论什么是最安全的设置。
截止到 AIX5L V5.3,AIX 有两种安全特性,这些特性可以在安装的时候激活 : Trusted Computing Base (TCB) 和 CAPP/EAL4+ (CCEVAL)。从 AIX V6 开始,另外三种新的安全特性被加进来了,可信的 AIX(Trusted AIX), LSPP/EAL4+ 和缺省安全模式 Secure by Default (SbD)。同样,这三种特性在安装的时候就可以被激活。
缺省安全模式 Secure by Default (SbD) 可以使用最少的系统和网络服务来提供最大的安全性。它非常适合与 AIX Security Expert 一起使用,用来严格控制每个系统的安全配置。
缺省安全模式将会安装一个轻量级 TCP 客户端和服务器文件集,这其中不包括容易造成安全性能薄弱的命令和文件。而文件集 bos.net.tcp.client 和 bos.net.tcp.server 就是被缺省安装排除在外的文件,因为他们包括除去通过网络以明文格式传送密码的 telent 和 ftp 等之外的几乎所以命令和文件。并且某些可能被用到的应用比如 rsh,rcp 和 sendmail 也将被缺省安装排除在外。
缺省安全安装也是有自动化过程的,它是利用 AIX Security Expert 高级安全配置设定。用户可以利用 /etc/firstboot 中的 aixpert:/usr/sbin/aixpert -f /etc/security/aixpert/core/SbD.xml -p 2>/etc/security/aixpert/log/firstboot.log。
当然,用户也可以把系统由缺省安全模式改回到正常模式,具体可以通过改变 ODM 的变量值 SbD_STATE(从 sbd_enable 改为 sbd_disable),另外要安装 bos.net.tcp.client 和 bos.net.tcp.server 文件集,并且使用 AIX Security Expert 把系统恢复成原来的默认安全状态。这些我们将会在下面的例子中详细描述。
缺省安全模式的安装方式是不能通过 migration 或者 preservation 的安装方式来实现缺省安装的,它是一个单独的安装方式。实际上,在一个安全配置系统里,也可以不选择缺省安全安装。例如:AIX Security Expert 中 High, Medium, Low, Adcanced 四个级别都可以在正常安装过程来配置的。缺省安装的系统和正常安装的带有 AIX Security Expert High Level 安全配置的区别可以以 telnet 的功能为例来说明。 telnet 在这两种情况下都是被禁用的。不同的是,在缺省安全的安装中,telent binary or application 应用是自始至终没有安装的。缺省安全模式是一种新的安装功能,它能够援引 AIX securety Expert 的一部分功能完成最小量安装。缺省安全模式是一个比带有 AIX Security Expert High Level 安全配置具有更多限制的安全模式。
在系统足够强壮和更多的鲁棒性之前,缺省安全模式更多的通过禁止和限制网络相关程序的方法来保证系统的安全。一个安全的基本准则是没有明确许可的将被拒绝。缺省安全通过最小化限制安装网络程序降低了软件方面有可能出现的网络漏洞。在最初的安装之后,系统管理员只会安装系统里明确需要的软件。
在缺省安全模式中用户将获得如下安全功能:最小数量的文件集和网络功能,并且可扩展的某个将会用到的文件集。缺省安全将会去掉 TCP 客户端功能。
下面我们就举例来说明如何安装 Secure by Default(SbD) 缺省安全功能
我们可以通过如下两种方式来安装缺省安全模式:
光盘直接安装缺省安全
通过 NIM 安装来实现缺省安全模式
目前的安装应用大多为网络安装,下面我们的举例将主要通过 NIM 安装方式来详述缺省安全模式安装步骤:
使用 NIM 来安装缺省安全功能和恢复到正常模式
当缺省安全在安装时选择时,只有最少的一部分文件集被安装(大约 100 个文件集)。这明显少于正常饱满安装时安装的至少 250 文件集。但是缺省安全提供最少的文件集至少能让 AIX 启动。当然在此后我们可以根据需要任意添加需要的文件集。
如何使用 NIM 安装缺省安全模式系统(Secure by Default)
我们接下来应该根据如下步骤。
初始化和创建 NIM Master 资源
修改 NIM bosinst_data 资源特性
定义 NIM 客户端
分配 NIM 资源给 NIM 客户端
执行 bos_inst 操作
开始安装
用户需要从安装网卡网络启动 NIM 客户机。
初始化和创建 NIM Master 资源
首先,我们需要初始化 NIM Master 资源,我们可以通过命令行和 smit 两种方式来实现:
命令行方式:
nim_master_setup
Smit 方式:
smit nim -> Configure the NIM Environment -> Configure a Basic NIM Environment (Easy Startup)
完成后我们可以通过 lsnim 来列出所有的 nim 中的资源,包括 lpp_source, spot,
bash-2.05b# lsnim
master machines master
boot resources boot
nim_script resources nim_script
network1 networks ent
lpp_source1 resources lpp_source
Spot1 resources spot
bid_ow resources bosinst_data
61_src_grp groups res_group
testnode machines standalone
osprereboot resources script
命令中重要选项含义:
nim_master_setup: NIM 中用初始化网络安装管理(NIM)主控机文件集,配置 NIM 主控机和创建安装所需的资源。
修改 NIM bosinst_data 资源特性
在 nim 中,我们需要修改 bosinst_data 资源的属性 SECURE_BY_DEFAULT。
首先我们可以通过如下命令 lsnim –l 列出 bosinst_data 资源的详细信息:
bash-2.05b# lsnim -l bid_ow
bid_ow:
class = resources
type = bosinst_data
Rstate = ready for use
prev_state = unavailable for use
location = /export/bosinst_data/bid_ow
alloc_count = 4
server = master
命令中重要选项含义:
alloc_count 本资源被划分给其他 client 的次数
然后,我们需要编辑 /export/bosinst_data/bid_ow 文件,把其中 SECURE_BY_DEFAULT 属性从 no 改为 yes.
….
MKSYSB_MIGRATION_DEVICE =
TRUSTED_AIX = no
TRUSTED_AIX_LSPP = no
TRUSTED_AIX_SYSMGT = yes
SECURE_BY_DEFAULT = yes ------> 设为 yes
该文件中重要选项含义:
TRUSTED_AIX: 可以通过将这个参数设为 yes 来安装可信任的 AIX 系统
SECURE_BY_DEFAULT:缺省安全模式参数,如果被设为 yes,在 bosinst 安装中将会安装缺省安全模式的 AIX 系统。
定义 NIM 客户端
按照如下步骤,NIM 客户机资源 testnode 将被建立
命令行方式:
#/usr/sbin/nim -o define -a netboot_kernel=64 -a platform=chrp
-a net_settings1='auto auto' -a if1='10_1_1_0_net testnode.ibm.com 720AF0C200000 ent'
-a cable_type1=N/A testnode
命令中的重要选项含义:
netboot_kernel:网络启动内核类型
net_settings1:网络速率(100,1000 或者 auto)和半 / 全双工设定(half,full 或者 auto)
cable_type1:缆线类型 ( 可以设为 bnc,dix,tp 或者 N/A)
SMIT 方式:
smit nim -> Perform NIM Administration Tasks -> Manage Machines -> Define a Machine
如下图所示:
首先:选择 ent(ethernet 网络类型)
------------------------------------------------------------------------------
Define a Machine
Type or select a value for the entry field.
Press Enter AFTER making all desired changes.
[Entry Fields]
* Host Name of Machine [testnode]
(Primary Network Install Interface)
+--------------------------------------------------------------------------+
| Type of Network Attached to Primary Network Install Interface |
| Move cursor to desired item and press Enter. |
| tok = token ring network |
| ent = ethernet network <<<< |
| fddi = FDDI network |
| generic = generic network (no network boot capability) |
| atm = ATM network |
| ent6 = IPv6 ethernet network
其次,在如下图表中,填写相关的 NIM 信息。
Define a Machine
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* NIM Machine Name [testnode]
* Machine Type [standalone]
* Hardware Platform Type [chrp]
Kernel to use for Network Boot [64]
Communication Protocol used by client []
Primary Network Install Interface
* Cable Type bnc
Network Speed Setting [auto]
Network Duplex Setting [auto]
* NIM Network [ent-Network5]
* Network Type ent
* Ethernet Type Standard
* Subnetmask []
* Default Gateway Used by Machine []
* Default Gateway Used by Master [1.0.0.10]
* Host Name testnode
Network Adapter Hardware Address [0]
Network Adapter Logical Device Name []
IPL ROM Emulation Device []
CPU Id []
Machine Group []
Comments
其中命令中重要参数含义:
NIM Machine Name: NIM 客户机名
Machine Type: NIM 客户机类型
Hardware Platform Type:硬件平台类型
NIM Network: NIM 网络资源名
Cable Type:缆线类型
Network Type:网络类型
Network Speed Setting: NIM 网卡速度设定
Subnetmask:NIM 网络资源的子网掩码
分配 NIM 资源给 NIM 客户端
NIM 客户端在 NIM 中被定义后,我们需要把可以相应要装的 AIX 系统 NIM 资源非配给它,比如说 lppsource 和 spot。
命令行方式:
# nim -o bos_inst -a source=rte -a boot_client=no -a lpp_source= lpp_source1
-a spot=spot1 -a bosinst_data=bid_ow -a accept_licenses=yes testnode
SMIT 方式:
mit nim -> Perform NIM Administration Tasks -> Manage Machines -> Manage Network Install Resource Allocation
或者:smitty nim_mac_res
具体步骤如下:
首先,在 Manage Machine 中选择 Manage Network Install Resource Allocation
Manage Network Install Resource Allocation
Move cursor to desired item and press Enter.
List Allocated Network Install Resources
Allocate Network Install Resources <<<<<<<<<<<<<<<<<<<
Deallocate Network Install Resources
其次,选择要被分配的客户端机器,选择需要分配的 lppsource 和 spot 资源,然后确认。
至此,NIM 客户端所需要的 NIM 资源分配完毕。
执行 bos_inst 操作
在 NIM 客户端定义完毕,并且已经分配了相应的 NIM 资源后,我们可以进行系统的安装了。
命令行方式 :
# nim -o bos_inst -a source=rte -a boot_client=no -a lpp_source= lpp_source1
-a spot=spot1 -a bosinst_data=bid_ow -a accept_licenses=yes testnode
SMIT 方式:
smit nim -> Perform NIM Administration Tasks ->
Manage Machines -> Manage Network Install Resource Allocation
或者 smitty nim_mac_op
然后选择 testnode 作为 NIM 客户端,并且选择 bos_inst = perform a BOS installation
首先,在选择 Manage Machines 中选择你要按转的客户端 testnode,
Change/Show Characteristics of a Machine
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
其次在如下的界面中选择 bos_inst
Manage Machines
+--------------------------------------------------------------------------+
| Operation to Perform |
| |
| Move cursor to desired item and press Enter. Use arrow keys to scroll. |
| |
| [TOP] |
| diag = enable a machine to boot a diagnostic image |
| cust = perform software customization |
| bos_inst = perform a BOS installation |
| maint = perform software maintenance |
| reset = reset an object's NIM state |
| fix_query = perform queries on installed fixes |
| check = check the status of a NIM object |
| reboot = reboot specified machines |
| maint_boot = enable a machine to boot in maintenance mode |
| showlog = display a log in the NIM environment |
[TOP] [Entry Fields]
最后,选择 bos_inst 后,填写如下参数,把 accept license 改为 yes,Initiate Boot Operation on Client 改为 no。
Perform a Network Install
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
Target Name testnode
Source for BOS Runtime Files rte +
installp Flags [-agX]
Fileset Names []
Remain NIM client after install? yes +
Initiate Boot Operation on Client? no +
Set Boot List if Boot not Initiated on Client? no +
Force Unattended Installation Enablement? no +
ACCEPT new license agreements? [yes] +
安装过程
在 NIM 客户端的 SMS 中把 server IP 设为 NIM Master,启动 testnode,系统开始安装。通过 csm rconsole 或者 HMC 上开一个客户端的 console,用户可以看到 NIM 客户端的客户端输出。
这时候,我们会看到安装停在如下的界面,
>>> 1 Type 1 and press Enter to have English during install.
……
88 Help ?
>>> Choice [1]: 1
我们选择 1 继续
我们会看到安装停在如下的 Overwrite Installation Summary
Welcome to Base Operating System
Installation and Maintenance
Type the number of your choice and press Enter. Choice is indicated by >>>.
>>> 1 Start Install Now with Default Settings
2 Change/Show Installation Settings and Install
3 Start Maintenance Mode for System Recovery
4 Configure Network Disks (iSCSI)
5 Select Storage Adapters
BOSINST_DEBUG enabled
88 Help ?
99 Previous Menu
>>> Choice [1]:
在 Installation and Maintenance 对话框中选择 1 Continue with Install 如下所示:
Overwrite Installation Summary
Disks: hdisk0
Cultural Convention: C
Language: C
Keyboard: C
JFS2 File Systems Created: yes
System Management Software for Secure by Default: yes
System Management Client Software: yes
Enable System Backups to install any system: yes
Security: Secure by Default Enabled
>>> 1 Continue with Install
+-----------------------------------------------------
88 Help ? | WARNING: Base Operating System Installation will
99 Previous Menu | destroy or impair recovery of ALL data on the
| destination disk hdisk0.
>>> Choice [1]:
在 Overwrite Installation Summary 对话框中选择 1
此后正常默认安装即可。
通过 ODM 查询 SbD(缺省安全)状态
在整个安装结束后,我们登入客户端可以通过 ODM 查询 SbD 的状态。
缺省安全是存储在 ODM 中的系统状态(就如同 TCB 或者 CCEBVAL)。我们可以在运行的系统上通过运行如下命令查询缺省安全的状态。deflt = "sbd_enabled" 表明系统正处于缺省安全的状态。
# odmget -q attribute=SbD_STATE PdAt
PdAt:
uniquetype = ""
attribute = "SbD_STATE"
deflt = "sbd_enabled"
values = ""
width = ""
type = ""
generic = ""
rep = ""
nls_index = 0
安装后其它相关信息
在安装过程中,是由 TCP 客户端的安装流程来确认安装的状态的。如果检测到 sbd_enabled,大量的二进制文件就会被移除,因为他们看起来是不安全的(也就是说,这些功能仅需要很小的授权即可获得)。
bos.net.tcp.client 文件集中,下面这些文件将会被移除:
/usr/bin/rcp, /usr/bin/rexec, /usr/bin/rsh,/usr/bin/remsh,/usr/bin/tftp,/usr/bin/utftp,/usr/lib/boot/tftp,/usr/bin/traceroute,/usr/sbin/sendmail_nonssl,/usr/sbin/sendmail_ssl,/usr/sbin/sendmail,/usr/sbin/mailq,/usr/sbin/newaliases,/usr/lib/sendmail,/usr/sbin/sendmail_load,/usr/sbin/netcd,/usr/sbin/netcdctrl,/usr/samples/tcpip/netcd.conf,/usr/lib/drivers/if_op
在 bos.net.tcp.server 文件集中,下面这些文件被移除:
/usr/sbin/gated,/usr/sbin/imapd,/usr/sbin/ipreport,/usr/sbin/iptrace,/usr/sbin/named8,/usr/sbin/named8-xfer,/usr/sbin/named9,/usr/sbin/pop3ds,/usr/sbin/routed,/usr/sbin/tcpdump,/usr/sbin/timed
一旦安装结束,系统重启后,aixpert 就会先在 /etc/firstboot,使用预先设定的规则 SbD.xml,即命令 aixpert –f /etc/security/aixpert/core/SbD.xml。
注意:该文件也可以记录在一个缺省安全的系统中的在初始选择时的文件变化。
如下为系统在安装完毕重启时的信息:
Welcome to AIX.
boot image timestamp: 20:42 10/07
The current time and date: 20:43:14 10/07/2008
processor count: 2; memory size: 4224MB; kernel size: 26074804
boot device: /pci@800000020000001/pci@2/pci1069,b166@1/scsi@0/sd@4:2
-------------------------------------------------------------------------------
Saving Base Customize Data to boot disk
Starting the sync daemon
Starting the error daemon
System initialization completed.
TE=OFF
CHKEXEC=OFF
CHKSHLIB=OFF
CHKSCRIPT=OFF
CHKKERNEXT=OFF
STOP_UNTRUSTD=OFF
STOP_ON_CHKFAIL=OFF
LOCK_KERN_POLICIES=OFF
TSD_FILES_LOCK=OFF
TSD_LOCK=OFF
TEP=OFF
TLP=OFF
Successfully updated the Kernel Authorization Table.
Successfully updated the Kernel Role Table.
Successfully updated the Kernel Command Table.
Successfully updated the Kernel Device Table.
OPERATIONAL MODE Security Flags
ROOT : ENABLED
System runtime mode is now OPERATIONAL MODE.
Setting tunable parameters...complete
Starting Multi-user Initialization
Performing auto-varyon of Volume Groups
Activating all paging spaces
swapon: Paging device /dev/hd6 is already active.
The current volume is: /dev/hd1
Primary superblock is valid.
当初始配置结束,如同正常 AIX 安装一样重启,安装辅助应用一些系统的基本设制(接受 license,设定时间和日期,设定 root 和密码等)已经完成。由于缺省安全规则是基于高安全等级的规则,严格密码规则已经包含在内。
用户想要加入文件集的个人定制化的包可以通过以下两个方式:
1. 在一个安全和隔离的网络环境中安装
2. 通过 CD/DVD 安装
我们推荐在初始安装后安装 openssh,因为缺省安装将会删除所有使用明码密码的远程服务(例如,telnet,ftp,rlogin 等)。这样的话用户任何进一步的定制都可以通过远程安全方式完成。
如何从缺省安全状态恢复到正常 AIX
缺省安全下安装的任何系统都可以恢复成正常的系统,比如说,用户需要从 bos.net 包中添加在缺省安全状态下删除的文件集。
如果要恢复成正常的 AIX 系统,我们可以按照以下步骤:
在 ODM 中修改 sdb_state 的属性
运行 odmget -q attribute=SbD_STATE PdAt > sbd_state.
编辑 sbd_state 文件,把 sbd_enabled 改成 sbd_disabled.
PdAt:
uniquetype = ""
attribute = "SbD_STATE"
deflt = "sbd_enabled" ---> 把 sbd_enabled 改成 sbd_disabled
values = ""
width = ""
type = ""
generic = ""
rep = ""
nls_index = 0
运行 odmdelete -o PdAt -q attribute=SbD_STATE .
# odmdelete -o PdAt -q attribute=SbD_STATE
0518-307 odmdelete: 1 objects deleted.
运行 odmadd sbd_state.
bash-2.05b# odmget -q attribute=SbD_STATE PdAt
PdAt:
uniquetype = ""
attribute = "SbD_STATE"
deflt = "sbd_disabled"
values = ""
width = ""
type = ""
generic = ""
rep = ""
nls_index = 0
重新强制安装 bos.net.tcp.client 和 bos.net.tcp.server.
运行安装命令后,可以看到如下输出。
installp -IaXF -d . bos.net.tcp
….
Some configuration files could not be automatically merged into the system
during the installation. The previous versions of these files have been
saved in a configuration directory as listed below. Compare the saved files
and the newly installed files to determine if you need to recover
configuration data. Consult product documentation to determine how to
merge the data.
Configuration files which were saved in /lpp/save.config:
/etc/3270.keys
/etc/3270keys.hft
/etc/aixmibd.conf
/etc/bootptab
/etc/hostmibd.conf
/etc/inetd.conf
/etc/mail/sendmail.cf
/etc/map3270
/etc/mib.defs
/etc/ntp.conf
/etc/rc.bsdnet
/etc/rc.net
/etc/rc.tcpip
/etc/rpc
/etc/services
/etc/slip.hosts
/etc/slp.conf
/etc/snmpd.conf
/etc/snmpd.peers
/etc/snmpmibd.conf
/etc/syslog.conf
/etc/telnet.conf
installp: bosboot verification starting...
installp: bosboot verification completed.
installp: bosboot process starting...
bosboot: Boot image is 39994 512 byte blocks.
0503-292 This update will not fully take effect until after a
system reboot.
* * * A T T E N T I O N * * *
System boot image has been updated. You should reboot the
system as soon as possible to properly integrate the changes
and to avoid disruption of current functionality.
从上面的信息可以看出,真正使安装生效,我们需要在安装结束后,重启机器。
运行 aixpert -l d[efault]
在机器重写启动完成后,我们可以运行:aixpert -l d
此时,系统就由缺省安全状态恢复到正常安装的安全模式下了。
结论
本文详细介绍了使用 NIM 缺省安全模式的安装和恢复方法,作为 AIX6 中的安全新功能,缺省安全模式能安装最少数量的文件集,并严格控制用户向基础操作系统添加的内容。对于大规模集群安装或单个工作站的网络安装,本文提供了通过 NIM 进行缺省安全模式安装的详细步骤。对于由缺省安全切换回正常系统模式的场景,本文也详细叙述了通过 NIM 进行操作的步骤。
附录
当缺省安全下安装完毕,下面的服务将会在安装时就被从系统中移除。随着这些服务的移除,用户将不能再使用这类命令。如果需要如下的命令和程序,或者如果任何脚本、远程程序、依赖于此的文件集需要这些命令和程序,不建议用户使用缺省安装选项。
Name | Program | Arguments |
ftp | /usr/sbin/ftpd | ftpd |
telnet | /usr/sbin/telnetd | telnetd -a |
shell | /usr/sbin/rshd | rshd |
login | /usr/sbin/rlogind | rlogind |
exec | /usr/sbin/rexecd | rexecd |
comsat | /usr/sbin/comsat | comsat |
uucp | /usr/sbin/uucpd | uucpd |
bootps | /usr/sbin/bootpd | bootpd /etc/bootp |
finger | /usr/sbin/fingerd | fingerd |
systat | /usr/bin/ps | ps -ef |
netstat | /usr/bin/netstat | netstat -f inet |
tftp | /usr/sbin/tftpd | tftpd -n |
talk | /usr/sbin/talkd | talkd |
ntalk | /usr/sbin/talkd | talkd |
rquotad | /usr/sbin/rpc.rquotad | rquotad |
rexd | /usr/sbin/rpc.rexd | rexd |
rstatd | /usr/sbin/rpc.rstatd | rstatd |
rusersd | /usr/lib/netsvc/rusers/rpc.rusersd | rusersd |
rwalld | /usr/lib/netsvc/rwall/rpc.rwalld | rwalld |
sprayd | /usr/lib/netsvc/spray/rpc.sprayd | sprayd |
pcnfsd | /usr/sbin/rpc.pcnfsd | pcnfsd |
instsrv | /u/netinst/bin/instsrv | instsrv -r /tmp/netinstalllog /u/netinst/scripts |
参考文献:
* NIM from A to Z in AIX 5L: 本红皮书向您详细地介绍了 NIM 的配置和使用,是全面学习 NIM 的很好的资料。
* Advanced POWER Virtualization on IBM P5: 本红皮书向您提供了对于和 POWER 服务器虚拟化技术相关的内容,是一个了解虚拟化技术的很好的资料。
* AIX V6 Advanced Security Features Introduction and Configuration:本红皮书向您详细介绍了 AIX V6 的高级安全功能和配置。
更多精彩
赞助商链接