Solaris安全FAQ(上)

来源:岁月联盟 编辑:zhu 时间:2008-03-16
Solaris安全FAQ(上)内容简介:参考资料:The Solaris Security FAQ by Peter Baer Galvin 1) (概述--略) 2) 怎样将Solaris配置得更加强壮? 2.1) 哪些文件的许可权限需要改变? 有个叫fix-modes的软件(ftp://ftp.fwi.uva.nl/pub/solaris/fix-modes.tar.gz)可 参考资料:The Solaris Security FAQ by Peter Baer Galvin 

  1) (概述--略)

  2) 怎样将Solaris配置得更加强壮? 

  2.1) 哪些文件的许可权限需要改变? 

  有个叫fix-modes的软件(ftp://ftp.fwi.uva.nl/pub/solaris/fix-modes.tar.gz)可以在Solaris 2.4和2.5上运行并改变系统文件及目录的存取权限,这样会使非ROOT的用户更难于更改系统文件或者取得ROOT权限。

  2.2) 如何对ROOT的环境加以配置? 

  将umask设为077或者027. 

  查看你的环境中路径设置情况,不要有./

  2.3) 我该更改哪些启动文件? 

  通常情况下,你要检查所有在/etc/rc2.d和/etc/rc3.d以S开头的文件,所有并非必要的设备或者服务都可以重命名(不要再以S开头),然后你可以重新启动,从/var/adm/messages中来观察自启动的情况,并且从ps -elf的输出中加以检查。

  2.4) 如何将ROOT的远程登陆取消? 

  在/etc/default/login里加上 "CONSOLE"行,在/etc/ftpusers里加上root。

  2.5) 如何取消rlogin/rsh服务? 

  移去/etc/hosts.equiv和/.rhosts以及各home目录下的.rhosts,并且在/etc/inetd.conf中把r系列服务都杀掉,然后找出inetd的进程号,重启它。

  2.6) 哪些帐号是不必须的? 

  移去或者锁定那些不是必须的帐号,比如sys/uucp/nuucp/listen等等,简单的办法是在/etc/shadow的password域中放上NP字符。

  2.7) 怎样保护我的设备? 

  在文件/etc/logindevperm中包含了对系统设备的许可权限配置信息,应该检视里面的各项设定并且手动赋予你所想要的许可权限。

  对于抽取式的BSM设备需要设定只有single user允许进入。

  2.8) 我应该将/etc的存取权限改为什么才安全? 

  用chmod -R g-w /etc命令来移去组用户对/etc的写权限。

  2.9) Solaris机器充当路由器? 

  默认情况下,如果Solaris机器有超过一块的网卡的话,它将会在不同网卡间转发数据包,这一行为可以在/etc/init.d/inetinit中得到控制。要在Solaris 2.4或者更低版本机器下关闭它,可以将ndd -set /dev/ip ip_forwarding 0添加于/etc/init.d/inetinit的未尾。在Solaris 2.5中,只要touch /etc/notrouter. 

  2.10) 如何取消automounter? 

  Automounter是由/etc/auto_*这些配置文件控制的,要取消它,只要简单地移去这些文件,并且/或者将/etc/rc2.d/S74autofs改名。 

  2.11) 如何取消NFS服务? 

  NFS的共享输出是由/etc/dfs/dfstab文件管理的.可以删除它。要将NFS服务器的守护进程关闭则可以重命名/etc/rc3.d/S15nfs.server。要防止一台机器成为NFS客户机,可以重命名文件/etc/rc2.d/S73nfs.client——当重命名这些自启动文件时,要注意不要将文件的首字母设为“S”。 

  2.12) 对cron任务我该注意些什么? 

  你得查看所有的cron任务——在/var/spool/cron/crontabs文件中你可以找到它们。还必须在/etc/default/cron里设置了"CRONLOG=yes" 来记录corn的动作。 

  2.13) 使用动态路由有什么风险吗? 

  使用动态路由守护进程的机器用in.routed及in.rdisc来维护路由,这可能会大大增加路由协议的复杂程度,而且路由更新会消耗相当大比便的可用带宽,因此在可能的情况下,还是建议你使用静态路由。

  2.14) 何时及如何运用静态ARP? 

  ARP是联系IP地址和以太网的协议(地址转换协议) 。默认地,Solaris机器动态地确定ARP地址,arp命令可以用来静态地设定ARP表并且刷新它,如果你的系统里仅有少量无需更改的机器,那么这是一个很好的工具。为了防止ARP欺骗,最好将受托机器的硬件地址作为永久条目保存在ARP的高速缓存中。

  2.15) 运行rpcbind是不安全的吗? 

  rpcbind是允许rpc请求和rpc服务之间相互连接的程序,但标准的rpc是不安全的:(,它使用的是"AUTH_UNIX" 验证, 也就是说它依靠的是远程系统的IP地址和远程用户的UID来验证。一般的系统可能需要某些rpc存在,但对各种服务器如Web servers, ftp servers, mail servers, etc)最好将rpc服务关闭,你也可以通过一些安全工具来确定rpc服务是否会影响到你系统的安全性。可以通过将/etc/rc2.d/S71RPC改名来禁止rpc。

  2.16) /etc/utmp的权限应该如何设定? 

  # chmod 644 /etc/utmp  

  2.17) 哪些程序可以去掉SUID位? 

  许多setgid和setuid程序都只是由root运行的,或者是由某些特定用户或组运行,那就可以将其setuid位移去,下面是一个Solaris 2.6上setuid程序的列表,你应该根据自己的情况进行增减。

