Winmail 系统安全加固指南


Winmail 默认设置就可以正常运行,不过经过进一步设置后,系统将更加安全,包括防服务攻击、防信息泄漏,以下设置是按照 v7.0 以上版本的, 老版本的系统建议升级。
本文主要针对 Winmail 软件本身设置,不深入涉及网络防火墙和服务器操作系统。

1. 关闭非 SSL 服务

    1. 进入"系统设置"/"系统服务",将 POP3 110 和 IMAP 143 服务设置 "不自动运行",并停止服务。
    2. 进入"系统设置"/"SMTP 设置"/"基本参数",选中 "支持 STARTTLS 命令(SSL/TLS 传输)" 和 "禁止明文认证",这样使用 25、587 SMTP 端口时客户端要使用 SSL 命令。
    3. 进入"系统设置"/"SMTP 设置"/"外发递送",选中 "远程服务器支持 STARTTLS 时,启用 SSL/TLS 连接"。

    4. Webmail 仅使用 https,进入"系统设置"/"系统服务",将 HTTP 服务设置 "不自动运行",并停止 HTTP 服务,这样就只能通过 https 访问 Webmail, 或者保留 http 服务,修改网页文件,访问 http 时自动跳转 https,参考 如何让用户访问 http 80 端口自动跳转到 https 443 端口?

    5. 防火墙或者路由器开放端口设置关闭非SSL端口,开放 25,587,465,993,995,80,443,其他端口不开放,参考 Winmail 服务器要对外开放那几个端口?
    6. 使用 SSL 加密端口连接时,客户端会校验 Winmail 服务器的证书,默认的自发证书会有警告,可以申请正式证书,参考 Winmail 安装正式SSL服务器证书
    7. 进入"系统设置"/"SMTP 设置"/"基本参数",选中 "禁止 25 端口认证",这样客户端要使用 587 或者 465 SMTP 端口。
    8. 修改默认的邮件协议端口,进入"系统设置"/"系统服务",例如:可以将 SMTP(MSA) 587 改成 6587、Secure SMTP 465 改成 6465、 Secure POP3 995 改成 6995、Secure IMAP 9934 改成 6993,防火墙和客户端也要做相应的修改。SMTP 25 端口不能改。

经过上面设置后,使用邮件客户端设置账号时要选择 SSL,可以参考 Outlook 2016 加密协议连接

2. 防猜解、防攻击

    进入"系统设置"/"高级设置"/"系统参数",在"基本参数"里,启用"猜密码检测",可以按照下图设置:

    winmail

"白名单列表"里可以加需要忽略的 IP 、系统里的邮箱用户、IP 地址来源地。

    [企业版、旗舰版] 进入"反垃圾设置"/"SMTP 过滤",选择"启用流量控制",将"本系统内邮箱用户每小时发送的收件人数"设置为 100
winmail

3. 邮箱用户密码和其他安全设置

    1. 邮箱用户密码太简单会导致被猜解并利用来发垃圾邮件,导致系统运行缓慢、外网ip被加黑名单,可以启用密码策略,
        进入"域名设置",设置系统里域名属性里的"默认密码策略",密码长度必须不小于 8、密码必须包含小写字母、密码必须包含数字、密码必须包含大写字母、密码必须包含特殊符号、密码必须不是弱口令字典的任一项,建议"密码强度检查"设置为"中"
    2. 进入"系统设置"/"高级设置"/"系统参数"/"系统报表",设置接收系统报表的邮箱,选择报表类型,可以收到系统日常运行信息。
    3. 系统各服务欢迎信息也和安全有关,进入"系统设置"/"高级设置"/"系统参数"/"基本参数",将"服务欢迎信息"设置成
            {ALL}MailServer %SERVICE% Ready{/ALL}
    4. 进入"系统设置"/"高级设置"/"系统参数"/"LDAP 配置",确定 "允许匿名访问(读取信息)" 没有选中。
    5. 默认 Webmail 登录页有 Web 管理的链接,可以进入"系统设置"/"高级设置"/"Webmail 设置"/"首页设置"里关闭。
    6. 默认禁止邮箱自动转发,进入"域名设置"/"域名管理"下面所有域名的属性里的"默认权限",选择"禁止自动转发",这项设置针对新加用户生效。可以在"用户管理"里批量更新已有用户属性下"权限设置"里的该项设置。
    7. 异地登录提醒,进入"系统设置"/"高级设置"/"Webmail设置"/"登陆后设置" 里选择 "启用异地登录提醒", 刚上线时阶段,提醒邮件会比较频繁,系统会搜集一个邮箱登录的10个最后的来源地,所以等一段时间后提醒邮件会减少, 还有如果使用手机登录,由于运营商出口 ip 多,来源地只供参考, 如果要关闭提醒,邮箱用户可以登录 Webmail,在 "配置箱"/"使用偏好" 中关闭 。
    8. 关闭 Webmail 登录页"自动登录"和"忘记密码"功能:可以进入"系统设置"/"高级设置"/"Webmail 设置"/"首页设置"里关闭 "Webmail 允许自动登录"和"Webmail 登录页显示 忘记密码 连接"。
    9. 增加另外的邮件系统管理员,删除默认的 admin:可以进入"用户和组"/"管理员管理"里操作。
    10. Web 管理相关[自主选择]:
            a. 登录页不显示 Web 管理链接,可以进入"系统设置"/"高级设置"/"Webmail 设置"/"首页设置"里关闭 "登录页显示 “Web 管理” 连接"。
            b. 关闭 Web 管理入口,可以进入"系统设置"/"高级设置"/"Webmail 设置"/"首页设置"里关闭 "允许使用 “Web 管理” 功能"。
            c. 修改 Web 管理访问目录名,默认是 admin,可以进入"系统设置"/"高级设置"/"系统参数"/"HTTP 配置"里修改"Web 管理访问目录名"。
    11. 进入"系统设置"/"SMTP 设置"/"基本参数",不选中 "邮件头增加 X-Origination-IP 字段",这样邮件头不记录客户端IP。
    12. 强制使用邮件客户端时必须用授权码登录
            a. 针对新建用户,可以在域名属性"默认密码策略"里,选择"邮件客户端必须用授权码登录";
            b. 已经存在用户,可以在用户属性"密码策略"里设置。
            c. 进入"系统设置"/"高级设置"/"Webmail 设置",选中 "允许邮件客户端用授权码登录"。
        启用后,用户要登录 Webmail,到"配置箱"-"更改密码",生成授权码,启用后登录 Webmail、Winmail APP 还是使用邮箱密码, 在 Foxmail、Outlook 等邮件客户端用要授权码代替密码
    13. 结合短信平台,支持登录 Webmail 时要求短信验证,实现双因素认证。
    14. v7.1 以上版本:结合企业微信、阿里钉钉,支持登录 Webmail 时要求企业微信/阿里钉钉扫码或发验证码,实现双因子验证。
    15. v7.1 以上版本:猜密码检测中增加仅允许指定归属地的IP认证,可实现仅限特定地区使用邮件功能。

