Solaris安全FAQ(中)
3.1) inetd
inetd可以用xinetd代替,以增加日志功能。
xinetd: ftp://qiclab.scn.rain.com/pub/security/xinetd*
或 ftp://ftp.dlut.edu.cn/pub/unix/sun-source/xinetd-2.1.tar.Z(不知是否为最新版本).
3.2) ifstatus
ifstatus可以确定你的网卡是否工作于混杂模式(有人进行网络监听?)
url: ftp://coast.cs.purdue.edu/pub/tools/unix/ifstatus/
3.3) xntp
xntp是有个更安全的网络时间协议(Network Time Protocol).
URL: ftp://ftp.udel.edu/pub/ntp/xntp3-5.93.tar.gz (1907KB)
3.4) sendmail
用Berkeley Sendmail(http://www.sendmail.org/)替代Solaris自带的sendmail.
3.5) rpcbind
可以用如下URL中的rpcbind替换Solaris自带的rpcbind, 这个rpcbind包含了类似于tcpwrapper的功能并关闭了通过rpcbind访问NFS.
ftp://ftp.win.tue.nl/pub/security/rcpbind_1.1.tar.Z
3.6) 口令检查程序
很不幸,Solaris 上还未发布passwd+及npasswd, 这两个程序可以用于检查在UNIX上那些愚蠢的口令。
3.7) crack
crack可以找出/etc/shadow中那些容易猜测的口令,虽然运行crack将会使CPU的负载加重,但它在第一次运行时就可以给出10%系统帐号的口令。
URL: (我想国内很多站点已有此程序了。)
ftp://sable.ox.ac.uk/pub/comp/security/software/crackers/
3.8) ftp
不用多说,使用wu-ftpd, 国内站点上有的是,如果找不到,试试:
URL:ftp://ftp.dlut.edu.cn/pub/unix/ftp/wu-ftpd/
OR: ftp://wuarchive.wustl.edu/packages/wuarchive-ftpd
3.11) bind
标准的Solaris里带的bind有着众所周知的安全问题(参见CERT第4部份),现在的发行版已经做了修补。
3.12) netcat
NetCat对系统管理员和入侵者来说都是很实用的工具,它可以在两个系统间建立灵活我TCP连接。
5) 如何使我的Solaris Web server更安全?
下面的方法可以令你的以Solaris为基础的系统十分安全,你同时还可以配以利用防火墙及过滤路由器来组成一个完整而强大的网络拓扑,但是,没有任何系统是完美的,所以你除了关注安全动态,给机器作好防范之外,也不应该在机器上装载其他无关的第三方的软件--webserver需要的是安全,而不是对管理员的方便。
5.0) Web server安全检查
用下面的安全检查列表来察看你的系统是否是安全地安装的,当然如果你有特殊的安全需求则不一定以此为准:
在完成一切安全设置前将系统与互联网断开
仅仅安装系统的核心部分以及需要的软件包
安装推荐的安全补丁
修改系统的开始文件来进行
在/etc/init.d/inetinit中关闭IP转发
改变/tmp的存取权限(可以在系统的开始文件中加入脚本
用ps检查进程情况
Invoke sendmail from cron to process queued mail occasionally.
安装配置tcp_wrappers, S/Key, wu-ftp及tripwire于你的系统环境。
编辑/etc/hosts.allow来确定可进入的机器,并且编辑/etc/inetd.conf注释掉所有不需要的服务
用syslog记录下所有的telnet连接通信
Mount上的文件系统要是只读而且是no-suid的
确定/noshell是除了root之外所有不希望进入的帐号的默认shell
删除/etc/auto_*, /etc/dfs/dfstab, p/var/spool/cron/crontabs/* (except root).
使用静态路由
测试你的系统,包括允许及拒绝访问的配置及记帐系统
考虑使用更安全版本的sendmail, syslog, bind以及crontab来替代现有的
安装xntp来有更精确的时间戳
考虑更详细地系统记帐
保持监听和测试Web server的习惯
在你完成上面的配置之后,你的系统已经会比安装一个标准的UNIX系统,并配以标准配置更安全了。
3.9) fix-modes
用于纠正Solaris 2.2 ~ 2.6系统中敏感文件及目录的属性,以适应安全性需要。
URL:ftp://ftp.dlut.edu.cn/pub/unix/security/fix-modes.tar.gz
OR:http://www.fwi.uva.nl./pub/comp/solaris/fix-modes.tar.gz
3.10) noshell
可用于不希望登陆系统的用户的shell, 能够记录发生的事件并防止用户login.
5.1) 硬件上......
在系统完全安装好并且配置得更安全之前,不要将它放到互联网上——从理论上说,一些入侵者喜欢在你把系统弄得完美之前溜进去放几个后门——而且最好从CD-ROM安装你的系统并且将二进制文件加载在磁带机或者软盘上物理写保护.......
5.2) 安装系统
从最新的,可靠的Solaris2.x版本安装,每一版本的Solaris都会比前一版更安全一些的。
Solaris是非常灵活并且包含了大量工具可供使用的。但不幸的是,这些外带的功能软件包可能也会导致一些潜在的危险,所以要建立一个安全的系统,最好的办法是,只安装基本的OS部份,其余的软件包则以必要为原则,非必需的包就可以不装——这样还可以使机器更快和更稳定:)
在Solaris的安装程序里,你可以选择Core SPARC installation cluster来安装,事实上,就连这个选项都还有些东西是不必要的确良:(,但它的确是一个安全的系统基础,另一个好处是,它需要的空间很少,看看下面你就知道了:
s0:/ 256 megabytes
s1:swap256 megabytes
s2:overlap
s3:
s4:
s5:
s6:/local??? megabytes (rest of the drive)
s7:
/var要足够大以放置审核记录文件,而swap分区则与你的硬件(内存)相适应就行了,当然大的swap分区可以在应付DoS攻击时更强有力。
现在可以用另外的机器,ftp到sunsolve.sun.com:/pub/patches并且下载最新的推荐补丁,将它放在磁带机中转到你的“安全主机”上,然后安装这些补丁,当然有些补丁可能安装不上,因为它所要补的那个软件你没有安装:)
5.3) 系统里的Strip
在Solaris下,你可以通过对/etc/rc[S0-3].d文件来修改启动时自引导的动作:
考虑移去/etc/rc2.d中在你系统中用不到的服务,我还建议你移除/etc/init.d里除下以下列表中文件外的所有东西:
K15rrcd S05RMTMPFILES K15solved S20sysetup
S72inetsvcS99auditS21perf
S99dtloginK25snmpdS30sysid.netS99netconfig
K50pop3 S74syslog S75cron S92rtvc-config
K60nfs.server K65nfs.client S69inet
K92volmgt READMES95SUNWmd.sync
S01MOUNTFSYSS71sysid.sysS88utmpdS95rrcd
这些文件可能会与你的不同--这取决于你机器里的图形卡/是否使用Solaris DiskSuits等等。移除/etc/rc3.d里的文件........
举例来说,在Solaris 2.4中,你应该编辑/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
并且通过设定ndd -set /dev/ip ip_strict_dst_multihoming 1来关闭"ip_strict_dst_multihoming"核心变量。solaris机器就不会在两块网卡间转发IP包,这可以防止host spoof。
* 在Solaris 2.5下,只要建立一个叫/etc/notrouter的文件就能阻止IP转发,要重新打开它,只要移除/etc/notrouter并重启动系统就行
了。It's important to note that there is a small time
window between when this file is created and when routing is disabled,
theoretically allowing some routing to take place.
在Solaris 2.4下,添加一个新的脚本名为/etc/init.d/tmpfix:
#!/bin/sh
#ident"@(#)tmpfix 1.095/08/14"
if [ -d /tmp ]
then
/usr/bin/chmod 1777 /tmp
/usr/bin/chgrp sys /tmp
/usr/bin/chown root /tmp
并且连接/etc/init.d/tmpfix到/etc/rc2.d/S79tmpfix,这样这个脚本就会在系统启动时执行了。这可以使入侵者更难在系统里夺取root权限。在Solaris 2.5则不必如此。
另外还有一些好的建议,就是在启动时为用户设定安全的umask,下面的script就是做这事儿的:
umask 022# make sure umask.sh gets created with the proper mode
echo "umask 022" > /etc/init.d/umask.sh
for d in /etc/rc?.d
do
ln /etc/init.d/umask.sh $d/S00umask.sh
done
Note: 脚本名称中的".sh"是必需的,这样脚本才会在本shell而不是它的子shell中执行。
删除/etc/auto_*文件,删除/etc/init.d/autofs可以防止automounter在启动时就运行。
删除/etc/dfs/dfstab,清除/etc/init.d以防止机器成为NFS服务器。
删除crontab文件,你可以将/var/spool/cron/crontabs中属主root以外的文件全部删除。
使用静态路由,建立/etc/defaultrouter来维护之,以避免spoof。如果你必须通过不同的网关,考虑增加/usr/bin/route命令于/etc/init.d/inetinit以取代运行routed。
UID PIDPPIDCSTIME TTYTIME COMD
root 0 0 55 Mar 04 ?0:01 sched
root 1 0 80 Mar 04 ? 22:44 /etc/init -
root 2 0 80 Mar 04 ?0:01 pageout
root 3 0 80 Mar 04 ? 33:18 fsflush
root9104 1 17 Mar 13 console0:00 /usr/lib/saf/ttymon -g -h -p myhost console
login:-T sun -d /dev/console -l co
root92 1 80 Mar 04 ?5:15 /usr/sbin/inetd -s
root 104 1 80 Mar 04 ? 21:53 /usr/sbin/syslogd
root 114 1 80 Mar 04 ?0:11 /usr/sbin/cron
root 134 1 80 Mar 04 ?0:01 /usr/lib/utmpd
root 198 1 25 Mar 04 ?0:00 /usr/lib/saf/sac -t 300
root 201 198 33 Mar 04 ?0:00 /usr/lib/saf/ttymon
root691568448 13:03:32 console0:00 ps -ef
root68446842 39 13:02:04 console0:00 -sh
/usr/lib/sendmail守护程序并没有打开,因为你不必总在25端口监听mail的列表请求,你可以在root的crontab文件中增加:
0 * * * * /usr/lib/sendmail -q > /var/adm/sendmail.log 2>&1
这条命令要以每小时调用sendmail进程处理排队中的邮件。
5.4) 安装第三方软件
你需要的第一个软件是TCP Wrappers软件包——由Wietse Venema写的,它提供了一个小的二进制文件叫tcpd,能够用它来控制对系统服务的进出——比如telnet及ftp,它在/etc/inetd.conf中启动,访问控制可以由IP地址、域名或者其它参数来限制,并且tcpd可以提升syslog的记录级别,在系统遇到未经认证的连接时,发送email或者警告给管理员。
然后安装S/Key来控制远程连接的安全性,可以在Q5.6中看到详细的配置方法。
如果你打算打开ftp服务(不管是匿名ftp或者是出了管理目的),你需要取得一份WU-Archive ftp,最好要拿到它的最新版本,否则会有一些安全漏洞存在,如果你认为需要管理员的远程登陆服务的话,可能得修改S/Key来支持ftp daemon。在Crimelabs S/Key的发行版本中,你可以在找到S/Key/misc/ftpd.c,这个C程序示范了如何让S/Key支持WU-Archive ftp,你可以对新版的WU-FTP做类似的改动,当然你可能要阅读wu-ftp FAQ以增加了解。
编译并且安装了这些二进制文件后(tcpd, wu-ftpd及keyinit, keysu,keysh),它们会被安装在/usr/local/bin中,当编译wu-ftpd时你需要指定一个配置文件及日志的存放目录,我们推荐你将配置文件放在/etc下,将日志文件放在/var下,Q5.7更详细地说明了wu-ftp的配置。
用/noshell来阻止那些不想让他们进入的帐号,让/noshell成为那些人的shell。这些帐号不允许登陆并且会记录下登陆的企图,入侵者无法通过这种帐号入侵。