开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Linux安全应用之防垃圾邮件服务器的构建

简介:
+关注继续查看

Linux安全应用之防垃圾邮件服务器的构建

.垃圾邮件产生的原因
垃圾邮件(SPAM) 也称作UCE(Unsoticited Commercial Email.未经许可的商业电子邮件)或UBE(Unsolicited Bulk Email,未经许可的大量电子邮件)。首次关于垃圾邮l件的记录是1985年8月的一封通过电子邮件发送的连锁信,一直持续到1993年6月出现了名为“Make Money Fast 的电子邮件。1994年4月SPAM一词首次出现.当时Canter和Siegel律师事务所把一封信发送到6000多个新闻组,宣传获得美国国内绿卡的法律支持。这时开始,很多商人瓤利用垃圾邮件广告。1995年首个专门用于发送垃圾邮件的程序Floodgate发布,诙程序能够自动地把邮件发送给大批人。同年8月开始出现出售邮件地址的事件。从此,垃圾邮件频频出现.也引起了人们的反感。
垃圾邮件产生的原因是多方面的,主要有多种原因。主要是经济利益的驱使,电子邮件在海量“群发”方面具有得天独厚的便利性。所以屡禁不绝。垃圾邮件和病毒有很多相似之处,他们都具有蔓延性、变化性,但是垃圾邮件的产生和蔓延与病毒有很大的不同。病毒的制造和蔓延一般来说并不能给制造者和传播者带来直接或间接的经济利益;而垃圾邮件的制造和散发能够给发送者带来直接或间接的经济利益。
.垃圾邮件防御手段
对于垃圾邮件的防治,由于垃圾邮件是用专门的邮址搜索软件和邮件群发软件来完成网上邮址收集和邮件散发的,一个邮址搜索软件每次可以搜索到几万至十几万个有用邮址,一个邮件群发软件每天可以发送上百万封同样或不同内容的垃圾邮件,所以对于自动化的垃圾邮件制造方式用人工手段进行删除显得无能为力,必须借助一定的技术手段对付批量垃圾邮件。
有了邮件地址和邮件内容,垃圾邮件发送者要做的就是在尽量短的时间内将垃圾邮件发送出去。他们通常使用专用的群发工具或邮件列表系统来达到目的。早些时候,Sendmail等多数MTA默认设置是开放转发(Open Relay)的,任何用户都可以通过Intemet上大量存在的开放转发MTA主机来发送邮件。于是,垃圾邮件制造者会首先查找一定数量响应速度快的、开放转发的MTA主机,通过它们来完成收件人服务器名字解析及发送的工作。后来,为了避免成为垃圾邮件的中转站,各种主流MTA程序的默认设置都改为默认禁止开放转发,而且,越来越多的开放转发的服务器都被列入各种黑名单过滤。Intemet上可用的开放转发的主机正在不断减少。于是,垃圾邮件制造者开始广泛使用本身具有收件服务器名字解析功能的群发工具和邮件列表系统。这些发送者通常使用家庭宽带进行发送,其IP地址也不断变化,为追踪和屏蔽制造了障碍。垃圾邮件的发送环节与对抗垃圾邮件的过滤环节具有直接的对应关系,在这个环节上可用的技术很多,用户应当从自身的实际情况出发进行遴选和应用。下面介绍目前广泛使用的防垃圾邮件技术。
(1).SMTP用户认证
目前常见并十分有效的方法是,在MTA上对来自本地网络以外的Intemet的发信用户进行SMTP认证,仅允许通过认证的用户进行远程转发。这样既能够有效避免MTA主机为垃圾邮件发送者所利用,又为出差在外或在家工作的员工提供了便利。如果不采取SMTP认证,则在不牺牲安全的前提下,设立面向Intemet的Web邮件网关也是可行的。
此外,如果SMTP服务(MTA)和POP3服务集成在同一主机上,则在用户试图发信之前对其进行POP3访问验证(POP before SMTP)就是一种更加安全的方法。但在应用的时候要考虑到当前支持这种认证方式的邮件客户端程序还不多。
2).逆向名字解析
无论哪一种认证,其目的都是避免MTA被垃圾邮件发送者所利用,但对于发送到本地的垃圾邮件仍然无可奈何。要解决这个问题,最简单有效的方法是对发送者的IP地址进行逆向名字解析。通过DNS查询来判断发送者的IP与其声称的名字是否一致,例如,其声称的名字为mx.yahoo.com,而其连接地址为20.200.200.200,与其DNS记录不符,则予以拒收。这种方法可以有效过滤掉来自动态IP的垃圾邮件。对于某些使用动态域名的发送者,也可以根据实际情况进行屏蔽。
但是上面这种方法对于借助Open Relay的垃圾邮件依然无效。对此,更进一步的技术是假设合法的用户只使用本域具有合法Internet名称的MTA主机发送E-Mail。例如,若发件人的邮件地址为somebody@google.com,则其使用的MTA的Internet名字应具有google.com的后缀。这种限制并不符合SMTP协议,但在多数情况下是切实有效的。
需要指出的是,逆向名字解析需要进行大量的DNS查询,从而耗用大量的系统资源和网络资源,为了提高性能和避免出现由于DNS服务中止或查询超时,该方法并未被普遍采用。
3).实时黑名单过滤
以上介绍的防范措施对使用自身合法域名的垃圾邮件仍然无效,对此比较有效的方法就是使用黑名单服务了。黑名单服务是基于用户投诉和采样积累而建立的、由域名或IP组成的数据库,最著名的是RBL、DCC和Razor等,这些数据库保存了频繁发送垃圾邮件的主机名字或IP地址,供MTA进行实时查询以决定是否拒收相应的邮件。
但是,目前各种黑名单数据库难以保证其正确性和及时性。例如,北美的RBL和DCC包含了我国大量的主机名字和IP地址,其中有些是早期的Open Relay造成的,有些则是由于误报造成的。这些迟迟得不到纠正,在一定程度上阻碍了我国与北美地区的邮件联系,也妨碍了我国的用户使用这些黑名单服务。在我国,黑名单服务仍处在起步阶段,可用服务器较少,其有效性也没有得到充分验证。
4).内容过滤
即使使用了前面诸多环节中的技术,仍然会有相当一部分垃圾邮件漏网。对此情况目前最有效的方法是基于邮件标题或正文的内容过滤。其中比较简单的方法是,结合内容扫描引擎,根据垃圾邮件的常用标题语、垃圾邮件受益者的姓名、电话号码、Web地址等信息进行过滤。
更加复杂但同时更具智能性的方法是,基于贝叶斯概率理论的统计方法所进行的内容过滤,该算法最早由Paul Graham提出(http://www.paulgraham.com/spam.html),并使用他设计的Arc语言实现。这种方法的理论基础是通过对大量垃圾邮件中常见关键词进行分析后得出其分布的统计模型,并由此推算目标邮件是垃圾邮件的可能性。这种方法具有一定的自适应、自学习能力,目前已经得到了广泛的应用。
最有名的垃圾邮件内容过滤是Spamassassin,它使用Perl语言实现,集成了以上两种过滤方法,可以与当前各种主流的MTA集成使用。
内容过滤是以上所有各种方法中耗费计算资源最多的,在邮件流量较大的场合,需要配合高性能服务器使用。
三、构建实例
下面以Linux系统上最传统的Sendmail服务器(其他邮件服务器的设计思路一类似的)为例,采用上面介绍过的几种技术应对垃圾邮件的危害。
1)关闭Sendmail的Relay功能
所谓Relay就是指别人能用这台SMTP邮件服务器给任何人发信,这样别有用心的垃圾发送者就可以使用这台邮件服务器大量发送垃圾邮件,最后导致别人投诉的不是垃圾发送者,而是这台服务器。因此,必须关闭Relay。其方法就是,到Linux服务器的/etc/mail目录编辑access文件,去掉“*relay”之类的设置,只留“localhost relay”和“127.0.0.1 relay” 两条即可。
注意,修改access文件后还要使用“makemap hash access.db<access”命令使修改生效。
2)打开Sendmail的SMTP认证功能
关掉了Relay功能,用户就不能使用客户端软件发信,此时需要Sendmail配置,开放其SMTP认证功能,再在客户端如OE、foxmail等当中打开SMTP认证,这样就可以正常使用SMTP服务器了。
Red Hat Linux 5.0中配置SMTP认证非常方便,首先用“rpm –qal grep sasl”命令检查有没有安装cyrus-sasl软件包。如果没有安装的话,则用命令“rpm -ivh cyrus-sasl.rpm”安装所有软件包,接着打开/etc/mail/sendmail.mc文件,修改如下三行:
dnl TRUST_AUTH_MECH ('DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') dnl
dnl define ('confAUTH_MECHANISMS','DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') dnl
DAEMON_OPTIONS ('Port=smtp,Addr=127.0.0.1,Name=MTA')
将它们修改如下:
TRUST_AUTH_MECH ('DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') dnl
define ('confAUTH_MECHANISMS','DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') dnl
DAEMON_OPTIONS ('Port=smtp,Addr=0.0.0.0,Name=MTA')
3)在Sendmail中添加RBL功能
RBL(Realtime Blackhole List)是实时黑名单。国外有一些机构提供RBL服务,常用的RBL服务器地址有relays.ordb.org、dnsbl.njabl.org、bl.spamcop.net、sbl.spamhaus.org、dun.dnsrbl.net和dnsbl.sorbs.net。
查询和删除RBL中的IP地址可以到www.spamhaus.org查询。RBL将收集到的专发垃圾邮件的IP地址加入他们的黑名单,只要在Sendmail中加入RBL认证功能,就会使邮件服务器在每次收信时都自动到RBL服务器上去查实,如果信件来源于黑名单,则Sendmail会拒收邮件,从而使单位的用户少受垃圾邮件之苦。
Sendmail中添加RBL认证,只要对sendmail.mc添加以下几句话:
FEATURE('dnsbl','relays.ordb.org','"Email blocked using ORDB.org-see <http://ORDB.org/lookup/host=" $&{client_addr}">" ')
FEATURE ('dnsbl','dnsbl.njab1.org',' ','"451 Temporary、lookup failurefor" $&{client_addr}" in cbl.anti-spam.org.cn" ')
上面每行表示增加一个RBL服务器。最后执行“m4 sendmail.mc>sendmail.cf”和“service  sendmail restart”两条命令,使有关Sendmail的修改生效。
除了利用sendmail的自带功能,还能够利用其他的专用工具来防止垃圾邮件,比较著名的有由Matt Sergeant、Craig Hughes和Justin Mason于2001年4月首次发布的SpamAssassin (SA)。SA目前最新版本是3.0.2,它是较为流行的反垃圾邮件软件。据SpamAssassin供应商Deersoft的统计,目前大约有3万台Unix服务器上使用了SpamAssassin。
SpamAssassin利用Perl语言来对邮件内容进行规则匹配,从而达到判断过滤垃圾邮件的目的。它的判断方式是基于评分的方式,也就是说如果这封邮件符合某条规则,则给与一定分值;当累计的分值超过了一定限度时,则判定该邮件为垃圾邮件。SpamAssassin能够方便地同sendmail或qmail等软件配合使用。关于SA的安装使用和配置的详细说明,可以参考其使用手册http://spamassassin.apache.org/




 本文转自 李晨光 51CTO博客,原文链接:http://blog.51cto.com/chenguang/862523,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用OpenSSH远程管理Linux服务器
