您当前的位置: 首页 > CERNET > 疑难解答
SUN SOLARIS 基准安全清单

 
  1.防止基于堆栈的缓冲区溢出

  对/etc/system文件做备份。 #cp /etc/system /etc/system.backup 用vi编辑器编辑system文件,在system文件的最后加如下2行内容。
  set noexec_user_stack=1
  set noexec_user_stack_log=1

  保存文件,退出编辑器。

  2.关闭不用的服务

  在inetd.conf中关闭不用的服务 首先复制/etc/inet/inetd.conf。 #cp /etc/inet/inetd.conf /etc/inet/inetd.conf.backup 然后用vi编辑器编辑inetd.conf文件,对于需要注释掉的服务在相应行开头标记"#"字符即可,保留服务如代码1所示。

  注: Ftp和Telnet服务在不需要时也可注释掉。建议停用他们,用SSH和PROFTPD取代之 在Services中关闭不用的服务 首先复制/etc/inet/services。 #cp /etc/inet/services /etc/inet/services.backup 然后用vi编辑器编辑Services文件,对于需要注释掉的服务在相应行开头标记"#"字符即可。可停用服务如代码2所示。 在inetd.conf、services中进行修改后,找到inetd进程的ID号,用kill向其发送HUP信号进行刷新。举例如下。

  #ps -ef | grep inetd
  #kill -HUP 进程号
  代码1
  ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd
  telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
  talk dgram udp wait root /usr/sbin/in.talkd in.talkd
  uucp stream tcp nowait root /usr/sbin/in.uucpd in.uucpd
  time stream tcp nowait root internal
  time dgram udp wait root internal
  echo stream tcp nowait root internal
  echo dgram udp wait root internal
  discard stream tcp nowait root internal
  discard dgram udp wait root internal
  daytime stream tcp nowait root internal
  daytime dgram udp wait root internal
  代码2
  echo 7/tcp
  echo 7/udp
  discard 9/tcp sink null
  discard 9/udp sink null
  systat 11/tcp users
  daytime 13/tcp
  daytime 13/udp
  netstat 15/tcp
  chargen 19/tcp ttytst source
  chargen 19/udp ttytst source
  whois 43/tcp nicname # usually to sri-nic
  tftp 69/udp
  rje 77/tcp
  finger 79/tcp
  link 87/tcp ttylink
  supdup 95/tcp
  iso-tsap 102/tcp
  x400 103/tcp # ISO Mail
  x400-snd 104/tcp
  csnet-ns 105/tcp
  pop-2 109/tcp # Post Office
  uucp-path 117/tcp

  3.根据需要停用以下服务(如附表所示)

  附表
  sendmail 把/etc/rc2.d/S88sendmai
  更名为 /etc/rc2.d/X88sendmail
  DNS 把/etc/rc2.d/S88sendmai
  在/etc/rc2.d/S72inetsv中
  把运行in.named的一项注释掉
  NFS服务器 把/etc/rc3.d/S15nfs.server
  更名为 /etc/rc3.d/X15nfs.server
  NFS 客户机 把/etc/rc2.d/S73nfs.client
  更名为 /etc/rc2.d/X73nfs.client
  Automounter 把/etc/rc2.d/S74autofs
  更名为 /etc/rc2.d/X74autofs
  ntp 把/etc/rc2.d/S74xntpd
  更名为 /etc/rc2.d/X74xntpd
  syslog 把/etc/rc2.d/S74syslog
  更名为 /etc/rc2.d/X74syslog
  打印服务 把/etc/rc2.d/S80lp
  更名为 /etc/rc2.d/X80lp
  给系统打补丁跟所有的复杂系统一样,SUN有它的漏洞,其中的一些从性质上来说是相当严重的。SUN公司有向它的客户甚至是没有技术支持的客户提供补丁的优良传统。这些补丁或者以集合包或者以单个补丁的形式存在的。不幸的是,要完全修补你的系统,既需要大的补丁集合包,又需要单个的补丁。然而我们将介绍一种把补丁包和单个补丁结合起来使用的方法。
  1)变成root

  2)键入
  umask 022 来设置你的许可模式--给系统打补丁不仅要求所有的补丁被"nobody"用户可读,而且包括补丁之前的所有目录(不要问为什么,反正是一般这么干的)。

  3)创建一个叫“patch“的目录,并进入它,我一般是这样做的:
  mkdir /var/tmp/patch
  cd /var/tmp/patch
  在你建“patch“目录的文件系统中要保证有足够的磁盘空间
  提示:你可以试着键入df -k来看看文件系统上可用的磁盘空间,不要用/tmp!

  4)用ftp连接sunsolve站
  ftp sunsolve.sun.com你的登录用户名是“anonymous“,口令是你的电子邮件地址。

  5)转到二进制模式,键入:
  bin
  关闭提示,键入:
  prompt
  --你不需要为下载每个补丁回答”是,我需要下那个补丁“ 。

  6)补丁位于sunsolve站的/pub/patches目录,所以键入:
  cd /pub/patches

  7)得到对应于你操作系统版本的PatchReport文件,你可以用以下命令列出那些文件:
  ls *.PatchReport
  例如:
  -=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-
  ftp> ls *.PatchReport
  200 PORT command successful.
  150 Opening ASCII mode data connection for file list.
  Solaris1.1.1.PatchReport
  Solaris1.1.2.PatchReport
  Solaris1.1.PatchReport
  Solaris2.3.PatchReport
  Solaris2.4.PatchReport
  Solaris2.4_x86.PatchReport
  Solaris2.5.1.PatchReport
  Solaris2.5.1_x86.PatchReport
  Solaris2.5.PatchReport
  Solaris2.5_x86.PatchReport
  Solaris2.6.PatchReport
  Solaris2.6_x86.PatchReport
  Solaris7.PatchReport
  Solaris7_x86.PatchReport
  226 Transfer complete.
  remote: *.PatchReport
  360 bytes received in 0.0044 seconds (79.16 Kbytes/s)
  -=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-
  对x86和sparc文件有不同的补丁报告文件,sparc版本的是那些没有“x86“字样的。

  8)得到一份补丁报告文件,比如:
  get Solaris2.6.PatchReport

  9)得到一份对应于你系统版本的推荐补丁集合包和它的README文件,可以用如下命令
  列出推荐的文件:
  ls *Recommended*
  输出可能是这样的:
  -=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-
  ftp> ls *Recommended*
  200 PORT command successful.
  150 Opening ASCII mode data connection for file list.
  2.3_Recommended.README
  2.3_Recommended.tar.Z
  2.4_Recommended.README
  2.4_Recommended.tar.Z
  2.4_x86_Recommended.README
  2.4_x86_Recommended.tar.Z
  2.5.1_Recommended.README
  2.5.1_Recommended.tar.Z
  2.5.1_x86_Recommended.README
  2.5.1_x86_Recommended.tar.Z
  2.5_Recommended.README
  2.5_Recommended.tar.Z
  2.5_x86_Recommended.README
  2.5_x86_Recommended.tar.Z
  2.6_Recommended.README
  2.6_Recommended.tar.Z
  2.6_x86_Recommended.README
  2.6_x86_Recommended.tar.Z
  7_Recommended.README
  7_Recommended.zip
  7_x86_Recommended.README
  7_x86_Recommended.zip
  -=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-
  你可以用mget命令把推荐文件和readme都拿下来,比如:
  mget 7_x86_Recommended*
  这可能要等上一会儿。

  10)在下载推荐文件的时候,你可以打开补丁报告文件看看,里面会有关于安全修补的一节
  可能是这样的:
  -=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-
  Solaris 2.5.1 Patches Containing Security Fixes:
  ------------------------------------------------
  103594-19 SunOS 5.5.1: sendmail fixes
  103603-10 SunOS 5.5.1: ftp, in.ftpd, in.rexecd and in.rshd patch
  103627-11 SunOS 5.5.1: Linker patch
  103630-14 SunOS 5.5.1: ip ifconfig arp udp icmp patch
  106689-01 * SunOS 5.5.1: /usr/sbin/in.uucpd patch
  106905-01 * SunOS 5.5.1: apropos/catman/man/whatis patch
  103566-43 OpenWindows 3.5.1: Xsun patch
  106411-06 * OpenWindows 3.5.1: xdm patch
  (& c.)
  -=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-
  “*“标记的补丁没有包括在推荐补丁集合包里,我们要把它们包括进来。

  11)当推荐补丁集合包下载完后,你需要下载补丁报告中所标记的单个补丁,最快的方法是
  用mget,这样用:
  mget 106689* 106905* 106411*
  重要:你可能想用一个mget命令得到所有的补丁,但mget的参数的个数是有限制的!而且,我并没有指定版本号,这不仅仅是为了少输入字符和得到相关的README文件,也是因为在补丁报告发布过程中,版本号可能是会变化的。

  12)下载完所有的东西后,键入:
  quit来结束ftp会话。

  13)到现在,你已经下载了补丁集合包和单个补丁,因为继续下去打单个的补丁包太费体力,我们将先把补丁包和单个补丁合并起来。
  首先解压补丁包:
  如果你用的是Solaris 2.6或更早的,
  uncompress 2*Recommended.tar.Z
  tar -xvf 2*Recommended.tar
  如果用的是Solaris 7,
  unzip 7*Recommended.zip
  其次,把所有的单个补丁移到你的建立的Recommended目录:
  mv 1* *Recommended
  然后,进到保存有全部补丁的Recommended目录:
  cd *Recommended

  14)现在我们可以把所有单个的补丁加到patch_order文件中,在这个文件中列出了所有将被install_cluster脚本安装的补丁,你可以手工把它们加进去(提示:这是错误的选择)或者用UNIX的命令工具来帮你做这件事。如果你是Solaris 7,用下面的命令:
ls *.zip | cut -d"." -f1 >> patch_order
如果是Solaris 2.6或以前的:
ls *.tar.Z | cut -d"." -f1 >> patch_order

  15)现在是解压所有单个补丁包的时候了,因为它们还是压缩格式的。
  A)如果你用Solaris 7,你可以用unzip一次解压一个文件: unzip 108723.zip你不能用“unzip *.zip“,因为unzip不能这样工作,为了避免多次地输入unzip,你可以用下面的UNIX命令让unzip为你解压所有的东西:ls *.zip | xargs -n1 unzip

  B)如果用的是Solaris 2.6或更低的,键入:
  uncompress *.tar.Z
  现在你必须用tar分离出单个的补丁,你可以用以下命令一次处理一个文件:tar -xvf 108723.tar讨厌的是,你不能用“tar -xvf *.tar“,因为tar不能这样工作,为了避免多次地输入tar,你可以用下面的UNIX命令让tar为你分离所有的东西: ls *.zip | xargs -n1 tar -xvf

  16)到现在所有的补丁都准备好了,关闭计算机:
  /usr/sbin/shutdown -y -g0 -i0
  启到到单用户模式,
  对sparc:
  boot -s
  对x86, 启动时, 键入:
  b -s

  系统引导后,在提示符后输入root口令后,键入:
  mountall
  来mount所有的文件系统。
  然后输入:
  cd /var/tmp/patch/*Recommended
  进到保存所有补丁的目录,现在你可以键入以下命令来安装“所有”的补丁了:
  ./install_cluster
  跟着提示做就行了。如果这是个Solaris 2.5.1或是个Solaris 2.6的系统,可以走开搞杯咖啡喝喝,因为要花点时间的。不要太担心补丁安装过程中的错误,很多时候出现错误是因为你没有安装一个特定的软件或已经打了某个补丁。打完补丁后,关机重启,输入:
/usr/sbin/shutdown -y -g0 -i6

  
  

相关文章:

中国教育和科研计算机网版权与免责声明
①凡本网未注明稿件来源的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本网协议授权的媒体、网站,在下载使用时必须注明"稿件来源:中国教育和科研计算机网",违者本网将依法追究责任。
② 本网注明稿件来源为其他媒体的文/图等稿件均为转载稿,本网转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

Copyright(c) 1994-2020 CERNIC,CERNET 京ICP备15006448号-16 京网文[2017]10376-1180号
关于假冒中国教育网的声明 | 版权所有:中国教育和科研计算机网网络中心