4. 关闭不安全的 SSL,TLS 版本且关闭 RC4

    这部分可以不修改,因为没有实际危害,如果为了通过安全扫描软件的测试,可以设置, 到"系统设置"/"高级设置"/"SSL/TLS证书"-"设置",直接关闭相关的协议(只保留TLS V1.1, TLS V1.2, TLS V1.3)。其他版本可以修改相关配置文件,修改前要先备份

修改 ~/server/data/system.cfg 文件用记事本打开

<ssloption>
<ssl2>0</ssl2>
<ssl3>1</ssl3>
<tls1>1</tls1>
<tls11>1</tls11>
<tls12>1</tls12>
<renegotiation>0</renegotiation>
<cipher>ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM</cipher>
</ssloption>	
修改为
<ssloption>
<ssl2>0</ssl2>
<ssl3>0</ssl3>
<tls1>1</tls1>
<tls11>1</tls11>
<tls12>1</tls12>
<renegotiation>0</renegotiation>
<cipher>HIGH:MEDIUM:!aNULL:!eNULL:!EXPORT:!IDEA:!DES:!3DES:!MD5:!PSK:!RC4</cipher>
</ssloption>		
修改保存后,将 Winmail 重启一下,如果使用发现问题可以恢复备份文件。

5. HTTP 相关安全配置

    Winmail 自带的 web http 服务是 Apache,可以参考以下步骤做增强安全设置:

  5.1  限制使用 IP 或者非本机的域名访问 HTTP 服务
可以直接在安装目录>server>webmail>www>index.php中加入
$only_host = array();
$only_host[] = 'mail.xxx.cn';    //mail.xxx.cn是示例,使用自己的域名替换有多条时每行加一条即可。

if (!in_array(strtolower($_SERVER["SERVER_NAME"]), $only_host) 
    || !in_array(strtolower($_SERVER["HTTP_HOST"]), $only_host)){
        header("HTTP/1.0 404 Not Found");
        exit;
}
  5.2  Slow HTTP Denial of Service Attack 和 Slow HTTP DoS (Denial of Service) attack 漏洞解决方法
修改安装目录 >server>http>httpd.tpl 中以下行,将行前的#号删除
#<IfModule mod_reqtimeout.c>
#	RequestReadTimeout header=20-40,MinRate=500 body=10-40,MinRate=500
#</IfModule>
  5.3  HTTP 头 HOSTNAME 漏洞
修改 Winmail 的 httpd.tpl 中 UseCanonicalName 的参数为 On,并且参考5.1配置,把 apache 的配置文件设置为使用主机头访问。如果需要在 Apache 配置中配置按主机头访问,可以自行修改 httpd.tpl 的 Apache 模板配置。或者联系 400-606-2011。

  5.4  关闭 options
修改 httpd.tpl 文件,在文件中加入以下内容再重启 Winmail 服务器。企业版和旗舰版用户注意:增加此项后会导致 Pushmail 服务不能访问,其他版不影响。
<Location />  
    <Limit OPTIONS>
        Deny from all  
    </Limit>
</Location>
6. 其他

    垃圾邮件会带来很多安全问题,可以参考 Winmail 反垃圾邮件指南 设置。
    部分病毒是通过邮件传播的,可以参考 Winmail 和杀毒引擎配合 设置。
    系统邮件归档和系统备份,可以参考 Winmail 系统邮件归档功能Winmail 系统数据备份与恢复

7. 关注 Winmail 新版本和更新补丁

    建议尽量升级到最新版本,可以访问 www.winmail.cn 了解新版本信息和安全补丁公告,
也可以扫描下面的二维码关注 Winmail 微信公众号,及时收到新版本和安全补丁公告。
8. 网络防火墙和服务器操作系统

     和邮件系统安全关系很大,建议搜索相关资料解决,至少要做到
启用防火墙、仅开放必要端口
操作系统管理员口令要足够复杂,可以限制默认系统管理员不能远程登录
[Windows 平台] 远程控制端口不用默认的 3389
[Linux 平台] SSH 远程控制不用默认的 22 端口,安装防暴力破解工具 Fail2ban,参考 Fail2ban 简易教程