电脑技术学习

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

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

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

Security;patches)、2000年补丁(Y2K;patches),patch;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服务器并将不同的服务产生;

的日志存于/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;

标签: