博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
postfix邮件服务器安全
阅读量:4971 次
发布时间:2019-06-12

本文共 2714 字,大约阅读时间需要 9 分钟。

为防止postfix邮件服务器被人冒用,使用它发送伪造的垃圾邮件,进行了以下实验,添加了smtp验证。

分析smtp发送

把内部IP从邮件 的信任网络中去掉, 然后测试邮件发送(依靠邮件发件人)

 

  1. root@slackbox[~]# telnet mail.XXXXXX.com 25 
  2. Trying 10.70.253.52... 
  3. Connected to mail.XXXXXX.com. 
  4. Escape character is '^]'. 
  5. 220 mail.XXXXXX.com ESMTP Postfix 
  6. mail from: abc@XXXXXX.com #直接发起邮件, 未进行SMTP认证,并伪造发件人为abc@XXXXXX.com, abc为实际不存在的用户 
  7. 250 2.1.0 Ok #服务器返回OK, 说明服务器未对sender进行认证 
  8. rcpt to: jhuang@XXXXXX.com  #指定收件人为我本人 
  9. 250 2.1.5 Ok #服务器返回OK 
  10. data #写邮件 
  11. 354 End data with <CR><LF>.<CR><LF> 
  12. sfafafdsfafasfasfas 
  13. afsdasfsfasfsafas 
  14. . #结束写邮件并发送 
  15. 250 2.0.0 Ok: queued as 6C0FC3D5288 #服务器返回邮件已进入发送队列 

同时, 邮件服务器的日志显示,邮件已经发送:status=sent,上述实验表明了 邮件服务器没有经过smtp认证。

增加smtp认证, 堵住漏洞

Postfix配置

 

  1. #指定发件人认证登录 
  2. smtpd_sender_login_maps = ldap:/etc/postfix/ldap-users.cf, 
  3. ldap:/etc/postfix/ldap-mailbox.cf 
  4. #不允许不在列表中的发件人 
  5. smtpd_reject_unlisted_sender = yes 
  6. #需要helo信息 
  7. smtp_helo_required = yes 
  8. smtpd_recipient_restrictions 段增加下面内容: 
  9. reject_sender_login_mismatch 
  10. reject_authenticated_sender_login_mismatch, 
  11. reject_unauthenticated_sender_login_mismatch, 
  12. reject_non_fqdn_hostname, 
  13. reject_non_fqdn_sender, 
  14. reject_non_fqdn_recipient, 
  15. reject_invalid_hostname, 

测试一: 试图不通过验证直接发邮件

 

  1. #telnet mail.XXXXXX.com 25 
  2. Trying 10.70.253.52... 
  3. connected to mail.XXXXXX.com. 
  4. Escape character is '^]'. 
  5. 220 "mail.XXXXXX.com Mail System" 
  6. mail from: jhuang@XXXXXX.com 
  7. 50 2.1.0 Ok 
  8. rcpt to: jhuang@XXXXXX.com 
  9. 553 5.7.1 <jhuang@XXXXXX.com>: Sender address rejected: not logged in 

证明发送邮件需要作SMTP认证, 没有认证的不允许发送邮件。

测试二: 试图SMTP认证, 并以伪造不存在的邮件地址发送邮件

 

  1. # telnet mail.XXXXXX.com 25 
  2. Trying 10.70.253.52... 
  3. Connected to mail.XXXXXX.com. 
  4. Escape character is '^]'. 
  5. 220 "mail.XXXXXX.com Mail System" 
  6. auth login 
  7. 334 VXNlcm5hbWU6 
  8. amh1YW5n 
  9. 334 UGFzc3dvcsfafafafmQ6 
  10. bG92ZXdpbm5pZXlpbg== 
  11. 235 2.7.0 Authentication successful 
  12. mail from: abc@XXXXXX.com 
  13. 250 2.1.0 Ok 
  14. rcpt to: jhuang@XXXXXX.com 
  15. 550 5.1.0 <abc@XXXXXX.com>: Sender address rejected: User unknown in local recipient tabl 

证明不允许伪造不存在的本地邮件地址发邮件

测试三:试图通过SMTP认证, 并仿冒他人邮件地址发送邮件

 

  1. # telnet mail.XXXXXX.com 25 
  2. Trying 10.70.253.52... 
  3. Connected to mail.XXXXXX.com. 
  4. 220 "mail.XXXXXX.com Mail System" 
  5. auth login 
  6. 334 VXNlcm5hbWU6 
  7. amh1YW5n 
  8. 334 UGFzlllllkokopkc3dvcmQ6 
  9. bG92ZXdpbm5pZXlpbg== 
  10. 235 2.7.0 Authentication successful 
  11. mail from: lxiong@XXXXXX.com 
  12. 250 2.1.0 Ok 
  13. rcpt to: jhuang@XXXXXX.com 
  14. 553 5.7.1 <lxiong@XXXXXX.com>: Sender address rejected: not owned by user jhuang 

证明登录用户与邮件发送人不一致时, 禁止发送邮件

测试四:禁止邮件中继

 

  1. #telnet mail.XXXXXX.com 25 
  2. Trying 10.70.253.52... 
  3. Connected to mail.XXXXXX.com. 
  4. Escape character is '^]'. 
  5. 220 mail.XXXXXX.com ESMTP Postfix 
  6. mail from: address1@163.com 
  7. 250 2.1.0 Ok 
  8. rcpt to: address2@yeah.net 
  9. 554 5.7.1 <address2@yeah.net>: Recipient address rejected: Access denied 

转载于:https://www.cnblogs.com/xd502djj/archive/2012/03/30/2425299.html

你可能感兴趣的文章
面试题三 替换空格
查看>>
LeetCode104.二叉树最大深度
查看>>
linux usb驱动——Gadget代码介绍
查看>>
【洛谷】CYJian的水题大赛【第二弹】解题报告
查看>>
POJ 1703 Find them, Catch them【种类/带权并查集+判断两元素是否在同一集合/不同集合/无法确定+类似食物链】...
查看>>
L1-5. A除以B【一种输出格式错了,务必看清楚输入输出】
查看>>
Git一分钟系列--快速安装git客户端
查看>>
bzoj 3160 万径人踪灭 —— FFT
查看>>
poj3254二进制放牛——状态压缩DP
查看>>
使用 ref 和 out 传递数组注意事项
查看>>
combobox和textbox中输入数据为非数字leave时的公用事件,只需要在控件的leave事件中选择本事件即可...
查看>>
纵越6省1市-重新启动
查看>>
hive安装以及hive on spark
查看>>
勇者无畏
查看>>
12864点阵液晶显示模块的原理和实例程序(HJ12864M-1)
查看>>
jz1074 【基础】寻找2的幂
查看>>
Wannafly模拟赛5 A 思维 D 暴力
查看>>
C#控制台程序实现鼠标左右手习惯切换
查看>>
C++ 继承、函数重载
查看>>
Javascript获取select下拉框选中的的值
查看>>