LINUX是一种当今世界上广为流行的免费操作系统,它与UNIX完全兼容,但以其开放性的平台,吸引着无数高等院校的学生和科研机构的人员纷纷把它作为学习和研究的对象。这些编程高手在不断完善LINUX版本中网络安全功能。下面介绍Linux的Internet安全漏洞与防范措施,希望对大家有一定的帮助。
在LINUX的Internet安全中,主要包括的就是FTP安全、电子邮件安全、Telnet安全、Web服务器安全和安全Web协议。
FTP安全
对LINUX网络来说能实现传输文件十分重要,因此最常用的工具和协议是文件传输协议(FTP)。在这里简单介绍一下FTP安全。文件传输协议是把文件从一个系统传输到另一个系统的标准方法,其目的是:
①促进文件的共享(包括计算机的程序和数据);
②鼓励通过程序间接或隐含使用远程计算机;
③使用户感觉不到主机间文件存储系统的差别;
④可靠、高效地传输数据。
但是,FTP有几个关键性的安全缺陷:
FTP使用标准的用户名/口令的认证方法。这就使服务器不能可靠地确定一个用户是否他所声称的那个人。
默认情况下,口令以明文方式传输。这就使攻击者通过电子窃听获得口令。
FTP会话没有加密因此没有隐蔽性。
FTP易受的攻击有:
FTP的跳"(bounce)"攻击。
文件许可权限错误。
SITE EXEC漏洞。
FTP"跳"攻击的目标是配置为拒绝来自指定IP地址(或IP地址掩码)连接的主机。通常一个入侵者的IP地址正好在限制区域,因此他不能访问FTP服务器的目录。为了克服这种限制,入侵者使用另一台机器来访问目标机器。
为了实现这种方法,入侵者向中介FTP目录写一个文件,该文件包含有连接到目标机器并获得一些文件的命令。当该中介连接目标主机时,使用它自己的地址(而不是入侵者的地址)。因此,目标主机信任该连接请求并返回要求的文件。
权限错误就是攻击者发现目标主机上错误的文件和目录权限获得特权甚至
根用户访问权来达到入侵的目的。
SITE EXEC漏洞就是在早期的wu-ftpd版本允许远程用户通过向21端口发起telnet会话获得shell。为了检查有没有该漏洞,启动一个与21端口的telnet对话并发出命令SITE EXEC。如果获得shell,就存在该漏洞。
FTP的安全措对于小型、封闭的、没有与Internet连接的网络(和没有同其它局域网环境相连)来说是足够了。但对广域网环境(尤其是与Internet连接)的网络环境来说,普通FTP实在是不安全,应使用SSLftp。SSLftp实现具有SSL的FTP客户和服务器。SSL为安全套接层,是采用RSA和DES认证和加密以及MD5会话完整性检查的一种第三层协议和API函数。
如同telnet一样,FTP(或类似FTP的服务)在LINUX网络中使用最多,但正如所指明的那样,FTP不真正安全。如果打算小范围使用普通FTP,应尽量严格地设置访问权限并记录任何事。这至少可以确保可以控制哪个主机能访问你的FTP服务并且当出了问题时有最近的审计跟踪。
||||||电子邮件安全
今天使用最广的E-mail传输协议是简单邮件传输协议(SMTP)。每天,SMTP用于传输成千上万的E-mail消息到世界各地。
SMTP服务器工作规程很少:
接收进来的消息。
检查消息的地址。
如果消息的地址为本地地址,保存消息以便检索。
如果是远程地址,转发该消息。
SMTP服务器功能同包路由器一样,除了SMTP服务专用于邮件。大部分SMTP服务器可以按需要存储以及转发消息。
SMTP服务器在两个不同任务上提出了安全要求:
保护服务器以免被攻破。必须给服务器加上防护盔甲防止外部进攻,如果外部进攻成功会使进攻者未经授权便能进入你的系统。
保护SMTP服务以免错误使用,例如外人利用你的电子邮件服务器发送假的邮件和垃圾。
在这当中第二项问题更为可怕。有些人不假思索地使用未受保护的SMTP服务器来向Internet邮件帐号转发成千份的广告。如果他们使用了你的机器就会使网络负担过重。
除非特别指明,否则LINUX在安装时会把sendmail作为你的邮件传输代理。可以用telnet到端口25来观察确定sendmail的版本。输出结果的例子如下:
[jray@pointy jray] $ telent poisontooth.com 25
Trying 24.93.119.226…
Conneted to poisontooth.com.
Escape character is
220 pointy. poisontooth.com ESMTP Sendmail 8.9.3/8.9.3
→Sat, 10 Jul 1999 16:27:14-0400
这里可以看出pointy.poisontooth.com正在运行sendmail/8.9.3。
入侵者对sendmail发起攻击主要是因为:
sendmail是公共服务,一旦它运行,任何人都能连接和使用它。
sendmail通常以root身份运行。因此如果入侵者发现了一个可利用的漏洞,就可获得优先级高的访问权限。
sendmail非常难配置,入侵者因此假设你会在安装中出问题(通常都成功)。
||||||以下是一些典型的sendmail攻击:
首先是MIME缓冲溢出漏洞。这种攻击不影响sendmail本身,而是sendmail发送邮件的客户。在这里,sendmail是工具而不是目标。计算机紧急反应小组是这样描述该攻击的:
攻击者向一个脆弱的系统发送一个精心设计的邮件消息,在某种情况下,攻击者选择的代码会在该系统上执行。另外,攻击者可以是脆弱的邮件程序突然崩溃。根据邮件客户正在运行的操作系统以及有问题的邮件客户程序的用户权限,攻击都可以使整个系统崩溃。如果一个权限高的用户用一个容易受攻击的邮件用户代理来阅读邮件,那么攻击者就可以获得进入系统的管理权限。
再来看一下HELO缓冲溢出。在早于sendmail8.9的版本中,攻击者可以利用HELO命令传送非正常长度的字符串来伪装自己的发起的地址。如果一个攻击者发送HELO后面有至少1024字节的abc,那么消息头会如下所示:
From attacker@attack.place.net Web Feb 5 22 31:51 1998
Received: from abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcab→abcabcabcabcabcabc
Date: Wed, 5 Feb 1998 12:32:22 +0300
From attacker@attack.place.net
非正常字符串隐藏了应正常显示发信者IP地址的信息。这种攻击方法,尽管不具危险,但攻击者可以利用它让sendmail转发邮件垃圾和创建难以跟踪的邮件。
还有口令文件/Root访问,这是一个更可怕的攻击,它影响的是sendmail8.8.4。本地用户可以利用链接来获得root访问。这种攻击方法依赖于sendmail在/var/tmp/dead.letter后保存未投递的消息。
1. 参考CA-98.10站点http://www.cert.org/advisories/CA-98.10.mime_buffer_overflows.htm。
所有用户都可对/var/tmp进行写操作,因此本地攻击者可在/etc/passwd和/var/tmp/dead.letter间创建一个硬链接。然后向sendmail服务器发送一个不能投递的消息。在该消息体内,攻击者插入可被加到口令文件的一个用户帐号。
当消息标记为不可投递,就会加到/var/tmp/dead.letter里面,而在/var/tmp/dead.letter有一个与/etc/passwd的硬链接。这就导致产生一个拥有Root权限的新系统帐号。
Sendmail作为一个突出并且访问频繁的服务器,经常是攻击的目标。最近的一个攻击方法集中在sendmail报头解析代码上的一个漏洞。通过创建有大量TO:报头的消息,进攻者可使服务器停止运行。这种攻击方法对sendmail8.9.2和更早的版本有效,因此连最近安装的sendmail也受到影响。
以上就是常用的对sendmail的攻击,因为sendmail本身安装不方便,还有很多安全漏洞,用户也可选择更好的工具Qmail。
||||||Telnet安全
不象许多其他服务,telnet(或一个类似服务)是绝对需要的。用telnet可以很容易完成许多工作,如果不用telnet则这些工作会难以完成。除非有更好的理由,否则不应该允许有公共telnet或shell访问。
普通telnet有很多安全问题,一个值得LINUX用户注意的攻击是传递环境变量攻击。过去几年里,安全专家已认识到这是一个问题。因此,开发者设计了setuid 和setgid程序来忽略敏感的环境变量。例如LD_LIBRARY_PATH。
对telnet还有以下攻击:
对于早期LINUX一些版本,攻击者可以用telnet迫使内核转储,该转储会暴露已隐蔽的口令。[4]
在Red Hat Linux4.0,攻击者可以通过暴力强迫登录来判断有效用户名。在Red Hat Linux4.0中的telnet包可在连接时如果输入无效的用户名时切断该连接。但如果用户名有效而口令不正确,服务器会重新返回登录提示符用于重新登录。
虽然这些攻击很少发生,因为大多数telnet已经加强了对付这类攻击,但不
2.可访问http://www.hoobie.net/security/exploits/hacking/telnet_core.txt
意味着我们就可以使用标准telnet服务而不加强它的安全,因为telnet有几个严重缺陷:
口令没有加密,第三者可用嗅探器捕获到口令。
Telnet没有采用强用户认证。
Telnet不进行会话完整性检查。
Telnet会话没有加密。
以上都是可能被恶意人员利用的漏洞。因此,如果用户不愿意或不能使用Secure Shell就需要其它的安全telnet系统,常用的有deslogin,SSLTelnet等。
||||||Web服务器安全
保护Web主机安全首先就要去掉不必要的服务。去掉不必要的服务之前首先要明确的是:你要建立的是什么类型的主机。主机有三种类型:
Intranet Web主机--无Internet连接的主机,通常与一个局域网连接。
私人或外部Web主机--与Internet相连但只对非常有限的客户提供服务的主机。
公共或牺牲Web主机--知道或不知道的用户可以通过Internet,全天候公共访问的普通Web主机。
每种不同的主机类型就决定了要提供不同的服务,不需要的服务一律屏蔽掉。这是因为将运行的服务很可能会打开安全漏洞。对于要运行的服务,就要实施访问控制,可以使用TCPWrapper工具包,这个工具提供对远程服务基于模式匹配的访问控制,可以利用它禁止或允许对某些用户的服务。减少服务后,就应在Web服务器上建立访问控制和认证。Apache是在LINUX中最流行的Web服务器。为网络访问控制建立规则,就要用到以下命令:
#Controls who can get stuff from this server.
Order allow,deny
Allow from all
这些命令提供了三条控制通道,allow命令控制哪台主机可以连接,deny控制哪台主机不可以连接,order命令则控制allow/deny命令执行的顺序。通过这些命令可以明确允许授权主机和阻止未授权主机。
Apache的安全设置有很多选项,这些设置已足够严格,但是选项的不同配置方法都会引起安全问题。例如,ExecCGI选项,是选择是否允许CGI程序运行,CGI程序很不安全,所以,能不用执行CGI程序,就尽量不执行。还有别的选项会有不同的问题,安装时要注意。目前Apache除了提供基本类型认证,还支持使用MD5的基于摘要的加密认证。
安全Web协议
上文所提到的安全Shell是用来防止爱打听的用户(本地或远程)用嗅探器捕获系统口令,可以极大地增强内部网络安全。但是如果把LINUX系统作为一个电子商务服务器,就必须向客户提供从服务器外部的Web浏览器向服务器建立安全连接。
一般基于Web的通信有几个弱点:
HTTP没有提供加密机制,因此第三方可以在客户和服务器之间窃听通讯。
HTTP是一个无状态协议不保存有关用户的信息,因此不能证实用户的身份。
HTTP没有提供方法来认证正在进行的会话。因此不能判断是否有第三方窃听了会话。
为了解决这些缺陷,Netscape Communications开发了安全套接层协议SSL。
安全套接层是采用RSA和DES认证与加密以及MD5完整性检查而包装起来的方法。使用这些方法,SSL解决了基于Web通讯的三个问题:
在连接期间,客户和服务器定义和交换秘密密钥,该密钥用于加密传输的数据。因此,即使SSL的通讯可被窃听,由于经过加密于是难以破解。
SSL支持公开密钥加密,因此服务器可以使用公共方案如RSA和数字签名标准(DSS)来认证用户。
服务器可以使用消息摘要算法,如MD5和SHA来检验正在进行会话的完整性,因此SSL可以防止第三方劫持会话。
SSL通过两层和两个步骤保护数据。开始,客户和服务器进行握手(与TCP握手相同)。在这一过程中,它们交换密钥并在它们之间建立并同步一个加密状态。接下来,SSL获得应用数据(在记录层)并加密数据。然后,在接收端这一过程以相反的方式执行。这些性能使得SSL成为在所控制的服务器和未知用户之间进行安全电子商务交易的出色工具。