nullnull第18章 UNIX/Linux操作系统安全 18.1 UNIX/Linux系统安全概况
18.2 UNIX/Linux系统安全分析
18.3 UNIX/Linux系统安全增强方法和流程
18.4 UNIX/Linux系统安全增强技术
18.5 Linux安全增强实例
18.6 UNIX/Linux系统常见漏洞与解决方法
18.7 本 章 小 结
本章思考与练习 null18.1 UNIX/Linux系统安全概况 18.1.1 UNIX/Linux系统结构
同Windows系统相比较,UNIX系统的历史更长。经过长期的发展演变,已形成了多种具有不同特色的UNIX操作系统,如Solaris、AIX、HP-UNIX、Free BSD等。另外,一种开放源代码的Linux操作系统(类似于UNIX系统),目前广泛应用在互联网上。虽然Linux与UNIX有不同的类型,但是它们在技术原理和系统设计结构上是相同的。一般的UNIX/Linux操作系统分为三层:硬件层、系统内核及应用层,如图18-1所示。 null图18-1 UNIX/Linux系统结构 null18.1.2 UNIX/Linux安全机制 1.UNIX/Linux认证
认证是UNIX/Linux系统中的第一道关卡,用户在进入系统之前,首先经过认证系统识别身份,然后再由系统授权访问系统资源。目前,UNIX/Linux常用的认证方式有:
(1) 基于口令的认证方式。基于口令的认证方式是UNIX/Linux最常用的一种技术,用户只要给系统提供正确的用户名和口令就可以进入到系统。 null (2) 终端认证。在UNIX/Linux系统还提供了一个限制超级用户从远程登录的终端认证。
(3) 主机信任机制。UNIX/Linux系统提供了一个不同主机之间的相互信任机制,这就使得不同主机用户之间无需系统认证就可以登录。
(4) 第三方认证。第三方认证是指非UNIX/Linux系统自身带有的认证机制,而是由第三方提供认证。在UNIX/Linux中,系统支持第三方认证,例如一次一密口令认证S/Key、Kerberos认证系统、插入式身份认证PAM(Pluggable Authentication Modules)等。 null 2.UNIX/Linux访问控制
普通的UNIX/Linux系统一般通过文件访问控制
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
ACL来实现系统资源的控制,也就是常说的“9 bit”来实现。例如,某个文件的列表显示信息如下:
-rwxr-xr-- 1 test test 4月9日17:50 sample.txt
由这些信息看出,用户test对文件sample.txt的访问权限有“读、写、执行”,而test这个组的其他用户只有“读、执行”权限,除此以外的其他用户只有“读”权限。 null 3.UNIX/Linux 日志/审计
审计机制也是UNIX/Linux系统安全的重要组成部分。审计有助于系统管理员及时发现系统入侵行为或潜在的系统安全隐患。不同版本的UNIX/Linux日志文件的目录是不同的。UNIX早期版本的审计日志目录在/usr/adm,较新版本的在/var/adm; Solaris、Linux、BSD在Unix /var/log。在这些目录或其子目录下,常见日志文件如下:
* lastlog:记录用户最后一次成功登录的时间。
* loginlog:不良的登录尝试记录。 null * messages:记录输出到系统主控台以及由syslog系统服务程序产生的消息。
* utmp:记录当前登录的每个用户。
* utmpx:扩展的utmp。
* wtmp:记录每一次用户登录和注销的历史信息。
* wtmpx:扩展的wtmp。
* vold.log:记录使用外部介质出现的错误。
* xferkig:记录ftp的存取情况。
* sulog:记录su命令的使用情况。
* acct:记录每个用户使用过的命令。 null18.2 UNIX/Linux系统安全分析 18.2.1 UNIX/Linux口令/帐号安全
UNIX/Linux系统的帐号和口令是入侵者最为重要的攻击对象,特别是超级用户root的口令,一旦root的口令泄露,则危及整个系统的安全。在UNIX/Linux中,口令信息保存在passwd和shadow文件中,这两个文件所在的目录是/etc。入侵者常利用各种方法来获取口令文件。例如,通过WEB CGI程序的漏洞来查看口令文件passwd。 null18.2.2 UNIX/Linux可信主机文件安全
在UNIX/Linux系统环境中,为了便于主机之间的互操作,系统提供了两个文件$HOME/.rhost和 /etc/hosts.equiv来配置实现可信主机的添加。当一台主机A信任另外一台主机B后,主机B的用户无需主机A的认证就可以从主机B登录到主机A。但是,这种简单的信任关系很容易导致假冒,如果可信主机文件配置不当的话,就难以避免地带来安全隐患。 null18.2.3 UNIX/Linux应用软件漏洞
UNIX/Linux平台的应用软件安全隐患日益暴露,特别是常用的应用软件包,例如Sendmail和BIND,这些安全隐患常常导致系统被非授权访问、非法滥用等。早期的“小莫里斯”网络蠕虫就是利用Sendmail漏洞来传播的。 null18.2.4 UNIX/Linux的SUID文件安全
在UNIX/Linux中,SUID文件是指被设置成可以带有文件拥有者的身份和权限被执行的可执行文件。因为许多系统安全漏洞存在于SUID文件中,所以SUID文件已成为系统安全的重大隐患。 null18.2.5 UNIX/Linux的恶意代码
同Windows系统相比较,UNIX系统的计算机病毒危害少一些,但仍然存在,其他针对UNIX系统的网络蠕虫、特洛伊木马、rootkit也时有报道。例如,最早的网络蠕虫就是在UNIX系统中爆发的。 null18.2.6 UNIX/Linux文件系统安全
文件系统是UNIX/Linux系统安全的核心。在UNIX/Linux中,所有的资源都被看作文件。UNIX/Linux文件安全是通过“9 bit”控制的,每个文件有三组权限,一组是文件的拥有者,一组是文件所属组的成员,一组是其他所有用户。文件的权限有:r(读)、w(写)、x(执行)。但是,如果这种控制操作设置不当,就会给系统带来危害。例如,假设/etc/shadow文件允许任何人可读,就会导致口令信息泄露。 null18.2.7 UNIX/Linux网络服务安全
在UNIX/LINUX系统中,系统提供许多网络服务,例如finger、R-命令服务等,虽然这些服务能够给工作带来方便,但是也造成系统存在安全隐患。例如,通过finger服务可以获取远程UNIX/Linux主机的信息,如下所示:
$ finger 0@victim.host
alice ??? pts/2 Mon 17:18 some.place
bob ??? pts/4
xxx.xxx.xxx.xxx
...... null18.2.8 UNIX/Linux系统程序漏洞
入侵者一般通过普通帐号进入UNIX/Linux系统, 然后再利用系统的程序漏洞提升权限。下面就是利用SunOS 5.5的eject程序漏洞获取超级用户权限的例子:
$ telnet victim.host 登录主机
Connecting to host victim.host...Connected
UNIX(r) System V Release 4.0 (ox)
login: bob
Password:[bob123] 猜测弱口令 nullLast login: Mon May 17 17:18:00 from some.place
Sun Microsystems Inc. SunOS 5.5 Generic November 1995
ox%
ox1% cd /tmp; mkdir .X12; cd .X12
ox1% cat eject.c source file
…….
ox1% gcc eject.c -o ej
ox1% ./ej 缓冲区溢出攻击
Jumping to address 0xdffff678 B[364] E[400] SO[400]
# id
uid=0(root) gid=1(other) 获得超级权限 null18.3 UNIX/Linux系统安全增强方法和流程 18.3.1 UNIX/Linux系统安全增强方法
同Windows系统的安全增强一样,目前,常见的UNIX/Linux系统的安全增强方法有下面几种:
(1) 给安全漏洞打补丁。
(2) 停止不必要的服务。
(3) 升级或更换软件包。
(4) 修改系统配置。
(5) 安装专用的安全工具软件。 null18.3.2 UNIX/Linux系统安全增强基本流程
同Windows系统安全增强类似,UNIX/Linux系统安全增强也是一件繁琐的事情,其安全增强基本流程如图18-2所示。 null图18-2 UNIX/Linux系统安全增强基本流程图 null 由图18-2所知,UNIX/Linux系统安全加固的步骤如下:
第一步,确认系统的安全目标。实际上,系统的安全目标就是用户根据系统的运行业务而期望的安全要求,包括系统的保密性、系统的完整性、系统的可用性、系统的可控制性、系统的抗抵赖性。
第二步,安装最小化UNIX/Linux系统。这一步的任务就是根据系统所要完成的业务,选择合适的安装包,减少不需要的软件包,以减少安全隐患。 null 第三步,利用UNIX/Linux系统自身的安全机制,配置安全策略,主要有用户及口令、主机信任、文件访问、网络服务、系统审计等。
第四步,在UNIX/Linux系统自身的安全机制不行的情况下,利用第三方软件包来增强系统安全,例如用SSH来替换Telnet。
第五步,利用系统安全测试工具,检查UNIX/Linux系统的安全策略的有效性或系统的安全隐患。这些常用的安全工具有端口扫描nmap、文件安全配置检查COPS、口令检查工具crack等。 null 第六步,根据系统安全测试的结果,重新调整安全策略或安全措施。
第七步,在系统安全检查通过后,UNIX/Linux系统开始正常运行。这时,系统需要不定期进行安全监控,包括进程监控、用户监控、网络连接监控、日志分析等,通过安全监控来保持系统安全。 null18.4 UNIX/Linux系统安全增强技术 18.4.1 安装系统补丁软件包
及时从应急响应安全站点(如www.cert.org)获取UNIX/Linux系统漏洞公布信息,并根据漏洞的危害情况,给系统安装补丁包。同时,在安装操作系统补丁前,必须确认补丁软件包的数字签名,检查其完整性,保证补丁软件包是可信的,以防止特洛伊木马或恶意代码的攻击。在Linux中,可以用md5sum检查工具来判断补丁软件包的完整性。 null18.4.2 最小化系统网络服务
最小化配置服务是指在满足业务的前提条件下,尽量关闭不需要的服务和网络端口,以减少系统潜在的安全危害。实现UNIX/Linux网络服务的最小化,具体安全要求如下:
* inetd.conf的文件权限设置为600。
* inetd.conf的文件属主为root。
* services 的文件权限设置为644。
* services的文件属主为root。
* 在inetd.conf中注销不必要的服务,比如finger 、echo、chargen、 rsh、rlogin、tftp服务。
* 只开放与系统业务运行有关的网络通信端口。 null18.4.3 设置系统开机保护口令
在UNIX/Linux系统中,用户可以通过特殊的组合键而无需提供用户名和口令,就能以单用户身份进入系统。因此,针对这种威胁,一方面要尽量避免入侵者物理临近系统,另一方面要设置系统开机保护口令,阻止入侵者开机,从而达到保护系统的目的。开机保护口令由BIOS程序设置实现。当系统启动时,BIOS程序将提示用户输入的密码。 null18.4.4 弱口令检查
UNIX/Linux系统中的弱口令是入侵者进行攻击的切入点。一旦口令被入侵者猜测到,系统就会受到极大的危害。因此,针对弱口令安全隐患,系统管理员通过口令破解工具来检查系统中的弱口令,常用的口令检查工具是John the Ripper。
John the Ripper是一个快速的口令破解工具,主要针对UNIX下的弱口令,支持的平台有UNIX、DOS、Linux、Windows。下面举例说明应用Jonh工具破解UNIX弱口令的过程。在命令行方式下键入John,可显示它的使用方法,如图18-3所示。John提供了多种参数模式来破解口令。可选的参数有: null * -single:简单破解模式。
* -wordfile:FILE -stdin:字符清单模式,从文件或标准输入中读取字符串。
* -Rules:应用字符清单模式时的使能规则。
* -incremental[:MODE]:已选定破解模式的增强方式。
* -external:MODE:扩展模式或是字符过滤。
* -restore [:FILE]:继续上次被中断的工作。Jonh的工作中途被中断后,当前解密的进度存放在Restore文件中,可将Restore拷贝成一个新文件。如果参数后不带文件名,则John默认使用Restore文件。 null * -makechars:FILE:制作字符表,如果指定的文件存在,则会被覆盖。
* -show:显示已经破解的密码。
* -test:测试本机上运行John破解密码的速度。
* -users:[-]LOGIN|UID[...]:只破解指定的用户,如root。
* -groups:[-]GID[...]:只破解指定组里的用户。
* -shells:[-]SHELL[...]:只破解能用shell的用户。
* -salts:[-]COUNT:只破解用户名大于COUNT的帐号。
* -format:NAME:指定破解密码格式名。密码格式名有DES、BSDI、MD5、BF、AFS、LM。
* -savemem:LEVEL:启用内存保存,保存层次有1到3三层。 null图18-4 应用John工具的口令破解过程 null18.4.5 禁用默认帐号
一些UNIX/Linux系统带有默认帐号,这些默认帐号的口令又是为大多数人所知,极可能成为攻击者进入系统的后门,因而留在系统中极为危险。因此,对这些默认帐号最好的安全处理方式是禁用,或者更改口令。 null18.4.6 用SSH增强网络服务安全
在UNIX/Linux系统中,一些网络服务在设计时就缺乏安全考虑,存在安全缺陷,易使系统受到侵害。例如,远程用户Telnet登录传送的帐号和密码都是明文,使用普通的sniffer软件就可以截获这些明文信息。而且,系统认证强度小,容易受到重放和完整性攻击。与Telnet相同,ftp有相同的安全问题。目前,针对Telnet、ftp的安全,一般采用SSH (Secure Shell)来增强,SSH提供认证、加密等安全服务,可以在两台或多台主机之间构造一条加密通道,保证通信安全。 null18.4.7 利用tcp_wrapper增强访问控制
tcp_wrapper是Wietse Venema开发的一个可用于各种UNIX平台的免费软件。tcp_wrapper正逐渐成为一种标准的UNIX安全工具,成为UNIX守护程序inetd的一个插件。通过tcp_wrapper,管理员可以设置对inetd提供的各种服务进行监控和过滤。 null18.4.8 构筑UNIX/Linux主机防火墙
目前,支持UNIX/Linux系统的防火墙软件包有ipchains、iptables以及netfilter。利用这些防火墙软件包,UNIX/Linux系统可以过滤掉不需要的通信,而且可以从网络上限制远程访问主机,从而减少系统受到的侵害。 null18.4.9 使用Tripwire或md5sum完整性检测工具
当建立新的UNIX/Linux系统后,应记录所有系统文件的硬件和软件信息,并形成一个系统文件基准信息库,以便日后检查系统文件的完整性变化,避免恶意程序的植入和修改。利用Tripwire或md5sum软件安全工具可以发现篡改的文件。
* Tripwire是最为常用的开放源码的完整性检查工具,它能生成目标文件的完整性标签,并能周期性地检查文件是否被更改。
* md5sum是文件完整性检查的有利工具,利用它可以方便地创建长度为128位的文件指纹信息,也可以检查文件是否被修改过。 null18.4.10 检测LKM后门
UNIX/Linux系统一般都支持LKM(Loadable Kernel Module)功能,但是留下了一个安全隐患,就是入侵者可编写可加载内核模块,例如rootkit,从而造成很大的系统危害性。针对LKM后门危害,除了利用完整性检查工具外,还可利用专用安全检查工具,例如kstat、chkrootkit、rootkit hunter。 null18.4.11 系统安全监测
UNIX/Linux系统的安全是动态的,对运行的系统进行实时监控有利于及时发现安全问题,做出安全应急响应。针对UNIX/Linux系统的安全监测,常用的安全工具有netstat、lsof、snort等。 null18.5 Linux安全增强实例 1.禁止访问重要文件
对于系统中的某些关键性文件,如inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。
首先改变文件属性为600:
#chmod 600 /etc/inetd.conf
保证文件的属主为root,然后还可以将其设置为不能改变:
#chattr +i /etc/inetd.conf
这样,对该文件的任何改变都将被禁止。
只有root重新设置复位标志后才能进行修改:
#chattr -i /etc/inetd.conf null 2.禁止不必要的SUID程序
SUID可以使普通用户以root权限执行某个程序,因此应严格控制系统中的此类程序。找出root所属的带s位的程序:
#find /-type f \ (-perm -04000 -o -perm -02000 \) -print|less
禁止其中不必要的程序:
#chmod a-s program_name null 3.为LILO增加开机口令
在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。具体设置如下:
boot=/dev/had
map=/boot/map
install=/boot/boot.b
time-out=60 #等待一分钟
promp
default=linux
password=
#口令设置 nullimage=/boot/vmlinuz-2.2.14-12
label=linux
initrd=/boot/initrd-2.2.14-12.img
root=/dev/hda6
read-only
此时需注意,由于在LILO中口令是以明码方式存放的,因此还需要将lilo.conf的文件属性设置为只有root可以读写:
# chmod 600 /etc/lilo.conf
当然,还需要进行如下设置,使lilo.conf的修改生效:
# /sbin/lilo -v null 4.设置口令最小长度和最短使用时间
口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度至少为8。为此,需修改文件/etc/login.defs中的参数PASS_MIN_LEN。同时应限制口令的使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS。 null 5.限制远程访问
在Linux中可通过/etc/hosts.allow和/etc/hosts.deny这两个文件允许和禁止远程主机对本地服务的访问。通常的做法是:
(1) 编辑hosts.deny文件,加入下列行:
#Deny access to everyone.
ALL:ALL@ALL
则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许。 null (2) 编辑hosts.allow文件,可加入下列行:
#Just an example:
ftp:202.84.17.11 xinhuanet.com
则将允许IP地址为202.84.17.11和主机名为xinhuanet.com的机器作为Client访问FTP服务。
(3) 设置完成后,可用tcpdchk检查设置是否正确。 null 6.用户超时注销
如果用户离开时忘记注销帐户,则可能给系统安全带来隐患。可修改/etc/profile文件,保证帐户在一段时间没有操作后,自动从系统注销。
编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行:
TMOUT=600
则所有用户将在10分钟无操作后自动注销。 null 7.注销时删除命令记录
编辑/etc/skel/.bash_logout文件,增加如下行:
rm -f $HOME/.bash_hsitory
这样,系统中的用户在注销时都会删除其命令记录。如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。 null18.6 UNIX/Linux系统常见漏洞与解决方法 18.6.1 空口令或弱口令的帐号
1.漏洞描述
易猜的口令或缺省口令是一个很严重的问题,但一个更严重的问题是有的帐号根本没有口令。实际上,所有使用弱口令、缺省口令和没有口令的帐号都应从你的系统中被清除。另外,很多系统有内置的或缺省的帐号,这些帐号在软件的安装过程中口令通常是不变的。攻击者通常查找这些帐号。因此,所有内置的或缺省的帐号都应从系统中移出。 null 2.漏洞解决方法
(1) 所有没有口令的帐号应被删除或加上一个口令,所有弱口令应被加强。
(2) 用户的口令在被修改后,应加以确认。可以用程序来拒绝任何不符合你安全策略的口令。UNIX用户可利用Npasswd工具保证修改口令时,口令的长度和组成使得破解非常困难。
(3) 使用口令控制程序,以保证口令经常更改,而且旧口令不可重用。如果使用的口令有有效期,请确认用户在口令过期之前收到警告并有足够的时间改变口令。 null (4) 使用户了解为什么以及怎样去选择强壮的口令。
(5) 另一个避免没有口令或弱口令的方法是采用其他认证手段,例如口令产生令牌(password-generating tokens)或生物尺度(biometrics)。如果没有办法解决弱口令的问题,可以考虑使用其他的认证手段。 null18.6.2 r命令
1.漏洞描述
在UNIX/Linux系统环境里,相互信任的关系到处存在,特别是在系统管理方面。公司里经常指定一个管理员管理几十个区域甚至上百台机器。管理员经常使用信任关系和UNIX的r命令从一个系统方便地切换到另一个系统。r命令允许一个人登录远程机器而不必提供口令。取代询问用户名和口令,远程机器认可来自可信赖IP地址或主机名的任何人。如果攻击者获得了可信任网络里的任何一台机器,攻击者就能登录任何信任该IP的机器。null下面的r命令经常被用到:
(1) rlogin - remote login,远程登录。
(2) sh - remote shell,远程shell。
(3) rcp - remote copy,远程拷贝。null 2.漏洞解决方法
(1) 不允许以IP为基础的信任关系,不允许使用 r 命令。基于IP地址的认证太容易被欺骗。认证应该基于更安全的方式,例如tokens或者至少是口令。
(2) 如果使用r命令,也要限制它的登录范围,要极其小心地控制可触及的网络范围。永远不要再把“.rhost”文件放在“root”用户下。可以经常使用“find”命令来查找由用户生成的任何“.rhost”文件。
(3) 使用单点登录系统来管理UNIX/Linux主机。 null18.6.3 RPC 服务缓冲区溢出
1.漏洞描述
远程过程调用(Remote procedure calls ,RPC)允许一台机器上的程序执行另一台机器上的程序。它们被广泛地用来提供网络服务,如NFS文件共享和NIS。由于RPC缺陷导致的弱点正被攻击者广泛地利用着。有证据显示,1999年到2000年间的大部分分布式拒绝服务型攻击都是在那些通过RPC漏洞被劫持的机器上执行的。在Solar Sunrise事件中取得广泛成功的对美国军方系统的攻击就是通过利用国防部几百个系统中的一个RPC缺陷来实现的。受影响的系统包括UNIX的大部分版本。 null 2.漏洞解决方法
(1) 只要允许,在可以从Internet 直接访问的机器上关闭或删除这些服务。 null(2) 在你必须运行该服务的地方,安装最新的补丁:
Solaris补丁:
http://sunsolve.sun.com/
IBM AIX 补丁:
http://techsupport.services.ibm.com/support/rs6000.support/downloads
http://techsupport.services.ibm.com/rs6k/fixes.html
SGI补丁:
http://support.sgi.com/
Compaq (Digital Unix) 补丁:
http://www.compaq.com/support null (3) 定期搜索供应商的补丁库,查找最新的补丁并立刻安装。
(4) 在路由器或防火墙处关闭RPC 端口 (port 111) 。
(5) 关闭 RPC“loopback”端口及32770~32789 (TCP and UDP)。null18.6.4 缺省SNMP字串
1.漏洞描述
SNMP (Simple Network Management Protocol,简单网络管理
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
)是管理员广泛使用的协议,用来管理和监视各种各样与网络连接的设备,这些设备从路由器到打印机到计算机。SNMP使用没有加密的公共字符串作为惟一的认证机制。不仅如此,绝大部分SNMP设备使用的公共字符串还是“public”的,只有少部分“聪明”的设备供应商为了保护敏感信息而把字符串改为“private”。攻击者利用这个SNMP中的漏洞可以远程重新配置或关闭你的设备。被监听的SNMP通信能泄露很多关于网络结构的信息以及连接在网络上的设备。入侵者可以使用这些信息找出目标和谋划他们的攻击。受影响的系统包括所有的UNIX 系统和网络设备。 null 2.漏洞解决方法
(1) 如果不是一定需要SNMP,就关闭它。
(2) 如果一定要使用SNMP,对通信团体名(community names)使用和口令一样的策略,确保它们很难被猜测和破解,并定期改变。
(3) 使用snmpwalk命令验证和检验通信团体名(community names)。
(4) 除非必须从本地网外部访问和管理设备,否则在边界路由器或防火墙处过滤掉SNMP (Port 161/UDP)。
(5) 只要可能,设置MIB(管理信息结构)为只读。 null18.6.5 Sendmail
1.漏洞描述
Sendmail是在UNIX和Linux上使用得最多的发送、接收和转发电子邮件的程序。Sendmail在Internet上的广泛应用使它成为攻击者的主要目标。过去的十几年里发现了Sendmail的若干个缺陷。CERT在1988年指出了Sendmail中一个易受攻击的脆弱性,其中最为常用的是攻击者可以发送一封特别的邮件消息给运行Sendmail的机器,Sendmail会根据这条消息要求受劫持的机器把它的口令文件发给攻击者的机器(或者另一台受劫持的机器),这样口令就会被破解掉。受影响的系统包括Unix和Linux的大部分版本。 null 2.漏洞解决方法
(1) 更新Sendmail到最新版本或安装相应的补丁文件。
(2) 在非邮件服务器和代理服务器上不要在daemon 模式下(关闭 the -bd 开关) 运行Sendmail。
(3) 用Qmail代替Sendmail。 null18.6.6 LPD
1.漏洞描述
UNIX中的in.lpd为用户提供了与本地打印机交互的服务。LPD监听TCP 515端口的请求。程序员在写代码时犯了一点错误,使得当打印工作从一台机器转到另一台机器时会导致缓冲区溢出。如果在较短的时间里接受了太多的任务,后台程序就会崩溃或者以更高的权限运行任意的代码。受影响的系统包括Solaris 2.6 for SPARC、Solaris 2.6 x86、Solaris 7 for SPARC、Solaris 7 x86 、Solaris 8 for SPARC、Solaris 8 x86以及许多的Linux版本。 null 2.漏洞解决方法
除了去SUN网站下载补丁,还可以采取如下的解决方法:
(1) 如果对远程的打印处理不是必要的,那么在 /etc/inetd.conf 中关闭打印设备。
(2) 打开 noexec_user_stack,可以在 /etc/system 文件里加入下面的行,然后重启来打开该功能:
set noexec_user_stack = 1
set noexec_user_stack_log = 1
(3) 限制到 port 515/tcp 的连接。
(4) 配置安装 tcpwrappers,它是tcpd-7.6 软件包的一部分,可以从以下地址下载:
http://www.sun.com/solaris/freeware.html#cd null18.6.7 sadmind and mountd
1.漏洞描述
Sadmind允许远程登录到Solaris系统进行管理,并提供了一个系统管理功能的图形用户接口。Mountd 控制和判断到安装在UNIX主机上的NFS的连接。由于软件开发人员的错误导致的这些应用的缓冲区溢出漏洞能使攻击者获取root的存取权限。受影响的系统包括UNIX的多个版本。 null 2.漏洞解决方法
(1) 只要有可能,在直接与Internet连接的机器上关闭或者删除sadmind 和 mountd。
(2) 安装最新的补丁:
Solaris补丁下载地址:
http://sunsolve.sun.com/
IBM AIX补丁下载地址:
http://techsupport.services.ibm.com/support/rs6000.support/downloads
http://techsupport.services.ibm.com/rs6k/fixes.html nullSGI补丁下载地址:
http://support.sgi.com/
Compaq (Digital Unix)补丁下载地址:
http://www.compaq.com/support null(3) 使用基于host/ip的输出清单。
(4) 只要可能,把输出文件系统设置成只读或者没有suid。
(5) 使用nfsbug扫描漏洞。 null18.7 本 章 小 结 本章系统介绍了UNIX/Linux系统平台的安全技术,包括安全模型、安全机制等,分析了UNIX/Linux系统平台面临的安全问题,例如空口令、R命令、缓冲区溢出等。然后阐述了UNIX/Linux系统平台的安全增强方法以及基本操作流程,并以Linux为例,说明安全增强技术方法的实际应用。最后,本章列举了UNIX/Linux系统中常见的漏洞和解决措施。 null 本章思考与练习 1.试分析UNIX/Linux系统的安全问题。
2.UNIX/Linux系统提供了哪些安全机制?
3.如何为UNIX/Linux系统设置一个安全的口令?
4.如何对UNIX/Linux系统进行安全增强?有哪些增强安全技术?
5.为什么说R命令不安全,如何解决?
6.为什么默认帐号会有问题,如何处理?