📄 330.html
字号:
<STYLE type=text/css>
<!--
body,td { font-size:9pt;}
hr { color: #000000; height: 1px}
-->
</STYLE>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD><TITLE>精选文章 >> solaris 专栏 >> Solaris安全手册</title>
</head>
<body >
<p><IMG SRC="../image/jsp001_middle_logo.gif" WIDTH="180" HEIGHT="60" BORDER=0 ALT=""></p>
<table width=100% bgcolor="#cccccc" align=center cellpadding="2" cellspacing="0" border=1 bordercolorlight="#000000" bordercolordark="#FFFFFF">
<tr bgcolor="#EFF8FF"><td>
<a href=http://www.jsp001.com/list_thread.php?int_attribute=2>精选文章</a>
>> <a href=http://www.jsp001.com/list_thread.php?forumid=39&int_attribute=2>solaris 专栏</a>
>> Solaris安全手册 [<a href=http://www.jsp001.com/forum/showthread.php?goto=newpost&threadid=330>查看别人的评论</a>]<br>
<hr><p>由 fei 发布于: 2001-02-09 15:33</p><p> </p><p>1,Preparation <br>2,Initial OS installation <br>3,Stripping/configuring OS: 1st pass <br>4,Connect to test network <br>5,Installing tools & sysadmin software <br>6,Stripping/configuring OS: 2nd pass <br>7,Create Tripwire image, backup, test <br>8,Install, test, harden applications. <br>9,Install on live network, test <br><br>1. Preparation<br>最小限度保证安全的方法是只在主机上运行一个或两个服务。使用一个机器比<br>只使用一个拥有所有权利的机器安全的多,因为这样可以隔离,方便查找问题所<br>在。总之:在你的机器上运行你一些最必要的服务。<br>考虑拆除键盘,屏幕,这样可以避免使用X11和知道命令行所示,在一个隔<br>离的信任的网络段中进行测试。<br>明确你的系统和硬件配置能产生什么样的结果,如在安装SUN的Disksuite时要考虑<br>你是否需要RPC服务,因为DISKSUITE必须使用RPC服务。<br>明确各种应用程序是怎样工作的如:使用什么端口和文件.<br>2,初始化安装操作系统。<br>连接串口控制台,开机,当出现OK提示时发送Stop-A信息(~#,~%b,或者F5,主要取<br>决于你使用tip,cu或者vt100终端),然后开始安装过程-<br>"boot cdrom - install"<br>使用最小安装 end user bundle(除非你要额外的server/developer工具),设置<br>主机名,终端,IP参数,时区等等,不要激活NIS或者NFS及不要激活电源管理。<br>选择手工划分分区:把/usr和/opt和ROOT分离开来以便这些分区可以以只读方式<br>挂(mount)起来。考虑把大的/var文件系统和拥有较多的数据量如(web,ftp)划分<br>为独立的分区。<br>如果硬盘是2GB建议200MB / (+var), 200MB swap, 600MB /usr及 1GB 给 /opt<br>如果硬盘是2GB建议300MB / (+var+opt), 200MB swap, 500MB /usr<br>给ROOT设置一个7到8字符大小写结合等比较强壮的密码,再重启动。<br>接着安全由SUN的安全补丁。一般的在CD上就包含这些安全补丁包。重启动及作为<br>ROOT重启动后,你可以使用showrev -p查看补丁列表。<br>3,配置操作系统<br>磁盘共享(mount):为了减少木马和不授权的修改,在/etc/vfstab,在mount /时请<br>使用"remount,nosuid"选项;在/var上请带上"nosuid"选项;在/tmp后加上<br>"size=100m,nosuid"选项(允许/tmp只能使用100M空间及不允许执行SUID程序);<br>如果软盘不需要的话再把"/dev/fd"行注释掉。<br>(下面的命令假定你使用的是c-shell)<br>使NFS无效:<br>rm /etc/rc2.d/{S73nfs.client,K28nfs.server} /etc/rc3.d/S15nfs.server /etc/dfs/dfstab<br>使Sendmail守护程序无效,虽然sendmail不是作为一个守护程序来运行的,但两进制<br>程序是依然存在的,EMAIL还可以通过它了发送(但不能接受)。设定只要一个主机<br>来接受EMAIL,另必须使用smap或其他等同命令来把sendmail危险程度降低到最底。<br>rm /etc/rc2.d/S88sendmail<br>再在cron行中增加处理邮件队列的命令:<br>0 * * * * /usr/lib/sendmail -q <br>在关闭一些其他的服务:<br>rm /etc/rc2.d/{S74autofs,S30sysid.net,S71sysid.sys,S72autoinstall}<br>rm /etc/rc2.d/{S93cacheos.finish,S73cachefs.daemon,S80PRESERVE}<br>rm /etc/rc2.d/{S85power,K07dmi}<br>rm /etc/rc3.d/S77dmi<br>If you have server/developer packages:<br>rm /etc/rc2.d/{S47asppp,S89bdconfig,S70uucp}<br>使RPC无效:这一般来说是建议关闭此功能的,但一些程序如DISKSUITE会<br>开启RPC服务,所以一般建议不使用DISKSUITE工具。如果你不想使RPC无效,则<br>一定要使用信息包过滤器。<br>rm /etc/rc2.d/S71rpc<br>使打印服务无效(除非有一个本地打印机存在):<br>rm /etc/rc2.d/{S80lp,S80spc}<br>使naming Services Caching Daemon(名字服务缓冲守护程序)服务无效:<br>mv /etc/rc2.d/S76nscd /etc/rc2.d/.S76nscd<br>使CDE程序无效(除非你坚持要使用图形控制台):<br>rm /etc/rc2.d/S99dtlogin<br>使NTP-NETWORK TIME PROTOCOL无效(NTP会增加带宽和不安全的因素,建议使用<br>rdate到一台使用NTP的机器来获得精确时间):<br>rm /etc/rc2.d/S74xntpd<br>使SNMP无效:<br>rm /etc/rc2.d/K07snmpdx /etc/rc3.d/S76snmpdx<br>在Inetinit中是IP forwarding和sourec routing(源路)由无效(假如有超过一个<br>网络接口的话)。在/etc/init.d/inetinit中增加下面所示设置:<br>ndd -set /dev/ip ip_forward_directed_broadcasts 0<br>ndd -set /dev/ip ip_forward_src_routed 0<br>ndd -set /dev/ip ip_forwarding 0<br>根据RFC1948建议在/etc/default/inetinit中增加如下的生成初始化序列号设置<br>来防止TCP序列号预测攻击(ip欺骗):<br>TCP_STRONG_ISS=2<br>在/etc/system中增加如下设置来防止某些缓冲溢出攻击。这些保护是那些需在<br>堆栈中执行的攻击方式。但需要硬件的支持(只在sun4u/sun4d/sun4m系统中有效):<br>set noexec_user_stack=1 <br>set noexec_user_stack_log=1<br>使用默认路由:在/etc/defaultrouter中增加IP地址,或使用"route"在<br>/etc/rc2.d/S99static_routes中建立启动文件。为了使动态路由无效:<br>touch /etc/notrouter<br>为了使多路广播(multicasting)无效请在/etc/init.d/inetsvc中注解掉<br>"route add 224.0.0.0"周围的几行。<br>为了记录INETD连接的所有信息,在inetd低端的启动行中增加"-t"参数,<br>即:: /usr/sbin/inetd -s -t <br>在/etc/hosts中配置一些你想取舍的主机(一些你不想通过DNS解析的)。<br>/etc/inetd.conf:<br>先使所有服务无效;<br>配置你真正需要的服务,但必须使用FWTK netacl或tcp wrappers来允许最小<br>限度的IP地址访问和各种记录<br>4,连接并测试网络<br>系统通过上面的安全剥离和筛选,你必须肯定系统能正常工作,把它连接到一个<br>安全隔离的网络。重起并以ROOT身份登录控制台,检查控制台启动时的错误信息<br>并根据需要进行修改。<br>5,安装系统管理工具软件<br>这部分将安装标准的工具和实用程序。最重要的是SSH,这些工具必须在其他机器<br>上编译和精心测试过的。<br>环境:<br>DNS客户端:在/etc/resolv.conf中增加域名和DNS服务;在/etc/nsswitch.conf<br>中增加DNS入口的主机。<br>EMAIL:如果主机不需要在子网外发送EMAIL,就不需要使用mailhost的别名。否则<br>的话必须编辑/etc/mail/aliases,在/etc/hosts中设置mailhost,在<br>/etc/mail/sendmail.cf取消Dj行的注释并把它设置为Dj$w.YOURDOMAIN.COM.<br>如果DNS没有配置,就在 /etc/hosts中增加这太机器的别名<br>hostname.YOURDOMAIN.COM。<br>现在发送一封测试EMAIL:mailx -v -s test_email root </dev/null .<br>在/.cshrc/.profile中设置别名,变量如:VISUAL, EDITOR和PATH,但不要<br>包含'.'号。<br><br>为LOGIN登录进程安装SSH。配置SSH守护程序(/etc/sshd_config)以便访问限制<br>在带有known public keys的主机(/etc/ssh_known_hosts)并使rhosts认证无效。<br>如果远程管理确实需要的话,使用.shosts要比.rhosts好的多。检查Inetd中<br>的telnetd/ftpd是否仍然激活,如果是的话请在/etc/inetd.conf中注释掉,在<br>进行SSH测试。<br><br>安装一些其他的一些必须工具如:gzip;traceroute;top(不带SUID);lsof.<br><br>安装和建立Perl5到/bin/perl.<br><br>在/secure中安装安全脚本如:rotate_cron, rotate_log, wtrim.pl, rdistd<br>并改变属性来保护/secure:chmod -R 700 /secure; chown -R root /secure <br>6,在次配置和筛选系统安全:<br>许多在CD中OS的补丁是不够及时的,因此从sunsolve.sun.ch中获取patchdiag<br>工具来查看安全补丁并下载安装这些补丁。<br><br>配置登录记录 <br>在/etc/default/su中使SU记录有效。<br>使用以下方法使尝试登录失败记录有效:<br>touch /var/log/loginlog; <br>chmod 600 /var/log/loginlog; <br>chgrp sys /var/log/loginlog<br><br>SYSLOG记录:根据syslog.conf例子来分散LOG分析记录,即把多项服务的记录<br>分散到各个独立的LOG文件,有条件的话在(/etc/hosts)中指定一台机器作为loghost<br><br>syslog "loghost"<br>需要一个大的磁盘作为LOG记录的存储介质。<br>建立空的LOGS文件并设立相应的权限:<br><br>cd /var/log; touch daemonlog authlog kernlog userlog maillog lprlog <br>cronlog newslog locallog alertlog;<br><br>chmod 600 daemonlog authlog kernlog userlog maillog lprlog cronlog <br>newslog locallog alertlog;<br><br>kill -1 `pgrep syslogd`<br><br>使用rotate_log来修剪和压缩LOGS文件,在root cron中增加如下条目:<br>## Prune syslog logs weekly, keeping the last 6 months or so:<br>55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 alertlog<br>55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 authlog<br>55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 20 cronlog<br>55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 daemonlog<br>55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 kernlog<br>55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 locallog<br>55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 20 newslog<br>55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 userlog<br>55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 10 lprlog<br>55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 20 maillog<br># Reset syslog daemon<br>0,15,30 0 * * 0 kill -HUP `cat /etc/syslog.pid`<br><br>为了你自己使用上面的条目请在root cron中使其他的log修剪(pruning)无效:<br>#10 3 * * 0,4 /etc/cron.d/logchecker <br>#10 3 * * 0 /usr/lib/newsyslog <br>#15 3 * * 0 /usr/lib/fs/nfs/nfsfind <br>#1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 <br>#30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean<br><br>Pruning of login & other logs:<br><br>## Empty login/logout records at year end <br>0 0 31 12 * /secure/wtrim.pl wtmp <br>0 0 31 12 * /secure/wtrim.pl wtmpx 20<br># Solaris 2.x logs:<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -