3.1.8 系统补丁
跟所有的复杂系统一样,SUN有它的漏洞,其中的一些从性质上来说是相当严重的。SUN公司有向它的客户甚至是没有技术支持的客户提供补丁的优良传统。这些补丁或者以集合包或者以单个补丁的形式存在的。不幸的是,要完全修补你的系统,既需要大的补丁集合包,又需要单个的补丁。然而我们将介绍一种把补丁包和单个补丁结合起来使用的方法。
用patchadd -p 或 showrev -p命令来察看补丁在系统里的安装情况,在你想保护的主机以及大众都可以访问的主机上,你应该到SUN公司的主页上去查找相关的补丁包来安装,并且应该常常查看最新的补丁发布情况。
补丁步骤:
1) 变成 root
2) 键入 umask 022来设置你的许可模式--给系统打补丁不仅要求所有的补丁被"nobody"用户可读,而且包括补丁之前的所有目录(不要问为什么,反正是一般这么干的)。
3) 创建一个叫“patch“的目录,并进入它,我一般是这样做的:
mkdir /var/tmp/patchcd /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.Ztar -xvf 2*Recommended.tar
如果用的是Solaris 7,unzip 7*Recommended.zip
其次,把所有的单个补丁移到你的建立的Recommended目录:mv 1* *Recommende d
然后,进到保存有全部补丁的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) 现在是解压所有单个补丁包的时候了,因为它们还是压缩格式的。
如果你用Solaris 7,你可以用unzip一次解压一个文件:unzip 108723.zip讨厌的是,你不能用“unzip *.zip“,因为unzip不能这样工作,为了避免多次地输入unzip,你可以用下面的UNIX命令让unzip为你解压所有的东西:ls *.zip xargs -n1 unzip
如果用的是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
3.1.9 高级指南
3.1.9.1如何防止在堆栈中执行代码?
入侵者常常使用的一种利用系统漏洞的方式是堆栈溢出,他们在堆栈里巧妙地插入一段代码
,利用它们的溢出来执行,以获得对系统的某种权限。
要让你的系统在堆栈缓冲溢出攻击中更不易受侵害,你可以在/etc/system里加上如下语句:
set noexec_user_stack=1
set noexec_user_stack_log =1
第一句可以防止在堆栈中执行插入的代码,第二句则是在入侵者想运行exploit的时候会做记
录,一旦重启机器,这些改变就会生效。如果这不是一个你可以关闭的系统,那么你用adb来
改变一个运行中的系统的参数也是可能的。
当然会有些合法使用可执行堆栈的程序在你做出如上改变后而不能正常运行。所幸的是这样
的程序的并不多,我们所知的就只有GNU ada 编译器。打开: http://www.qqread.com/unix/h209529.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- SCOUNIX基础讲座--第十一讲:TCP/IP 管理 (318次浏览)
- SCO UNIX基础讲座--第三讲vi editor (308次浏览)
- 基础知识: HP-Unix下Oracle9i的安装 (306次浏览)
- Unix系统中字符终端的管理 (306次浏览)
- 利用UNIX的TFTP和RCP功能配置CISCO路由器 (217次浏览)
- simp server for unix 配置教程 (144次浏览)
- UNIX和WINDOWS2000上的ORACLE的差异 PartIII (142次浏览)
- Apache For Unix 2.0.55 下载列表 (121次浏览)
- unix口令文件介绍 (107次浏览)
- 运用CrackLib构建安全的Unix口令 (105次浏览)



