Solaris安全手册 发布日期: 1999-12-8 内容: 1,Preparation 2,Initial os installation 3,Stripping/configuring OS: 1st pass 4,Connect to test.NETwork 5,Installing tools & sysadmin software 6,Stripping/configuring OS: 2nd pass 7,Create Tripwire image, backup, test 8,Install, test, harden applications. 9,Install on live network, test 1. Preparation 最小限度保证安全的方法是只在主机上运行一个或两个服务。使用一个机器比只使用一个拥有所有权利的机器安全的多,因为这样可以隔离,方便查找问题所在。总之:在你的机器上运行你一些最必要的服务。考虑拆除键盘,屏幕,这样可以避免使用X11 和知道命令行所示,在一个隔离的信任的网络段中进行测试。明确你的系统和硬件配置能产生什么样的结果,如在安装SUN的 Disksuite时要考虑你是否需要RPC服务,因为DISKSUITE必须使用RPC服务。明确各种应用程序是怎样工作的如:使用什么端口和文件. 2,初始化安装操作系统。连接串口控制台,开机,当出现OK提示时发送Stop-A信息 (~#,~%b,或者F5,主要取决于你使用tip,cu或者vt100终端),然后开始安装过程-"boot cdrom - install" 使用最小安装 end user bundle(除非你要额外的 server/developer工具),设置主机名,终端,IP参数,时区等等,不要激活NIS或者NFS及不要激活电源管理。选择手工划分分区:把/usr和/opt和root分离开来以便这些分区可以以只读方式挂(mount)起来。考虑把大的/var文件系统和拥有较多的数据量如(web,FTP)划分为独立的分区。如果硬盘是2GB建议200MB / (+var), 200MB swap, 600MB /usr 及 1GB 给 /opt 如果硬盘是2GB建议300MB / (+var+opt), 200MB swap, 500MB /usr 给ROOT设置一个7到8字符大小写结合等比较强壮的密码,再重启动。接着安全由SUN的安全补丁。一般的在CD上就包含这些安全补丁包。重启动及作为ROOT重启动后,你可以使用showrev -p查看补丁列表。 3,配置操作系统 磁盘共享(mount):为了减少木马和不授权的修改,在 /etc/vfstab,在mount /时请使用"remount,nosuid"选项;在 /var上请带上"nosuid"选项;在/tmp后加上 "size=100m,nosuid"选项(允许/tmp只能使用100M空间及不允许 执行SUID程序);如果软盘不需要的话再把"/dev/fd"行注释掉。 (下面的命令假定你使用的是c-shell) 使NFS无效: RM /etc/rc2.d/{S73nfs.client,K28nfs.server} /etc/rc3.d/S15nfs.server /etc/dfs/dfstab使SendMail守护程序无效,虽然sendmail不是作为一个守护程序来运行的,但两进制程序是依然存在的,email还可以通过它了发送(但不能接受)。设定只要一个主机来接受EMAIL,另必须使用smap或其他等同命令来把sendmail危险程度降低到最底。 rm /etc/rc2.d/S88sendmail 再在cron行中增加处理邮件队列的命令: 0 * * * * /usr/lib/sendmail -q 在关闭一些其他的服务: rm /etc/rc2.d/{S74autofs,S30sysid.net,S71sysid.sys,S72autoinstall} rm /etc/rc2.d/{S93cacheos.finish,S73cachefs.daemon,S80PRESERVE} rm /etc/rc2.d/{S85power,K07dmi} rm /etc/rc3.d/S77dmi If you have server/developer packages: rm /etc/rc2.d/{S47ASPpp,S89bdconfig,S70uucp} 使RPC无效:这一般来说是建议关闭此功能的,但一些程序如 DISKSUITE会开启RPC服务,所以一般建议不使用DISKSUITE工具。如果你不想使RPC无效,则一定要使用信息包过滤器。 rm /etc/rc2.d/S71rpc 使打印服务无效(除非有一个本地打印机存在): rm /etc/rc2.d/{S80lp,S80spc} 使naming Services Caching Daemon(名字服务缓冲守护程序)服务无效: mv /etc/rc2.d/S76nscd /etc/rc2.d/.S76nscd 使CDE程序无效(除非你坚持要使用图形控制台): rm /etc/rc2.d/S99dtlogin 使NTP-NETWORK TIME PROTOCOL无效(NTP会增加带宽和不安全的因素,建议使用 rdate到一台使用NTP的机器来获得精确时间): rm /etc/rc2.d/S74xntpd 使SNMP无效: rm /etc/rc2.d/K07snmpdx /etc/rc3.d/S76snmpdx 在Inetinit中是ip forwarding和sourec routing(源路)由无效 (假如有超过一个网络接口的话)。在/etc/init.d/inetinit中增加下面所示设置: ndd -set /dev/ip ip_forward_directed_broadcasts 0 ndd -set /dev/ip ip_forward_src_routed 0 ndd -set /dev/ip ip_forwarding 0 根据rfc1948建议在/etc/default/inetinit中增加如下的生成初始化序列号设置来防止TCP序列号预测攻击(ip欺骗): TCP_STRONG_ISS=2 在/etc/system中增加如下设置来防止某些缓冲溢出攻击。这些保护是那些需在堆栈中执行的攻击方式。但需要硬件的支持(只在sun4u/sun4d/sun4m系统中有效): set noexec_user_stack=1 set noexec_user_stack_log=1 使用默认路由:在/etc/defaultrouter中增加IP地址,或使用 "route"在/etc/rc2.d/S99static_routes中建立启动文件。为了使动态路由无效: touch /etc/notrouter 为了使多路广播(multicasting)无效请在/etc/init.d/inetsvc 中注解掉 "route add 224.0.0.0"周围的几行。为了记录INETD连接的所有信息,在inetd低端的启动行中增加 "-t"参数,即:: /usr/sbin/inetd -s -t 在/etc/hosts中配置一些你想取舍的主机(一些你不想通过dns解析的)。 /etc/inetd.conf: 先使所有服务无效;配置你真正需要的服务,但必须使用Fwtk netacl或tcp wrappers来允许最小限度的IP地址访问和各种记录 4,连接并测试网络系统通过上面的安全剥离和筛选,你必须肯定系统能正常工作,把它连接到一个安全隔离的网络。重起并以ROOT身份登录控制台,检查控制台启动时的错误信息并根据需要进行修改。 5,安装系统管理工具软件 这部分将安装标准的工具和实用程序。最重要的是SSH,这些工具必须在其他机器上编译和精心测试过的。环境: DNS客户端:在/etc/resolv.conf中增加域名和DNS服务;在 /etc/nsswitch.conf中增加DNS入口的主机。 EMAIL:如果主机不需要在子网外发送EMAIL,就不需要使用 mailhost的别名。否则的话必须编辑/etc/mail/aliases,在 /etc/hosts中设置mailhost,在/etc/mail/sendmail.cf取消Dj 行的注释并把它设置为Dj$w.YOURdomAIN.COM. 如果DNS没有配置,就在 /etc/hosts中增加这太机器的别名 hostname.YOURDOMAIN.COM。现在发送一封测试EMAIL:mailx -v -s test_email root 认证无效。如果远程管 理确实需要的话,使用.shosts要比.rhosts好的多。检查Inetd 中的telnetd ftpd是否仍然激活,如果是的话请在 .netd.conf中注释掉,在进行SSH测试。 安装一些其他的一些必须工具如:gzip;traceroute;top(不带 SUID);lsof. 安装和建立perl5到 bin perl. secure中安装安全脚本如:rotate_cron, rotate_log, wtrim.pl, rdistd 并改变属性来保护 secure:chmod 700 secure; chown -R root 6,在次配置和筛选系统安全: 许多在CD中OS的补丁是不够及时的,因此从sunsolve.sun.ch中 获取patchdiag 工具来查看安全补丁并下载安装这些补丁。 配置登录记录 在 default su中使SU记录有效。 使用以下方法使尝试登录失败记录有效: loginlog; chgrp sys loginlog SYSLOG记录:根据syslog.conf例子来分散LOG分析记录,即把多 项服务的记录 分散到各个独立的LOG文件,有条件的话在( hosts)中指定 一台机器作为loGhost ?loghost? 需要一个大的磁盘作为LOG记录的存储介质。 建立空的LOGS文件并设立相应的权限: cd log; touch chmod alertlog; -1 `pgrep syslogd` 使用rotate_log来修剪和压缩LOGS文件,在root cron中增加如 下条目: ## Prune logs weekly, keeping the last months or so: alertlog authlog cronlog daemonlog kernlog locallog newslog 40 userlog 10 lprlog 55 23 6 secure rotate_log -L var log -m 600 -M 400 -s -n 20 maillog # Reset syslog daemon 0,15,30 kill -HUP `cat syslog.pid` 为了你自己使用上面的条目请在root cron中使其他的log修剪 (pruning)无效: 0,4 etc cron.d logchecker #10 newsyslog #15 3 0 lib fs nfs nfsfind #1 2 * [ -x ] && usr sbin rtc -c>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-989468/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10752043/viewspace-989468/