电脑技术学习

Yassp工具包安装安全的 Solaris 系统 (B)

dn001


4、在/etc/vfsab文件中对安装文件系统做限制
在安装文件系统时,使用一些参数可以提高文件系统的安全性和鲁棒性。使用mount命令检查哪些

参数生效,这些参数包括:nosuid、logging、noatime、size=xxxm、ro。
Mount参数
OS版本
描 述
用 途
nosuid
2.x
关闭SUID程序及SUID设备
不允许存在SUID的/var、 /home或者数据磁盘分区及设备(建议使用chroot environments).。如

果/tmp分区
不在磁盘上,此参数无效。
logging
2.7或者更高版本
为分区记录transaction日志。可以大提高文件系统检查的速度,特别是针对大容量的磁盘。缺点

是需要耗费时间进行写log的操作。
/usr /opt /home分区
建议除根区(如果使用了Veritas的VxVM)和对磁盘写性能要求非常高的分区外,都使用此参数。
noatime
2.7或者更高版本
允许mount的文件系统,在每次访问文件时对文件节点号不做更新,这样可以显著提高某些服务,

如对大量小文件进行频繁IO操作的web cache或者新闻服务。
/var或者文件频繁存取的分区 (web缓存或news分区)。
size=100m
2.5.1 or later
允许/tmp分区只使用100MB的交换空间。这个值通常取交换的30%。
在mount /tmp时使用
ro
2.x
只读。将文件系统mount成为只读只能对文件系统做有限制的保护(因为攻击者一旦取得root权限

,他可以将文件系统重新mount成读写)。
可以缩短系统启动时,执行fsck的时间,提高性能的同时,可以避免管理员无意中的错误(如误

删除文件等)。
/usr及/opt分区最好mount成为只读方式,但是将/usr分区mount成为只读方式的情况下,通常需

要将/usr/local建立的另外的分区上。

在编辑vfstab文件时要特别小心,对/ 及/usr分区的错误改动可能会导致系统不能引导。如果出

现这种情况,使用安装光盘将以单用户模式引导后,mount上有错误的磁盘,更正vfstab文件后,

reboot使改动生效。
下面是vfstab文件的两个例子:
一个只有/及/var的服务器,操作系统是Solaris2.8
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c0t3d0s1 - - swap - no logging
/dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0 / ufs 1 no logging
/dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7 /var ufs 1 no logging,nosuid,noatime
swap - /tmp tmpfs - yes size=100m
有较多分区的服务器
fd - /dev/fd fd - no -
/proc - /proc proc - no -
swap - /tmp tmpfs - yes size=200m
/dev/dsk/c0t8d0s0 /dev/rdsk/c0t8d0s0 / ufs 1 no logging
/dev/dsk/c0t8d0s1 - - swap - no -
/dev/dsk/c0t8d0s4 /dev/rdsk/c0t8d0s4 /usr ufs 1 no logging
/dev/dsk/c0t8d0s6 /dev/rdsk/c0t8d0s6 /var ufs 1 no nosuid,noatime,logging
/dev/dsk/c0t8d0s5 /dev/rdsk/c0t8d0s5 /opt ufs 2 yes logging

5、在Solaris 8中安装Sunscreen EFS防火墙
安装本地防火墙对系统进行保护。
1. 在Solaris 8系统的iPlanet CD#2光盘上,带有Sunscreen EFS的限制版。也可以从Sun的主页

下载此版本。
2. 对于老版本的Solaris系统,可以使用Ipfilter作为本机防火墙。

Sunscreen EFS可以保护网络通信,下面使用命令行对防火墙规则的设置作简单介绍。
* 防火墙的安装:在最终用户模式安装Solaris8系统,安装防火墙时,如果提示没有安装

SUNWsprot,需要用Solaris2号光盘先行安装:
pkgadd -d /cdrom/sol_8_sparc_2/Solaris_8/Product SUNWsprot
再使用iPlanet CD#2光盘,启动Sunscreen安装工具:
/cdrom/cdrom0/SunScreen/screenInstaller
除了Naming services=DNS(不使用NIS)外,其它选项都使用缺省设置。
配置:设置简单的防火墙规则,找到正在运行的防火墙规则,显示缺省规则并对其进行编辑。
#cd /opt/SUNWicg/SunScreen/bin;
#./ssadm active
Active configuration:www default Initial.2
#./ssadm edit Initial
edit>list rule
1 "common""*""*"ALLOW
edit>list address
"*"RANGE 0.0.0.0 255.255.255.255
"le0.net"RANGE 176.17.17.0 176.17.17.255
"localhost"HOST
"smtp-server"HOST 1.1.1.1
"www_le0"GROUP{}{}
edit>list service common
"commom"GROUP"tcp all""udp all""syslog""dns""rpc all""nfs prog""icmp

all""rip""ftp""real audio""pmap udp all""pmap tcp all""rpc tcp

all""nis""archIE""traceroute""ping"
可以看出,缺省的规则让很少的服务通过。

我们假设在设置一台HTTPD服务器(在80端囗),并使用SSH进行管理。允许使用ping和

traceroute命令进行初步的错误检查。我们需要如下设置防火墙的规则:
#./ssadm edit Initial
edit>add service ssh SINGLE FORWARD "tcp" PORT 22
edit>add service myhttp GROUP ping traceroute ssh www
edit>replace rule 1 ALLOW myhttp"*""*"
edit>list rule
1 "myhttp""*""*"ALLOW
edit>save
edit>verify
Configuration verified successfully(not activated)
edit>quit
www#./ssadm activate Initial
Configuration activated successfully on www
* 在一台管理机上,允许使用ssh和smtp(用来email报警),可以对外使用ping/traceroute,进行

