瑞星卡卡安全论坛技术交流区系统软件 【系统管理】使用Yassp工具包安装安全的Solaris系统系列教程

1   1  /  1  页   跳转

【系统管理】使用Yassp工具包安装安全的Solaris系统系列教程

【系统管理】使用Yassp工具包安装安全的Solaris系统系列教程

作者:东方


1、安装系统前的准备工作
                        2、系统的初始化安装
                        3、安装YASSP工具包
                        4、在/etc/vfsab文件中对mount文件系统加以限制
                        5、在Solaris 8中安装Sunscreen EFS防火墙
                        6、进一步增强系统的可靠性:路由、邮件、 解析及工具的设置
                        7、补丁
                        8、RPC
                        9、日志、Cron、权限
                        10、限制SUID类型的文件
                        11、安装完整性检查工具:如Tripwire
                        12、安装、检测并提高应用程序的可靠性
                        13、开始工作

                        1、安装系统前的准备工作
                        * 简化:建议在一台主机上只运行一至两种服务。使用多台服务器,而不要只用一台超级服务器

                        去完成所有的工作。这样便于应用的隔离,可靠性的提高,也易于排错及进行软/硬件地升级。切

                        记,只运行必要的程序。
                        * 硬件:考虑使用串囗终端安装系统。保证网络环境的可信以及封闭。
                        * 保证安全地下载软件:在一个封闭的或者没有对外路由的网络环境中,通过ftp与网络内部其它

                        主机传送文件。如果网络并不是完全封闭的,要在文件传输完成后,马上断开网络的连接,以减

                        小遭到攻击的机会。添加一个以/tmp为HOME目录的非特权用户专门用来在主机间传送文件。
                        * 清楚系统的用途、硬件的配置等。有时为了提高系统的可靠性可能会导致某些程序不能正常运

                        行,如CDE/OpenWindows,Disksuite及Legato运行都需要RPC的支持,但是在用作为防火墙的主机


                        上,要关闭RPC。
                        * 理解各种应用的工作方式非常重要(比如应用如何使用端囗、设备及文件),这样才可以判断哪

                        些方面需要加强及存在的风险。

                        2、系统的初始化安装
                        连接串囗终端,加电,按下Stop-A键使主机进入到OK提示符模式,使用boot cdrom -install命令


                        开始安装过程。
                        选择以最终用户包(end user bundle)或者核心包(core)模式进行安装,设置主机名,终端类型,

                        IP地址,所在时区等,不要开启任何的命名服务,如NIS或NFS。不要打开电源管理或者mount远程

                        文件系统。
                        注:对于Solaris 8系统,使用F4功能键可以对最终用户包内的软件进行定制。

                        分区注意的事项:
                        * 对于syslog、web、新闻、代理服务器或者防火墙过滤主机,要为其/var文件系统建立一个独立

                        的,较大磁盘空间的分区。将要存储大量数据的服务器,如web或ftp服务器,也应该使用独立的

                        分区存储其数据。
                        *
                        将/usr及/opt分区与根区分离,使得/usr及/opt分区可以使用只读(read-only)方式mount。

                        * 如果一定要使用Disksuite工具,设置RAID及磁盘镜像,需要为其保留5MB的磁盘空间。使用

                        Veritas的文件卷管理,还需要额外的两个分区。
                        * 分区实例:
                        2GB硬盘,不在本地记录日志,将在/opt下安装大量程序
                        200MB /(root+var),200MB swap,400MB /usr,1.2GB on /opt
                        2GB硬盘,为程序保留最大空间,/var分区独立(使得日志文件不会把根区占满)
                        1.6GB /(root+usr+opt),200MB swap,200MB /var
                        9GB硬盘,主机提供服务
                        200MB /,500MB swap,2GB /usr,5GB /opt,1GB /var

                        系统重启

                        为root设置一个不易破解的囗令(7到8位,包含数字、字母及标点符号)。安装过程将保留在

                        /var/sadm/install_data/install_log文件中。
                        以最终用户包模式安装时,需要手工安装帮助文件(man pages)。如果用核心包模式安装,为了使

                        用帮助文件,还需要安装SUNWlibc包:
                        cd /cdrom/cdrom0/s0/Solaris_2.6/Product;
                        pkgadd -d . SUNWman SUNWdtma SUNWjvman SUNWpmowm
                        SUNWolman SUNWxwman
                        cd /cdrom/cdrom0/s0/Solaris_2.7/Product;
                        pkgadd -d . SUNWman SUNWdtmaz SUNWdtma SUNWjvman
                        SUNWpmowm SUNWxwman
                        针对Solaris8系统,使用2号光盘安装标准帮助文件及java帮助
                        cd /cdrom/cdrom0/Solaris_*/Product;
                        pkgadd -d . SUNWman SUNWjvman SUNWj2man

                        此外,还需要安装一些常用的工具,如解压缩及其它shell。
                        pkgadd -d . SUNWgzip SUNWbash SUNWbzip SUNWtcsh SUNWzlib


                        升级索引,以便使用“man -k keyword”命令时,搜索相关的帮助:
                        /usr/lib/makewhatis /usr/man;
                        /usr/lib/makewhatis /usr/openwin/man;

                        使用核心包模式安装的用户,还需要安装其它常用的软件包,如:
                        Terminfo:SUNWter
                        Accounting:SUNWaccr SUNWaccu
                        NTP:SUNWntpr SUNWntpu
                        UCB tools:SUNWscpu
                        Man pages tools:SUNWlibC SUNWdoc。

                        下载并安装Sun的最新推荐安装补丁包到/opt/install目录:
                        2.6 SPARC 2.6_Recommended.tar.Z
                        7 SPARC 7_Recommended.zip
                        7 Intel 7_x86_Recommended.zip
                        8 SPARC 8_Recommended.zip
                        8 Intel 8_x86_Recommended.zip

                        * 安装补丁之前,阅读README文件并保存系统已经安装的补丁列表,解压缩补丁包文件。
                        cd /opt/install;
                        showrev -p > patches.before;
                        unzip -q 8_*Recommended.zip
                        注:如果只安装了核心包,showrev命令将不能使用,使用patchadd -p命令代替。
                        在Solaris7系统中使用patchadd命令,需要对命令做以下改动:
                        cd /usr/sbin;
                        mv patchadd patchadd-orig;
                        sed s/\\/xpg4// patchadd-orig > patchadd;
                        chown root:bin patchadd;
                        chmod 555 patchadd;

                        * 进入解压缩补丁包后产生的目录,使用下面两种方法执行安装角本文件:
                        a) 在新安装的系统中,使用带有nosave参数的安装命令,可以节省磁盘空间:
                        cd 8_*Recommended;./install_cluster -nosave
                        b) 在需要可能进行反安装补丁文件的系统中,使用如下命令进行补丁的安装,这时将在

                        /var/sadm/pathc目录下保留备份文件。补丁只可以逐个加以删除,系统没有提供

                        "deinstall_cluster"的命令。
                        ./install_cluster
                        * 检查实际安装了哪些补丁
                        cd ..;
                        showrev -p > patches.after;
                        diff patches.after patches.before;
                        * 查看安装日志文件,返回值8代表没有安装,返回值2表示补丁安装正常。
                        more /var/sadm/install_data/Solaris_*Recommended_log

                        重新启动系统,以root登录。

                        3、安装YASSP工具包
                        安装YASSP(Yet Another Solaris Security Package,目前的版本是Yassp
                        beta#15)加强Solaris

                        系统的安全性,它包含多个编译好的安全工具。
                        注:安装YASSP后,所有有改动过的文件将在/yassp.bk/Before_DATE目录中保留备份。

                        将YASSP安全工具的安装过程记录到文件中,提供日后查询:
                        script -a /yasspinstall.log
                        下载yassp.tar.gz文件,保存到/opt/install目录中,切断网络连接。
                        ifconfig hme0 down
                        解压缩软件包,产生yassp目录
                        gunzip < yassp.tar.gz | tar xf -
                        cd yassp; ls -l
                        Yassp包文件详细清单
                        drwxr-xr-x 2 7644 7001 512 Nov 20 06:54 RCS
                        -r-------- 1 7644 100 14482 Nov 20 06:54 README
                        -r--r--r-- 1 7644 100 8418 Nov 20 06:52 WhatIsNew
                        -rw-r--r-- 1 7644 7001 66 May 21 2000 admin
                        -rw-r--r-- 1 7644 100 61952 Nov 20 01:20 aubtocsin
                        lrwxrwxrwx 1 7644 100 9 Nov 22 10:13 aubtocsin_i386 ->
                        aubtocsin
                        lrwxrwxrwx 1 7644 100 9 Nov 22 10:13 aubtocsin_sparc ->
                        aubtocsin
                        -rw-r--r-- 1 7644 100 136192 Nov 20 06:54 gnugzip_i386
                        -rw-r--r-- 1 7644 100 147456 Nov 20 06:54 gnugzip_sparc
                        -rw-r--r-- 1 7644 100 903168 Nov 20 06:54 gnurcs_i386
                        -rw-r--r-- 1 7644 100 1021952 Nov 20 06:54 gnurcs_sparc
                        drwxr--r-- 3 7644 100 512 Nov 20 06:53 html_doc
                        -r-xr-xr-x 1 7644 100 5323 Nov 20 05:25 install.sh
                        -rw-r--r-- 1 7644 100 3180544 Nov 20 06:54 openssh_i386
                        -rw-r--r-- 1 7644 100 4121600 Nov 20 06:54 openssh_sparc

                        -rw-r--r-- 1 7644 100 26624 Nov 20 06:54 parcdaily
                        lrwxrwxrwx 1 7644 100 9 Nov 22 10:12 parcdaily_i386 ->
                        parcdaily
                        lrwxrwxrwx 1 7644 100 9 Nov 22 10:12 parcdaily_sparc ->
                        parcdaily
                        -rw-r--r-- 1 7644 100 231936 Nov 20 06:54 prftripw_i386
                        -rw-r--r-- 1 7644 100 293888 Nov 20 06:54 prftripw_sparc

最后编辑2006-06-22 16:23:33.107000000
分享到:
gototop
 

-rw-r--r-- 1 7644 100 1290240 Nov 20 06:54 secclean
                        lrwxrwxrwx 1 7644 100 8 Nov 22 10:12 secclean_i386 ->
                        secclean
                        lrwxrwxrwx 1 7644 100 8 Nov 22 10:12 secclean_sparc ->
                        secclean
                        -rw-r--r-- 1 7644 100 271360 Nov 20 06:54 wvtcpd_i386
                        -rw-r--r-- 1 7644 100 609792 Nov 20 06:54 wvtcpd_sparc
                        执行安装文件
                        ./install.sh
                        依据提示安装下列工具:SECclean GNUrcs GNUgzip PARCdaily
                        WVtcpd(包括rpcbind) PRFtripw

                        OPENssh
                        SECclean是一个脚本文件,它通过对文件权限的配置,tcp/ip的调整,关闭不必要的服务加

                        强系统的可靠性。

                        Yassp beta#15中的问题:
                        1. SSH:
                        * Yassp在Solaris7及以前版本的系统中不安装SSH,只在Solaris8中安装。
                        * Scp的服务器端需要如下设置:
                        chmod 755 /usr/local /opt/local
                        ln -s /usr/local/bin/scp /usr/bin/scp
                        2. Solaris 8 10/00版本的系统中,有一个新的守护进程'picld',是一种对客户端发布特定平台

                        信息的机制,picld进程负责维护及控制客户及内插模块对PICL(Platform Information
                        and

                        Control Library)信息的访问。
                        关闭此进程
                        mv /etc/rcS.d/S95picld /etc/rcS.d/.S95picld
                        mv /etc/init.d/picld /etc/init.d/.picld
                        3. Tocsin是Yassp内含的入侵检测工具,用来侦听网络数据包,缺省情况下不安装。
                        pkgadd -d aubtocsin

                        配置YASSP
                        安装完YASSP后,首先浏览一下/etc/yassp.conf配置文件,带有注释,很容易理解。查看

                        yassp.conf及yassp的man pages帮助。一般情况下,除了SSH,不需要改动什么。
                        1. 帐号
                        * 守护进程及用户(DEF_UMASK)的缺省umask值都被设置成为077,禁止组及全局访问。在某些情

                        况下,可能需要将umask值改为027,使组可读。
                        *
                        cleanup_passwd脚本会关闭/usr/passwd文件中的用户帐号,但是不会删除他们。Yassp.conf文


                        件中的USERDENIED变量包含缺省的列表。加入非标准的应用帐号。
                        * 如果确定删除某些帐号,将其加入yassp.conf文件中的USEDELETED变量项中,并从新执行

                        cleanup_passwd。
                        注:此操作可能会产生无主文件或导致错误,如删除uucp将使tip命令不能使用。
                        *
                        ROOTALLOWED变量包含所有UID为0的帐号列表,cleanup_passwd会关闭所有列表之外的UID为0的


                        帐号。
                        2. Cron:
                        * 非root用户需要使用at/cron命令时,需要编辑/etc/cron.d目录下的allow/deny文件。

                        * root的cron列表将会被替换。如果在安装yassp之前,你已经在cron中添加了条目,这些条目需

                        要重新加入,旧的cron列表备份于/yassp.bk目录中。
                        * yassp的daily脚本用来整理日志记录,在cron中将其注释掉。
                        3. SSH:Yassp将同时安装SSH的客户及服务器端
                        * 最新版本的SSH可以被“tcp
                        wrapper"保护,因此使用前,要在/etc/hosts.allow文件中放开,

                        缺省是全部关闭。
                        * SSH服务对所有主机开放,编辑/etc/hosts.allow加入
                        sshd : ALL
                        * 允许X11转发使用SSH,编辑/etc/hosts.allow加入
                        sshdfwd-X11 : LOCAL
                        * 提示:在hosts.allow/deny,SSH的规则中不要使用反向finger查询。
                        * 在SSH中,通常使用'scp'传送文件。' sftp'使用于新的SSH2中,如果需要,在

                        /etc/sshd_config中打开它,当然,由于这是一项新的功能,因此有可能会存在问题。Subsystem

                        sftp /opt/local/libexec/sftp-server
                        * 不接受RSA用户认识,而只允许使用囗令。
                        RSAAuthentication no
                        *
                        检查服务器(/etc/sshd_config)及客户端(/etc/ssh_config)其它的设置,如设置只允许特定


                        的用户使用SSH,禁止用守护进程的帐号使用SSH。
                        4. Syslog:在Solaris8系统中,Yassp会以‘-t'参数启动syslog,因此它将不接受其它主机


                        syslog连接。因此,如果你想使用一台中心log服务器,需要设置
                        SYSLOGFLAGS=""
                        5.
                        如果需要启动INETD服务,设置RUNINETD值为YES,并在/etc/inetd.conf中开放相应的服务。


                        缺省情况下,yassp会关闭所有的服务。如果确实需要,使用tcp wrapper,编辑

                        /etc/hosts.allow和/etc/hosts.deny文件中对访问服务进行限制。
                        6. nscd守护进程
                        *
                        不启动nscd进程,有些应用,如Netscape的http代理服务将不能工作,设置NETSCAPE或者NSCD

                        变量可以设置激活nscd进程。
                        *
                        关闭nscd进程将加重nameserver的负载,因此,通过调整resolv.conf文件中nameserver的顺序


                        ,可以达到平衡负载的目的。
                        7. 编辑登录的标语文件,对非法的用户访问提出警告。对于telnet和SSH,登录前的文件为

                        /etc/issue,登录后的文件是/etc/motd
                        8. Yassp更改/etc/system文件内的参数对Solaris系统进行调整。
                        *
                        Yassp增加对文件描述的字节限制,rlim_fd_max=1024、rlim_fd_cur=256。有些应用也许会需


                        要更大的值,根据需要改动。
                        *
                        将小于8的soft-limit增加到256对一些应用会有帮助。Hard-limit不需要改变,仍为1024。系

                        统管理员需要知道哪些应用需要更多的hard-limit值,并对/etc/system做相应的改动。
                        *
                        设置sys:coredumpsize=0从而不产生corefiles。当然有时候,管理员需要corefiles进行分析


                        ,但是也要注意corefiles可能会泄露敏感的信息。
                        * 其它的设置:
                        *Increase SVR4 style ptys
                        set pt_cnt=128
                        *Attempt to prevent and log stack-smashing attacks
                        set noexec_user_stack=1
                        set noexec_user_stack_log=1
                        *enable advanced memory paging technique
                        *NOT NEEDED ON Solaris 8:set priority_paging=1

                        set tcp:tcp_conn_hash_size=16348
                        *If the NFS_PORTMON variable is set,then clients are
                        required to use
                        *privileged ports(ports
                        Set nfssrv:nfs_portmon=1
                        *max users processes in here too
                        set maxuprc=150

                        关闭记录动作,删除yassp安装目录
                        #exit
                        Script done,file is /yasspinstall.log
                        #cd; rm -rf /opt/install/yassp

                        重新启动,使改动生效
                        #reboot

                        重新启动后,检查控制台上的错误信息,如果有,更正之。以root登录,检查网络联接情况,应

                        该只有ssh和syslog(Solaris7及以前版本)在监听:
                        netstat -a

                        UDP: IPv4
                        Local Address Remote Address State
                        -------------------- -------------------- -------
                        *.* Unbound
                        TCP: IPv4
                        Local Address Remote Address Swind Send-Q Rwind Recv-Q
                        State
                        -------------------- -------------------- ----- ------
                        ----- ------ -------
                        *.* *.* 0 0 24576 0 IDLE
                        *.ssh *.* 0 0 32768 0 LISTEN
                        *.* *.* 0 0 32768 0 IDLE
gototop
 


使用Yassp工具包安装安全的Solaris系统 (二)



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,进行
gototop
 

检查,为降低风险,只响应其它管理主机的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)。
gototop
 


使用Yassp工具包安装安全的Solaris系统 三



7、补丁
                        系统在安装时会自动安装推荐补丁包,但是它并不包含所有的安全补丁。定期检查最新的补丁,

                        安装了最新安全补丁的系统要比没有安装的系统可靠的多。
                        补丁通常有标准补丁(Standard patches)、推荐补丁(Recommended
                        patches)、安全补丁(

                        Security patches)、2000年补丁(Y2K patches琾atch
                        clusters是以上补丁的集成包。单点

                        补丁(Point patches)是针对特定问题的补丁。

                        通过下列方法,了解已知的漏洞及相应的补丁程序:
                        1. 订阅相关组织及公司(如CERT/First、SUN、Bugtraq)的邮件列表。
                        2. 订阅有关漏洞及补丁的邮件列表,如Security Portal(Solaris Digest)、

                        SecurityFocus(Sunr的部分)或者SANS。
                        3. 定期使用工具,检查服务器上安装的补丁是否与Sun发布的最新补丁列表相一致。
                        4. 一至两月检查一次Sun推荐的补丁包,需要注意的是安装推荐补丁包时,如果对内核打补丁可

                        能会导致一些应用的不正常。
                        5. 某些第三方的应用的补丁也需要加以关注。

                        注:安装补丁可能会改动Yassp的配置,因此在安装完补丁重启系统后,要仔细检查是否启动了不

                        需要的进程。

                        针对补丁的工具
                        * GetApplyPatch和CheckPatches是两个管理Solaris补丁的Bshell的脚本工具。
                        1.CheckPatches使用showrev命令查看已经安装的补丁,并与Solaris的补丁报告相比较,列出需


                        要安装的推荐及安全补丁。补丁报告SolarisX.PatchReport通常在当前目录下,也可以使用-f参

                        数通过FTP下载最新的补丁报告
                        >./CheckPatches -f
                        2.GetApplyPatch:用来获得并安装最新的补丁,使用补丁号码作为执行脚本时的参数。运行时,

                        会提示是否下载,显示补丁的README文件,安装补丁后,删除安装目录。使用'-b'参数以"batch

                        mode"运行,则不做提示。
                        >./GetApplyPatch 108875-07
                        CheckPatches.cron是一个自动运行的脚本,并将结果mail给管理员。
                        3.同时使用这两个脚本文件,获得需要的补丁并进行安装。
                        >./CheckPatches | ./GetApplyPatch
                        GetApplyPatch.cron可以用来自动执行,取得补丁并进行安装,但是关键任务的服务器上不推荐

                        使用它。
                        4.其它的特点:
                        * 带有man帮助文件
                        * 支持Solaris Intel及Sparc,通过测试
                        * 可以设置ftp代理
                        * CheckPatches可以忽略无需安装的补丁。比如,在Solaris8
                        x86系统中,运行CheckPatches后

                        ,提示需要下面的补丁:
                        109897-03 SunOS 5.8_x86: USB patch
                        109952-01 SunOS 5.8_x86: jserver buffer overflow
                        110417-02 SunOS 5.8_x86: ATOK12 patch
                        对于这些补丁,我们并不想安装。创建Solaris8_x86.PatchReport.Except,在文件中加入上面三


                        行,在次运行CheckPatches脚本时会将它们忽略。
                        * 也可以对CheckPatches的命令输出做过滤,如:
                        ./CheckPatches | egrep -v "109897|109952|110417"
                        *
                        Sunsolve提供的Patchdiag工具,与最新的Patchdiag.xref一起,可以检查系统缺少哪些补丁,


                        然后下载并安装这些补丁。
                        * 使用SecurityFocus的vulnerability calculator工具,运行下面的命令
                        (http://securityfocus.com/focus/sun/form.html)
                        >showrev -p |cut -f2 -d' ' | xargs
                        将结果粘贴到窗囗中,然后选择操作系统。在得出结果的中选择与自己主机上的应用相关的内容

                        进行修补。
                        * FastPatch可以用来替代patchadd命令,它的执行速度更快。
                        * Patchreport是另外一个用perl语言编写的非常全面的补丁检查工具。

                        8、RPC
                        在关键任务主机,避免使用RPC服务。RPC使用动态分配的端囗及非标准的存取控制方法。但是,

                        确有一些应用需要使用RPC,如CDE、Open Windows、Disksuite及Legato
                        Networker。

                        如何提高Disksuite的安全性
                        Disksuite是系统内置的工具,用来做磁盘镜象及设置RAID。它需要RPC的支持(在inetd中运行的

                        rpc.metamhd和rpc.metad)。
                        1. 尽量不运行Disksuite
                        * 硬件RAID的好处在于不需要特殊的软件支持。这对于对安全性要求较高的系统十分有利。而且

                        当出现问题时,你会发现Disksuite并不是太容易使用的。
                        * 对于象是系统盘等,数据并不会频繁变动的系统盘,作镜像(cold mirroring)就足够了,使用

                        脚本mirror_boot.sh可以完成此项工作。
                        2. 运行Disksuite,但是停止RPC服务。停止inetd.conf中的'metad'服务会引起以下结果:

                        * 'metatool'将不会工作,但是命令行工具还可以运行。为了应付系统盘的灾难性错误,最好了

                        解这些命令行工具。
                        * Disksets-系统间共享的metadevices将不能使用。
                        3. 如果使用Disksuite和RPC,使用Wietse Venema的RPCBIND。

                        * Solaris8系统自带的Sunscreen EFS Lite
                        Firewall可以用来对rpc服务的存取进行限制。
                        * IPfilter也可以用来做限制RPC服务访问的本地防火墙。
                        * IPfilter可以在8以前的老版本的Solaris上运行,并且是免费的。
                        * It's doesn't have an RPC state based engine though(so
                        it can't filter on RPC

                        program names or allow RPC to specific destinations)。
                        * But it can be used to allow all localhost RPC
                        traffic(enough for some RPC

                        applications such as Disksuite or CDE)and deny all
                        remote traffice except,say,HTTP or

                        whatever service is provided to remote hosts。
                        * 使用Wietse Venema的rpcbind(包含在Yassp的tarball里),可以提供类似tcp
                        wrapper的访问控

                        制和日志记录。Rpcbind是一种“目录”服务用来定位某一种服务(通过RPC名或者RPC号)。因为

                        它并不是连接服务的中介,因此它并不能真正为RPC程序提供访问控制。用端囗扫描器可以检测激

                        活的RPC服务,除非内核被定制成过滤这些连接,否则并不能防止对服务的访问。

                        9、日志、Cron、许可
                        配置日志及pruning:
                        * Syslog日志:Yassp使用修改过的/etc/syslog.conf配置,开启了更多的日志记录保存在

                        /var/adm/messages中。同时也安装了一个可选的/etc/syslog.conf.server,是为loghosts设计


                        的并将不同的服务存在分开的log文件中。
                        * Yassp关闭了root帐号cron中有关log的条目。添加了运行'daily'脚本。





                        配置Syslog
                        Syslog客户端:在/etc/hosts文件中指定log服务器。
                        * 测试log服务器是否正常
                        logger -p auth.warn "test of syslog",检查是否记录在log服务器里。
                        * 在log服务器及本地同时记录日志,取消/etc/syslog.conf中的下一行注释:
                        *.err;auth.info;kern.debug /var/adm/messages
                        * 如果日志记录不能正常工作,可以参照syslog.conf中的例子及提示。
                        Syslog服务器(loghost):
                        * log服务器需要一块大的磁盘用来保存日志文件。
                        * 在Solaris8系统中,Yassp将以"-t"参数启动syslog,因此它将不接受其它主机的记录日志的请

                        求。如果想要设置集中的log服务器,需要在/etc/yassp.conf中设置SYSLOGFLAGS=""。
                        *
                        Yassp还安装了一个/etc/syslog.conf.server配置文件,是针对log服务器并将不同的服务产生
gototop
 

的日志存于/var/log目录下不同的文件中。用它覆盖配置文件并重新启动syslog:
                        mv /etc/syslog.conf /etc/syslog.conf.client
                        cp /etc/syslog.conf.server /etc/syslog.conf
                        kill -l `cat /etc/syslog.pid`
                        * 使用rotate_log工具对日志进行管理和压缩,在root的cron中加入:
                        ##Prune syslog logs weekly,keeping the last 6 months or
                        so:
                        55 23 * * 6 /secure/rotate_log -n 40 alertlog
                        55 23 * * 6 /secure/rotate_log -n 40 authlog
                        55 23 * * 6 /secure/rotate_log -n 40 cronlog
                        55 23 * * 6 /secure/rotate_log -n 40 daemonlog
                        55 23 * * 6 /secure/rotate_log -n 40 kernlog
                        55 23 * * 6 /secure/rotate_log -n 40 local0log
                        55 23 * * 6 /secure/rotate_log -n 40 local2log
                        55 23 * * 6 /secure/rotate_log -n 40 local5log
                        55 23 * * 6 /secure/rotate_log -n 40 newslog
                        55 23 * * 6 /secure/rotate_log -n 40 userlog
                        55 23 * * 6 /secure/rotate_log -n 40 lprlog
                        55 23 * * 6 /secure/rotate_log -n 40 maillogd
                        在root的cron中加入每年清理日志文件的条目
                        ##Empty login/logout records at year end
                        0 0 31 12 * /secure/wtrim.pl wtmp 20
                        0 0 31 12 * /secure/wtrim.pl wtmpx 20
                        #
                        #Solaris 2.x logs
                        0 4 * * 6 /secure/totate_log -L /var/adm -n 30 loginlog
                        0 4 * * 6 /secure/rotate_log -L /var/adm -n 30 sulog
                        0 4 * * 6 /secure/rotate_log -L /var/adm -n 2 vold.log
                        0 4 * * 6 /secure/rotate_cron

                        其它的需要在root的cron设置条目:
                        每天与可靠的时间源进行时间同步,使用rdate(NTP会更加精确,但会带来相应的风险)
                        ##Synchronise the time:
                        0 * * * * /usr/bin/rdate YOURTIMEHOST >/dev/null 2>&1
                        安装检查重要进程是否运行的脚本,monitor_processes.pl并在root的cron中加入:
                        ##Check that important processes are running during
                        office hours:
                        ##[If you run 7x24,modify accordingly]
                        0,30 8-19 * *1-5 /secure/monitor_processes.pl sshd httpd


                        每次安装新的程序后,最好在文件中记录下来,如:
                        cat >/etc/mods<
                        15.10.00 james New install of Solaris8 and tools
                        EOF

                        10、限制SUID文件
                        设置SUID位的文件,允许用户以文件所有者的权限执行此程序。常用来让普通用户执行只有root

                        能运行的程序,但是存在缓存溢出的风险。
                        * Solaris有很多“SUID root”的执行程序,每一个都会带来风险,因此尽可能多的停止SUID程

                        序。
                        * 阅读SUID的参考文件

                        发现系统中的SUID文件
                        使用find命令:
                        find / -perm -u+s -ls
                        find / -perm -g+s -ls 查找GUID程序

                        如何处理SUID文件:
                        * 直接删除
                        * 关闭程序(chmod 000 FILENAME)
                        * 移去SUID位(chmod ug-s FILENAME)
                        * 对文件回以组限制(首先移去所有人的权限 chmod o-rwx),允许组访问(chgrp MYGROUP

                        MYFILE)。

                        哪些SUID文件需要回以限制
                        * 在一些具有用户帐号的敏感服务器上或者关键的进程由非root用户运行,应尽可能地减少SUID

                        文件。
                        * 对于可靠性要求非常高的系统,建议除"pt_chmod","utmp_update"和"su"以外,其余全停。

                        * Reg Quinton解释了每一个SolarisSUID程序,并给出配置建议。
                        * 例子:
                        * 象uucp这样的工具,基本无用,可以删除
                        pkgrm SUNWbnuu
                        chmod ug-s /usr/bin/cu /usr/bin/uu* /usr/lib/uucp/*
                        * 另一个没有用处的工具包是kcms(Kodak Color Management System)
                        pkgrm SUNWkcspf SUNWcspx SUNWkcspg SUNWkcsrt
                        chmod ug-s /usr/openwin/bin/kcms*
                        * 如果不使用打印机
                        chmod ug-s /usr/lib/lp/bin/netpr /usr/sbin/lpmove
                        /usr/bin/lp /usr/bin/lpset

                        /usr/bin/lpstat /usr/bin/cancel /etc/lp/alerts/printer
                        * 只允许root使用r命令
                        chmod ug-s /usr/bin/rcp /usr/bin/rlogin /usr/bin/rsh
                        * 只允许root对网络进行侦听及列出进程列表
                        chmod ug-s /usr/sbin/snoop /usr/sbin/devinfo /bin/rdist
                        /usr/bin/netstat

                        /usr/local/bin/top /usr/sbin/traceroute
                        /usr/local/bin/lsof /usr/bin/*/ps

                        /usr/ucb/*/ps /usr/sbin/*/whodo /usr/bin/*/uptime
                        /usr/bin/*/w
                        * 只允许root做备份和恢复
                        chmod ug-s /usr/lib/fs/ufs/ufsdump
                        /ufs/ib/fs/ufs/ufsrestore
                        * 假设不使用YP、NIS+
                        chmod ug-s /usr/bin/chkey
                        * 只允许root使用cron和at
                        chmod ug-s /usr/bin/at /usr/bin/atq /usr/bin/atrm
                        /usr/bin/crontab
                        * 只允许root管理系统
                        chmod ug-s /usr/bin/admintool /usr/lib/fs/ufs/quota
                        /usr/bin/tip /usr/bin/fdformat

                        /usr/bin/eject /usr/bin/volcheck /usr/bin/volrmmount
                        /usr/bin/rmformat
                        * 不使用Openwindows和CDE
                        chmod ug-s /usr/dt/bin/* /usr/openwin/*/*
                        * Sendmail:不做email服务器的主机不需要sendmail设置SUID位
                        chmod u-s /usr/lib/sendmail
                        * 进行以上的操作后,以“最终用户”模式安装的Solaris8系统中,SUID文件列表如下:
                        usr/lib/pt_chmod /usr/lib/utmp_update /usr/bin/login
                        /usr/bin/newgrp /usr/bin/newtask

                        /usr/bin/pfexec /usr/bin/su /usr/bin/passwd
                        /usr/sbin/allocate /usr/sbin/mkdevalloc

                        /usr/sbin/mkdevmaps /usr/sbin/ping /usr/sbin/sacadm
                        /usr/sbin/deallocate

                        /usr/sbin/list_devices /usr/sbin/pmconfig
                        /opt/local/bin/ssh /usr/bin/yppasswd

                        /usr/bin/nispasswd are also SUID, but they are links to
                        /usr/bin/passwd.
                        * 在package数据库中仍然保留有末被改变的SUID文件
                        find / -perm -u+s -exec pkgchk -l -p {} \; |more
                        * 列出所有的SUID文件及属于哪一个包
                        find / -perm -u+s -exec pkgchk -l -p {} \; | more
gototop
 


使用Yassp工具包安装安全的Solaris系统 四




11、安装完整性检测工具:如Tripwire
                        应该经常对系统中文件的完整性进行检查,以确保他们没有被恶意的改变。Solaris提供了

                        "pkgchk -n"命令将安装的文件大小、权限及校验与package数据库进行比较。但是检验是可以会

                        欺骗的,数据库也可能会被更改。因此,真正需要的是采用安全的hashing算法的文件完整性检查

                        工具。
                        Yassp将在/secure/tripwire中安装tripwire。它采用多种hashing算法。
                        系统安装到这个阶段,我们建议对新配置的系统及文件创建快照(snapshot),初始化tripwire的

                        数据库,定期进行检查变动情况。如果有可能的话,将主数据库单独保存。
                        文件完整性检查的可选功能
                        * Tripwire:有免费和商业两种版本
                        * 建议在中心服务器上使用商业版本,更加稳定,在其它主机上使用免费的版本。
                        * PGP可用,PGP can also be used,by signing files to be
                        protected(creating lots of

                        signature files),then writing a script to check the
                        validity of signatures.This will

                        not catch permission,link,inode or modify date changes
                        though.
                        * MD5 signatures(单向hash算法)可能同样使用,但是MD5签名列表不要保存在被监视的主机上,

                        除非已经加密或者PGP signed。

                        使用免费Tripwirer例子:
                        *
                        Yassp安装/secure/tripwire/tripwire及缺少的配置tw.config,也可以获得源代码后自行编译


                        。
                        * 如果需要,编辑/secure/tripwire/tw.config,符合自己要求。
                        * 接下来,做系统的初始状态。
                        cd /secure/tripwire; ./tripwire -i 2 -initialise -c
                        tw.config建立一个新的文件数据库

                        。可能会有一些文件无法找到的报错信息,忽略它们。把新产生的数据库(在

                        /secure/tripwire/database)复制到软盘上。在将来如果怀疑系统遭受攻击或者改动时,可以使

                        用此文件。
                        * 可以在cron中设置每天进行检查,也可以手工进行
                        ./tripwire -i 2 -c tw.config
                        * 告诉tripwire,文件及目录的改变正常
                        tripwire -update [/file1 /file2 /patch3.....]
                        * improvements:
                        * tripwire数据库如果保存在同一主机上,应压缩并加密,或者用强加密工具(如PGP)对其进行

                        sign。
                        * 从一台信任主机上检查其它系统,复制tripwire及其数据库,通过SSH远程运行它,检查完后,

                        删除数据库文件。
                        * 这样使得攻击者难于觉察系统采用了tripwire进行监控。
                        * 阅读脚本trip_host.sh,过滤掉“无文件及目录”报错。它必须从‘master'主机上运行,对目

                        标机有SSH信任关系。

                        第一次运行
                        /secure/tripwire/trip_host.sh -init HOST
                        以后每次运行
                        /sevure/tripwire/trip_host.sh -check HOST

                        将database文件妥善保存。

                        12、安装、测试、加固应用程序
                        特定的应用,如FTP、DNS、Email等将在其它文章中论述。

                        13、开始使用
                        准备使用
                        1.如果不再需要使用CD-ROM,在/etc/yassp.conf中关闭volume
                        manager。如果在今后需要安装

                        CD,手工启动vold进行新设备的检测:
                        drvconfig;disks;vold &; df -k
                        2.如果在安装调试的过程当中,必须将/opt及/usr分区安装成为read-write,那么此时,将它们

                        mount成为read-only。
                        3.重新做tripwire的初始化。
                        4.将系统备份到两盘磁带上,one offsite。
                        5.使用扫描器扫描系统,确保只有需要的服务开启。
                        6. 请其他人做测试,避免遗漏。
                        7. 详细检查-什么在工作?什么被禁止?检查控制台/log的内容,系统是否如希望那样工作?经

                        常检查日志记录。

                        日常维护
                        * 使用Sun的Patchdiag进行补丁的检查,需要就进行升级。对于内核的补丁,要在别的机器上先

                        进行测试。
                        * 检查所有的错误日志及异常行为:syslog(/var/adm/messages或

                        /var/log/*log),/var/cron/log,last,/var/adm/sulog,/var/adm/loginlog,application/server


                        日志记录。
                        * 编写脚本,报告关键进程是否正常,关键的系统是否可以ping通。
                        * 运行tripwire。
                        * 定期查看最新的漏洞及风险报告。


gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT