邮件服务器的安全解决方案

ZDNet软件频道 时间:2009-11-04 作者: | 比特网 我要评论()
本文关键词:反垃圾邮件 邮件服务器 邮件安全 Windows
 Sendmail作为免费的邮件服务器软件,已被广泛应用于Internet各种操作系统的服务器中。如:Solaris,HPUX,AIX,IRIX,Linux等等。随着互连网的普及,邮件服务器受攻击的机会也大大增加。目前互连网上的邮件服务器所受攻击有两类:一类就是中继利用(Relay),即远程机器通过你的服务器来发信,这样任何人都可以利用你的服务器向任何地址发邮件

  Sendmail作为免费的邮件服务器软件,已被广泛应用于Internet各种操作系统的服务器中。如:Solaris,HPUX,AIX,IRIX,Linux等等。随着互连网的普及,邮件服务器受攻击的机会也大大增加。目前互连网上的邮件服务器所受攻击有两类:一类就是中继利用(Relay),即远程机器通过你的服务器来发信,这样任何人都可以利用你的服务器向任何地址发邮件,久而久之,你的机器不仅成为发送垃圾邮件的帮凶,也会使你的网络国际流量激增,同时将可能被网上的很多邮件服务器所拒绝。另一类攻击称为垃圾邮件(Spam),即人们常说的邮件炸弹,是指在很短时间内服务器可能接收大量无用的邮件,从而使邮件服务器不堪负载而出现瘫痪。这两种攻击都可能使邮件服务器无法正常工作。因此作为一个校园网邮件服务器防止邮件攻击将不可缺少。

  目前对于sendmail邮件服务器,阻止邮件攻击的方法有两种。一种是升级高版本的服务器软件,利用软件自身的安全功能。第二种就是采用第三方软件利用其诸如动态中继验证控制功能来实现。下面就以sendmail V8.9.3为例,介绍这些方法。

  1.服务器自身安全功能

  (1)编译sendmail时的安全考虑

  要利用sendmail 8.9.3的阻止邮件攻击功能,就必须在系统编译时对相关参数进行设置,并借助相关的软件包。目前主要就是利用Berkeley DB数据库的功能,Berkeley DB包可以从相关站点上下载,并需要预先编译好。然后将Berkeley DB的相关参数写进sendmail的有关文件中。

  a.修改site.config.m4文件

  将编译好的Berkeley DB有关库文件路径加入到site.config.m4文件中,使sendmail编译后能够使用Berkeley DB数据库。例如:

  #cd $/sendmail-8.9.3/BuidTools/Site

  修改site.config.m4文件

  define (confINCDIRS, -I/usr/local/BerkeleyDB/include)

  define (confLIBDIRS, L/usr/local/BerkeleyDB/lib)

  b.修改sendmail.mc文件

  sendmail.mc是生成sendmail.cf的模板文件之一,要使sendmail具有抗邮件攻击功能还需在该文件中进行相关定义。主要包括以下几项:

  ......

  FEATURE(relay_entire_domain)

  FEATURE(ACCESS_DB)dn1

  FEATURE(blacklist_recipients)

  ......

  (2)相关文件的配置

  正确编译好sendmail是邮件服务器安全控制的基础,而真正的安全设置主要还是利用相关文件进行的。这种包含控制语句的文件主要是access和relay-domains。

  access是邮件安全控制的主要数据库文件,在该文件中可以按照特定的格式将需控制的域名、IP地址或目标邮件地址,以及相应的动作值写入,然后使用makmap命令生成access.db文件(#makemap hash access.db < access),从而使服务器允许或屏蔽邮件中继和邮件轰炸。access的格式如下:

  spam.com REJECT

  edu.cn OK

  hotmail.com DISCARD

  其中reject动作是拒绝接受从指定地址发来的邮件;ok是允许特定地址用户任意访问;relay允许通过本邮件服务器进行中转邮件;discard是将收到的邮件交给特定命令进行处理,例如:可以设定将收到的邮件丢弃,或者设定收到邮件后返回给使用者一条出错信息等等。

  Relay-domains文件是设定哪些域是该服务器可以中继的域,其格式为每个域占一行。如:

  ......

  CN

  EDU

  JP

  ......

  在服务器开始使用时建议将所有顶级域名加入其中,以后再根据安全需要对其进行修改,否则将会使pop3用户发送邮件时出现relay reject错误,而无法向没有加入的域名目标邮件地址发送邮件。

  3)版本号的修改

  对于一台邮件服务器,可以通过远程的25端口telnet命令来获取服务器的版本信息。如:“telnet sendmail服务器主机25”就可以查看sendmail的当前版本。为了防止一些恶意的查看版本信息操作,sendmail提供了可以对显示的版本进行修改的操作。

  在sendmail.cf文件中有一句“SmtpGreetingMessage=$j sendmail $V/$Z; $b”的语句,其中$V/$Z就是版本信息,正常情况下由该参数显示的版本信息为sendmail本身的版本。如果要设定成管理员给定的版本信息,只需将该参数改掉,然后加入你所希望的信息即可。例如:当把这句改成“SmtpGreeting Message=$j sendmail 0.0/0.0; $b”,重启sendmail服务,则sendmail的版本就会变成“sendmail 0.0”。从而达到隐蔽版本信息的目的。

  以上是sendmail 8.9.3本身带有的安全功能设置,通过这些安全设置可以大大加强服务器安全性能。但是在防止邮件中继和邮件炸弹的设置时,如何确定哪些目标地址是需阻止中继的,哪些又是允许中转的,似乎只能通过管理员对日志文件的分析和观测,或者待发现了安全问题后才能确定。因此这种安全控制还仅是事后控制,并且对相关文件修改后还必须重新启动服务器。如要实现事先动态安全控制还需要采用其他方法。

  2.动态中继验证控制

  DRAC(Dynamic Relay Authorization Control)动态中继验证控制是专门为邮件服务器设计的一个服务器端软件(http://mail.cc.umanitoba.ca/drac/index.html),它可以安装在一台SMTP服务器上,并同时为多个邮件服务器提供动态中继验证服务。DRAC主要通过自动获取和动态更新中继验证数据库中的信息来允许合法pop3或IMAP用户使用邮件服务器,从而有效地控制邮件炸弹和非法的邮件中继。DRAC的原理就是利用pop3或imap服务器固有的功能来获取用户名、密码和客户机IP地址等信息,并将这些信息及时映象到验证数据库中,供smtp服务器调用,同时在经过一段时间以后(缺省为30分种),其验证信息将自动失效,需要用户重新输入验证信息。这样不仅可以保证合法的pop3或imap用户能够正常使用邮件服务器,也可以阻止任何非注册用户(包括本地)利用邮件服务器来发送邮件。这种邮件安全控制常常被称为:“邮件服务之前的pop验证”(POP-before-SMTP)。

  (1)DRAC的编译

  在编译DRAC之前,系统的sendmail服务器应该已经正确编译安装了。首先在DRAC源程序目录中编辑Makefile文件,在Solaris 2.x操作系统中其Makefile改成:

  INSTALL=/usr/ucb/install

  EBIN=/usr/local/sbin

  MAN=/usr/local/man/man

  DEFS=-DTI_RPC -DFCNTL_LOCK -DSYSINFO

  CC= (编译器)

  RANLIB= :

  CFLAGS=$(DFES) -g -I/path/to/db/include

  LDLIBS=-L/path/to/db/library -lns1 -1db

  TSTLIBS=-L. -ldrac -lns1

  MANLIB=3

  MANADM=1m

  然后编译并安装即可。

  如果存在多个pop/IMAP服务器,则还需要将这些服务器的IP地址加到文件/etc/mail/dracd.allow中,其文件书写格式与/var/yp/securenets文件格式一样。如:

  255.255.255.255 202.139.244.23

  255.255.255.255 127.0.0.1

  (2)修改sendmail.mc文件重新生成sendmail.cf

  在使用DRAC验证功能之前,还需要将DRAC的验证信息加到sendmail.cf文件中。首先要修改sendmail.mc文件,然后重新生成sendmail.cf。sendmail.mc文件中相关语句修改如下:

  在LOCAL_CONFIG行下增加

  kdrac btree /etc/mail/dracd

  在LOCAL_RULESETS下增加

  Slocal_check_rcpt

  R$* $: $&

  R$+ $: $(drac $: ? $)

  R? $@ ?

  R$+ $@ $#OK

  重新生成sendmail.cf文件后,再重启sendmail进程。

反垃圾邮件

邮件服务器

邮件安全

Windows

用户评论
用户名
评论内容
发表时间
ZDNet网友
2011-03-18 14:57:01
ZDNet网友
2010-05-21 00:49:14
ZDNet网友
2010-05-21 00:48:00
ZDNet网友
微软应该对自己的用户负责,如果用户完全使用xp升级微软win7,为什么要付出这样麻烦的代价?都是微软出品软件,且都是利用该软件获取信息以及处理文字、多媒体功能,微软应该尽可能方便用户!虽然有时候这样的请求也许跟不上时代技术发展的脚步,但是微软不要以此为借口,认为一切都理所应当,就不可以方便用户。还是要尽力,所谓拿人手短吃人嘴软,商业不正是讲求有商道吗!至少做人需诚实守信,尽可能帮助用户顺利、安全转换操作系统、各种必须软件功能尽可能兼容以及信息尽可能的少丢失!虽然这很大程度仅仅取决于微软等计算机专家、工程师的自我自律约束,我们普通用户恐怕很难知道微软究竟仅了多大力量为用户考虑,但是我相信真相会有被发现的一天,无论多久远。 微软从某种意义上来说,就是一个类似“掌握魔方”操作特别出神入化的公司。几乎奠定了电脑主要的“规则”,但是,我却相信不久将来我们会发现,电脑依然是非常有限的一个小系统而已!随着我们新的关键材料认知突破,电脑系统会真正被另一个革命性新电脑系统所取代,不要以为我这样的说法是无稽之谈不可实现,我却认为很有可能,只看这样的情况发生究竟是快还是慢,是早还是迟!变成历史的小玩具之后的电脑系统,微软会留下良好的历史声名吗?我们拭目以待! 网友::我爱佛祖
2010-02-03 13:52:55
- 发表评论 -
匿名
注册用户

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134