深度剖析 Qmail邮件系统的安全分析和改进研究(1)


本文首先指出了著名的开源邮件系统Qmail在安全方面存在的问题,并借用UNIX系统上现有的安全工具对Qmail现存的安全隐患加以解决,接着介绍了一种比Base64编码效率更高的Base91编码技术对邮件编码进行改进。最后利用实验室的平台基本实现了该高速、简洁、安全的邮件系统。

引言

邮件服务是Internet中使用率仅次于WWW的服务,一个邮件服务器主要包括三个主要的功能:邮件传输代理MTA(Mail Transport Agent),邮件分发代理MDA(Mail Delevery Agent),邮件用户代理MUA(Mail User Agent)。前两者是核心模块,负责邮件收发和处理。

Qmail是全球安装使用量仅次于Linux/Unix上缺省安装的的Sendmail的邮件服务器软件,到目前为止Qmail的MTA依然是世界上转发速度最快的邮件传输代理[1],Qmail几乎兼容所有的Linux/Unix类操作系统。由于在Linux/Unix类型的操作系统中,Sendmail被缺省安装,所以其使用量在该领域位居首位,但是其配置烦琐,而且仅仅支持单文件(/var/spool/mail/$USER)方式存储用户所有邮件,导致邮件收发仅能串行处理,效率低下,而且一旦存取该文件出错,用户的全部邮件将丢失。而Qmail支持以目录的形式管理用户的邮件[3]($HOME/Maildir),在数据安全和存取速度上比前者都有明显的优势。Qmail的整体模块如图1[2]所示,主要由MTA、MDA、MUA三大部分组成。

由于体系结构比X.400 MHS(Message Handling System)体系简单,而且是基于TCP/IP协议,SMTP(Simple Mail Transfer Protocol)已成为事实上的邮件协议标准,由于该协议设计过于简单,其报文在网络上用明文方式传输,给网络监听者带来了极大的方便,Qmail系统的MTA协议用的就是SMTP,邮件在传输途中很容易被截获。

目前的Internet上垃圾、反动、病毒邮件泛滥,Qmail在设计时对这三个方面的安全问题考虑不足。

本文针对上述的问题,结合新的编码技术和UNIX系统现有的一些安全工具对其加以研究、改进。

1 问题的提出

垃圾邮件、反动邮件和病毒邮件是目前对所有邮件用户最大的威胁。从框架图来看,qmail的MTA和MDA中没有任何对邮件的检测和过滤的措施,无疑对上述安全问题没有任何防护能力。

1.1针对垃圾邮件

Qmail缺省不支持对Smtp用户的认证,这就是说,任何能访问该Qmail服务器的用户均能利用它来向任何地址发送邮件,对于那些想利用邮件列表发布邮件广告的商人,或想借他人主机发送大量攻击性邮件的黑客来说,其可以被轻而易举地被拿来直接达到目的。事实统计90%的垃圾邮件是从那些打开了开放性转发(Open Relay)权限的服务器发出的。

1.2针对反动、色情邮件等非法邮件

反动、色情邮件主要是指邮件的内容中有违反国家法律的反动信息和黄色信息,这些信息通常也是使用邮件列表进行传播,其性质较商业广告垃圾邮件恶劣,对社会产生很大的负面影响。Qmail没有任何基于内容的过滤模块,不能拦截该类邮件。

1.3针对病毒邮件

病毒邮件是指携带了病毒体的邮件报文,该类邮件一般通过附件来携带病毒文件,如果要过滤该类恶意邮件,要求MTA、MDA、MUA三个模块中至少有一个模块拥有病毒查杀模块,Qmail设计中没有考虑到这一点,这也是Qmail系统存在的一大安全问题。

1.4针对报文的明文传输