# find / -perm -4000 -print
/usr/lib/lp/bin/netpr
/usr/lib/fs/ufs/quota
/usr/lib/fs/ufs/ufsdump
/usr/lib/fs/ufs/ufsrestore
/usr/lib/fs/vxfs/vxdump
/usr/lib/fs/vxfs/vxquota
/usr/lib/fs/vxfs/vxrestore
/usr/lib/exrecover
/usr/lib/pt_chmod
/usr/lib/sendmail
/usr/lib/utmp_update
/usr/lib/acct/accton
/usr/lib/uucp/remote.unknown
/usr/lib/uucp/uucico
/usr/lib/uucp/uusched
/usr/lib/uucp/uuxqt
/usr/lib/sendmail.orig
/usr/openwin/lib/mkcookie
/usr/openwin/bin/xlock
/usr/openwin/bin/ff.core
/usr/openwin/bin/kcms_configure
/usr/openwin/bin/kcms_calibrate
/usr/openwin/bin/sys-suspend
/usr/dt/bin/dtaction
/usr/dt/bin/dtappgather
/usr/dt/bin/sdtcm_convert
/usr/dt/bin/dtprintinfo
/usr/dt/bin/dtsession
/usr/bin/at
/usr/bin/atq
/usr/bin/atrm
/usr/bin/crontab
/usr/bin/eject
/usr/bin/fdformat
/usr/bin/login
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/ps
/usr/bin/rcp
/usr/bin/rdist
/usr/bin/rlogin
/usr/bin/rsh
/usr/bin/su
/usr/bin/tip
/usr/bin/uptime
/usr/bin/w
/usr/bin/yppasswd
/usr/bin/admintool
/usr/bin/ct
/usr/bin/cu
/usr/bin/uucp
/usr/bin/uuglist
/usr/bin/uuname
/usr/bin/uustat
/usr/bin/uux
/usr/bin/chkey
/usr/bin/nispasswd
/usr/bin/cancel
/usr/bin/lp
/usr/bin/lpset
/usr/bin/lpstat
/usr/bin/volcheck
/usr/bin/volrmmount
/usr/bin/pppconn
/usr/bin/pppdisc
/usr/bin/ppptool
/usr/sbin/allocate
/usr/sbin/mkdevalloc
/usr/sbin/mkdevmaps
/usr/sbin/ping
/usr/sbin/sacadm
/usr/sbin/whodo
/usr/sbin/deallocate
/usr/sbin/list_devices
/usr/sbin/m64config
/usr/sbin/lpmove
/usr/sbin/pmconfig
/usr/sbin/static/rcp
/usr/sbin/vxprint
/usr/sbin/vxmkcdev
/usr/ucb/ps
/usr/vmsys/bin/chkperm
/etc/lp/alerts/printer

  而且还应该建立一个setuid/setgid程序的列表,日后可以对比是否有新的setuid程序出现--这可能是入侵者光临过的征兆。

  2.18) 哪些系统工具我可以去掉它? 

  所有的网络工具你都应该检查并且确定它在你的系统环境里是否是必需的,如果答案为否的话,就干掉它,下面这些工具有些可以在开始文件中找到它,有些则上在/etc/inetd.conf中被启动的,注释掉那些不必要的服务,并且kill -HUP inetd守护进程——类似的东西有:

  tftp         systat        rexd    ypupdated    netstat
rstatd         rusersd        sprayd    walld           exec
comsat         rquotad        name    uucp

  最好把常规的inetd.conf替换掉——改成只开telnet和ftp服务——如果你真的需要它们的话(建议再用防火墙建立阻塞)。

  2.19) 我应该运行in.fingerd吗? 

  in.fingerd在过去有一些安全问题,如果你想提供finger工具,用nobody来运行它。

  2.20) 如何让syslog有更大作用?

  默认情况下,syslog仅提供最精简的记录,你可以通过编辑/etc/syslog.conf文件来让syslog记录更多的信息,然后你需要重启syslog以使它读取配置文件。

  你还可以通过

  touch /var/adm/loginlog
chmod 600 /var/adm/loginlog
chgrp sys /var/adm/loginlog

  来建立login的记录。

  2.21) 对EEPROM如何做才能更安全? 

  将EEPROM设于安全的模式:通过设定对"ok setenv security-mode=command"的密码保护来实现。当然这并不能真正地防止入侵,如果某人可以物理接触某控制台的话,它就能打开机器并替换掉EEPROM,更改hostid........

  2.22) 我的机器是处于“混杂模式”下吗? 

  在Solaris下,你只能通过安装某些工具来判断是否机器是处于混杂模式下,可以参见第三部分。只有当你运行诸如snoop或者某些网络监听软件时机器才会处在混杂模式下,如果你并没有监听整个网络,那极大的可能性就是黑客已经侵入到你的系统中并且开始以监听来接收数据了。

  2.29) 我需要安装哪些补丁? 

  用showrev -p命令来察看补丁在系统里的安装情况,在你想保护的主机以及大众都可以访问的主机上,你应该到SUN公司的主页上去查找相关的补丁包来安装,并且应该常常查看最新的补丁发布情况。

  2.30) 如何防止在堆栈中执行代码? 

  入侵者常常使用的一种利用系统漏洞的方式是堆栈溢出,他们在堆栈里巧妙地插入一段代码,利用它们的溢出来执行,以获得对系统的某种权限。

  要让你的系统在堆栈缓冲溢出攻击中更不易受侵害,你可以在/etc/system里加上如下语句:

  set noexec_user_stack=1
set noexec_user_stack_log =1

  第一句可以防止在堆栈中执行插入的代码,第二句则是在入侵者想运行exploit的时候会做记录:)

图片内容