作为Linux系统管理员,没有人不知道OpenSSH的,SSH采用了密文的形式在网络中传输数据,实现了更高的安全级别,是Telnet服务的安全替代品,sshd是OpenSSH的服务器端守护进程,而与之对应的windows下客户端软件有很多,常用的有SecureCRT、Xshell、puTTY等。
1551 0
Linux window服务器挂载Linux磁盘
mount -t cifs  -o username="Administrator",password="xmrbi3967968@"  //192.168.
816 0
DNS服务器安装与配置(Linux)
1、yum install -y bind bind-utils bind-chroot bind-libs; 2、其中:/etc/named.conf 为主配置文件;/var/named 为解析文件 3、客户端的dns查询时的配置文件 /etc/hosts 默认优先查询这个 /etc/resolv.
999 0
【Linux搭建创建FTP服务器】---完美解决 - 费元星
配置大红字文件置顶:   vsftp d.conf 4.5KB     useradd -d /home/bai_du -s /sbin/nologin bai_du 修改访问权限: usermod -d /home/webroot/fourcar.diliulian.com/ -s /sbin/nologin fourcar       在创建FTP服务器之有先命令: ps -ef |grep vsftpd 费元星版权Q【9715234】 查一下系统有没有安装vsftpd这个服务器,如果出现如下图所示的界面说明没有安装。
1364 0
Linux(Centos7.4和RHEL7.4)环境下基于chrony的NTP服务器的构建
一、操作环境 操作系统:CentOS Linux release 7.4.1708 (Core) 最小化安装版 chrony版本:chrony-3.1-2.x86_64 二、配置过程 由于在CentOS7.4系统中以默认安装chrony,因此无需再执行安装过程。
2444 0
阿里云Linux服务器初探
阿里云Linux服务器初探 .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeiti, "Microsoft YaHei", "WenQuanYi Micro Hei", SimSun, Son...
1612 0
Linux(CenOS7与RHEL7)下的Apache HTTP 服务器 2.4.29的安装与配置
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
1390 0
linux服务器查看公网IP信息的方法
使用命令 查看本机的出口公网IP信息: curl ifconfig.me 或者: curl cip.cc 邮箱 : ithelei@sina.cn Good Luck!
4922 0
一分钟在Linux环境下创建一台SFTP服务器(含账户创建)
FTP是比较常见的一种服务了,很多公司都会有可能使用到FTP服务器,本文将以最简洁的办法使用系统自带的ssh软件在1分钟内搭建一台使用方便的FTP服务器。
1420 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ECS系统指南之Linux系统诊断
立即下载
ECS运维指南 之 Linux系统诊断
立即下载
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载