基于SMTP协议的Qmail直接进行邮件收发对报文仅仅进行了简单的编码,对于邮件体甚至没有进行任何编码,利用网络窃听工具可以轻易获取邮件内容,图2是用著名的网络窃听器ethereal截获的邮件报文,从中我们知道这封邮件收发人的邮件地址、发送使用的MDA、编码方式、邮件体的类型、和信件的所有内容。如果有附件,我们可以根据已知的编码方式对其进行反编码获得最后的原始文件,所以毫无保密性可言。

1.5针对用户的管理

Qmail设计成和操作系统共用用户,UNIX操作系统的用户数据库是一个文件,缺省为/etc/passwd文件,随之带来的问题就是添加邮件的用户必须同时添加一个系统用户,因为对于服务器来说多一个系统用户就等于系统多一个可以被用来入侵的途径,就等于要多耗费一个用户配置文件的存储空间,这将主要导致安全隐患和系统资源的浪费。

1.6针对访问权限的控制

Inetd是UNIX操作系统用来调用一些基本服务如Ftp、Telnet的特殊守护进程,Smtp和Pop(Post Office Protocol)协议也可以用其来启动,Qmail在没有第三方工具的支持时仅能使用Inetd来调用。随Inetd带来的问题就是不能控制访问邮件服务的IP地址的范围,在已知非法用户或恶意攻击者的IP地址的情况下,不能拒绝对他们提供服务,对服务器安全不利。

2 现有的基于UNIX的安全工具

UNIX系统下有很多开放源代码的软件包,他们一般由很多程序员自发组织进行开发。在安全领域,已有很多流行软件包可以解决Qmail存在的大部分安全问题。

2.1密码认证工具

2.1.1 checkpassword

是一个基于/etc/passwd进行认证的工具,第三方的程序可以将其作为和系统用户数据库进行交互的代理,对系统用户进行认证操作。

2.1.2 cmd5checkpw[4]

cmd5checkpw是一个和checkpasswd兼容的支持CRAM-MD5算法进行认证的工具。只要支持checkpasswd进行系统用户认证的程序均可以使用其来支持CRAM-MD5算法对数据进行信息摘要,防止密码被盗取。

2.1.3 vchkpw

vchkpw是Vpopmail工具集中一个认证工具,

2.1.4 qmail-Smtp-auth[5]

qmail-Smtp-auth是Mrs.Brisby开发的让Qmail支持Smtp认证的补丁程序的升级版本,后者仅仅支持基于LOGIN方式的认证,前者加入PLAIN和CRAM-MD5认证机制并且还支持认证方法的后续添加。

2.2传输过程的加密工具

2.2.1 OPENSSL[6]

OPENSSL是由全世界自愿者开发的开放源代码的SSL(Secure Sockets Layer)协议的实现工具集,其支持SSL v2/v3和TLS v1(Transport Layer Security)协议并拥有一个非常强大的密码库。

SSL[7]是一个用将用户数据用非对称加密方法加密后在互联网上进行安全传输的协议,使用该协议能很好地杜绝窃听者用嗅探器抓取信息明文的事件发生。

2.3访问控制工具

2.3.1 Ucspi-tcp[8]

Ucspi-tcp是一个基于UNIX的用来给网络应用程序提供安全TCP连接的程序,主要包括服务模块(tcpserver)和客户模块(tcpclient)两个部分,其中在服务器模块中具有访问控制特性,此特性允许对客户端的访问权限进行限制。

2.4用户管理工具

2.4.1 vpopmail

Vpopmail是UNIX上的一个创建和管理邮件虚拟域(Virtual Domain)的工具包,包括管理虚拟域、管理用户的工具和密码认证模块,它可以使一个邮件服务器提供多种“@domain”给用户选择,并且支持用数据库来存储和认证用户。

2.4.2 Mysql数据库[9]

Mysql是一个全世界使用最多的开源数据库软件,其运行方式是Server-Client方式,目前基于UNIX的大型应用程序均对其支持,包括前面提到的Vpopmail工具包。


相关内容