centos邮件服务器安全设置有哪些
小樊
44
2025-12-07 14:33:18
CentOS 邮件服务器安全设置清单
一 基础与网络防护
- 保持系统与组件为最新:执行yum/dnf update -y,及时修补漏洞;仅启用必要的服务,减少攻击面。
- 启用并正确配置防火墙:使用firewalld仅开放邮件相关端口,建议仅在内网或对受控来源开放管理端口。
- 仅开放必要端口并区分用途:
- 25/TCP(SMTP):服务器间通信与入站邮件;
- 587/TCP(Submission):客户端发信端口,强制STARTTLS;
- 465/TCP(SMTPS):隐式 SSL/TLS 发信;
- 143/TCP(IMAP)/993/TCP(IMAPS)、110/TCP(POP3)/995/TCP(POP3S):收信端口,建议优先使用IMAPS/POP3S。
- 示例(firewalld):
- 开放端口:sudo firewall-cmd --permanent --add-port={25,465,587,143,993,110,995}/tcp
- 或按服务名:sudo firewall-cmd --permanent --add-service={smtp,smtps,submission,imap,imaps,pop3,pop3s}
- 重载:sudo firewall-cmd --reload
- 如环境允许,限制来源 IP:
- 富规则示例:sudo firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“203.0.113.10” port port=“25” protocol=“tcp” accept’
- 切勿为便利关闭SELinux或防火墙;确需调试请临时设置并尽快恢复。
二 传输加密与身份认证
- 使用Let’s Encrypt或企业 CA 为mail.example.com签发证书,部署到 Postfix 与 Dovecot:
- Postfix 示例(/etc/postfix/main.cf):
- smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
- smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
- smtpd_use_tls = yes
- smtpd_tls_security_level = may(或更高)
- smtp_tls_security_level = encrypt(出站加密)
- 建议开启会话缓存:smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
- Dovecot 示例(/etc/dovecot/conf.d/10-ssl.conf):
- ssl = yes
- ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
- ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
- 启用SASL认证并禁用明文:
- Postfix:smtpd_sasl_auth_enable = yes;smtpd_sasl_security_options = noanonymous;smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
- Dovecot:disable_plaintext_auth = yes;auth_mechanisms = plain login
- 启用**SMTPS(465)**时,需在 Postfix master.cf 取消注释并配置:
- smtps inet n - n - - smtpd
- o syslog_name=postfix/smtps
- o smtpd_tls_wrappermode=yes
- o smtpd_sasl_auth_enable=yes
- 客户端应优先使用587/STARTTLS或465/SMTPS,避免使用明文端口。
三 反垃圾与域名身份认证
- 配置SPF:在域名 DNS 添加 TXT 记录,例如“v=spf1 mx -all”,仅允许你的MX主机发送邮件。
- 配置DKIM:为选择器(如 default)生成私钥/公钥,公钥发布到 DNS(default._domainkey TXT),Postfix 通过 OpenDKIM 验签/签名出站邮件。
- 配置DMARC:在 DNS 添加 TXT 记录“v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com”,逐步收紧策略。
- 降低垃圾邮件概率:确保A/MX/PTR一致,避免动态 IP;保持IP 不在黑名单;必要时启用灰名单与反向 DNS。
- 部署内容过滤(生产建议):在边缘或内部部署MailScanner + ClamAV + SpamAssassin进行病毒与垃圾邮件检测。
四 访问控制与暴力防护
- 限制中继与本地网络:在 Postfix 中精确设置mynetworks(仅可信网段),对外仅允许587经 SASL 认证提交。
- 启用Fail2Ban:监控 Postfix/Dovecot 日志,自动封禁多次失败的来源 IP,降低暴力破解风险。
- 连接与速率限制(示例思路):
- smtpd_client_connection_limit(限制单 IP 并发连接)
- smtpd_client_message_rate_limit(限制发信速率)
- smtpd_recipient_limit(限制收件人数)
- 禁用过时和不安全协议/机制:如明文 POP3/IMAP、SSLv2/SSLv3,仅启用TLS 1.2+。
五 监控 日志与运维
- 集中监控与告警:关注**/var/log/maillog**(或 journalctl -u postfix/dovecot),对队列堆积、认证失败激增、TLS 握手失败等设置告警。
- 定期检查与测试:
- 队列检查:mailq 或 postqueue -p;必要时 postqueue -f 重试;
- 连通性测试:telnet/curl 到 25/587/465/993/995;
- 证书有效期:certbot certificates 或手动检查证书过期时间;
- 黑名单与信誉:定期查询RBL与发送信誉。
- 备份与变更管理:定期备份**/etc/postfix、/etc/dovecot、/etc/letsencrypt**与用户邮箱数据;变更前先在测试环境验证。