邮箱和VPN安全,是企业安全运营的一大重点。而邮箱安全,却又常常成为企业安全的薄弱环节,攻击者经常借邮箱作为突破口,渗透企业内网。
简单地说,若没有有效的二次认证手段,VPN安全和邮箱安全是无法从根本上得到保证的。
今天讨论一种简单SMTP二次认证的实现方法。
概述
首先,SMTP服务不再直接暴露于外部不受信任的网络中,搬到内网。对内通过修改private DNS,内网主机可直接访问smtp服务器,因此,内网中所有服务均不受影响。
外部网络 <—> [SMTP防火墙] <—> 内网SMTP服务器 <–> 内网主机
外网必须通过防火墙(or 代理)来访问SMTP服务器。
代理的作用
1. 实现双因子认证
2. 主动拦截异常访问,主动报警
3. 安全审计
双因子认证功能的实现
SMTP是一个很简单的协议,考虑可以加入双因子认证的元素,只能是“用户名”、“密码”、“域名”、“端口”中的某一个。
我们考虑将这个因子附加到用户名中。
于是,用户在PC或手机上配置SMTP时,必须将用户名修改成系统提供的转换后的值,方可认证成功。而直接使用用户名,则是无法完成认证的。
举个例子,我的邮箱是[email protected],配置必须是:
Server: smtpProxy.security.com (代理服务器)
Port: 25 (TCP代理的端口号)
Username: lijiejie.188.test.py (这里的用户名必须填入系统转换后的值)
Password: 原来的密码
这个lijiejie.188.test.py如何得来呢? 可以下发手机短信,当代理检查到用户名直接登录的情况,向用户手机上发送一个新的用户名,用户使用短信中的用户名进行认证。
如果有动态口令APP或者rsa securid,可以把动态密码附加到用户名后面。而一旦认证成功,完成一次绑定。今后的一个月中,用户都可以使用绑定的动态口令在任何外网的设备上登陆SMTP服务器。一个月之后,绑定过期,必须重新绑定新的口令。
代理检测到用户名和绑定的值不匹配,主动断开连接。
代理检查到用户名和绑定匹配,主动把用户名后面的字符串删除,再转发给内网的SMTP服务器。
双因子认证有什么好处?
1. 内网主机不需要绑定,因此,如果攻击者通过web漏洞获取到了某个邮箱的账号密码,在外网无法登入我们的SMTP服务器
2. 不改变原有SMTP协议,实施双因子认证。但缺点是这个因子实际是一个月才变化一次(One-Month-Password),而不是真正的One-Time-Password。
3. 这个绑定位于用户的PC和手机上,可以随时解绑。
一个简单的例子
这个demo是一个代理程序,它代理到applesmtp.163.com,只有在用户名后面加上.iqiyi.com,才可以完成认证。
当然,这只是最基本的思路,非常不完善。
各种缺点也非常明显,本篇仅作原始的记录。
关注ing
请问我得到一台stmp服务器接下来如何弄呢?
作者这个方案落地了吗,还是之前一种规划呀
最根本的办法就是开发一个全新的安全的邮件协议,废弃smtp,pop imap协议