检查,为降低风险,只响应其它管理主机的ping/traceroute请求。允许通过HTTPS及使用dns查询


# cd /opt/SUNWicg/SunScreen/bin;
# ./ssadm edit Initial
edit> add address mgt_net RANGE 176.17.17.0 176.17.17.255
edit> add service mgt GROUP ping traceroute ssh
edit> add service https SINGLE FORWARD"tcp" PORT 443
edit> add service outgoing GROUP ping traceroute dns
edit>
edit> replace rule 1 ALLOW www "*" localhost
edit> replace rule 2 ALLOW https "*" localhost
edit> replace rule 3 ALLOW mgt mgt_net localhost
edit> replace rule 4 ALLOW outgoing localhost "*"
edit> replace rule 5 ALLOW smtp localhost mgt_net
edit>
edit> save
edit> verify
Configuration verified successfully (not activated).
# ./ssadm activate Initial
Configuration activated successfully on www.
检查网络连接,确定改动的规则已经生效。如果要恢复初始设置,将所有的规则删除后,加入下

面一行:
replace rule 1 ALLOW "common""*""*"

最后,关闭防火墙的远程图形管理功能,只使用"ssadm"命令行工具进行管理。
注释掉/etc/rc2.d/S63sunscreen文件中的下面一行:
$SS_LIBDIR/run_httpd start efshttpd
在/opt/SUNWicg/SunScreen/lib/ss_boot中,注释掉:
$SS_LIBDIR/ssadmserver star>/dev/console 2>&1

6、进一步增强系统的可靠性:路由、邮件、 解析及工具的设置
到此,系统已经进行了初步的加固,以root方式登录。
* 设置路由
* 对于缺省路由,将网关的IP地址添加到/etc/defaultrouter文件中。
* 对于静态路由,使用route命令创建/etc/init.d/static_routes文件及

/etc/rc2.d/S99static_routes符号连接
* 清空路由表,为特定网络指定路由,如:
route -f add net 129.97 `cat /etc/defaultrouter`
* 如果需要运行路由守护进程(不建议使用),要清楚其工作原理,否则它可能会导致你网络通信

的不正常。使用'-q'参数的“安静”模式(quiet mode),或者在使用ifconfig命令配置网络接囗

设备时,使用'private'参数,告诉网络接囗设备不要对外广播路由信息。运行“安静”模式,要

在/etc/yassp.conf文件中设置SUNSTARTUP=YES并确定没有设置缺省路由。
* 配置/etc/hosts文件,添加不想通过DNS解晰的服务器名。
* DNS客户端:(对于关键任务的主机不要设置)在/etc/resolv.conf文件中添加域名及DNS服务器

名,在/etc/nsswitch.conf文件中hosts行添加DNS条目。
* 环境的设置:在/.cshrc /.profile:设置aliases和变量(如VISUAL,EDITOR和PATH,路径的环境

变量中不要包括当前路径".")。
* 使用useradd工具在系统中添加新的用户。首次运行后,会产生/etc/sadm/defadduser缺省新加

用户设置。可以编辑此文件,对新增用户做缺省的设置。
* 邮件客户端的设置:如果不对外网外送邮件,则不需要配置mailhost alias(在/etc/hosts文

件中),如果不需要任何形式的邮件服务,删除/etc/lib/sendmail程序。否则:
* 编辑/etc/mail/aliases文件,至少将mailer-daemon、根及其它系统帐户指向其真实地址。
* 在/etc/hosts文件中加入带有IP地址的邮件服务器条目,alias用mailhost。
* 将完整的域名添加到/etc/hosts中,设置hostname.YOURDOMAIN.COM的alias。
* 在/etc/mail/sendmail.cf文件中作如下设置,确保所有的外发邮件通过邮件主机发送(前面两

行在Solaris8中无需设置):
Dj$w.YOURDOMAIN.COM.
DSmailhost
DRmailhost
Dhmailhost
O FallbackMXhost=mailhost
* 在root的cron中加入如下条目,将缓存的邮件在工作时间内每小时发送一次
0 6-22 * * 1-5 /usr/lib/sendmail -q
* 发送一封测试邮件,对配置进行检查
mailx -v -s test_email root
* Email服务器:设置Email服务器(运行SMTP服务),在这里不做详细介绍。

Reboot,查错
安装相应的工具及脚本,确保程序已经在其它主机上编辑测试通过。
* 将安全工具安装在/secure目录中,如下面会用到的:rotate_cron,rotate_log,wtrim.pl,

rdistd,Saveit,Weekly。然后将/secure目录模式设置为:
chmod 700 /secure;chown -R root /resure
* 在Solaris8系统的附件光盘上,如Software Companion光盘带有许多常用的工具,如PPP、

samba、wu-ftp(出于安全性考虑,避免使用)、Development/Libraries、Development/Tools、

X11应用、vim/eMacs、Windows管理器等。使用图形化的安装工具或者通过SSH和X11隧道登录到服

务器上,进入相应的目录,使用pkgadd命令进行安装。
* 安装其它的常用工具,如traceroute、top或者lsof(不要设置SUID位)。
* 安装perl,并建立/bin/perl符号链接(ln -s /usr/local/bin/perl /bin/perl)。
Solaris8系统已经内置了一个版本的perl,但最好删除它(pkgrm SUNWpl5u SUNWpl5p SUNWpl5m

),从Sunfreeware.com下载最新的版本进行安装(pkgadd -d perl-5.6.0-sol8.sparc-local)。

标签: