总体思路
提升域名相关的安全,需要同时加固承载域名的 DNS 服务 与 Web/应用服务,并配合 系统基线、访问控制、加密传输与持续监测。域名本身并不决定安全,关键在于解析与访问链路的最小暴露面与可验证性。
DNS 安全配置
- 运行环境与权限最小化:使用 BIND 并启用 chroot,将进程根目录限制在 /var/named/chroot,降低被攻破后的横向移动风险;主配置文件通常位于 /etc/named.conf,区域文件在 /var/named/(chroot 环境下对应为 /var/named/chroot/etc/named.conf 与 /var/named/chroot/var/named/)。
- 查询与传输最小化:在 named.conf 中通过 allow-query 仅允许必要来源查询;通过 allow-transfer 仅对授权的 从服务器 开放区域传输;对管理通道使用 controls 限制来源并配合 TSIG(可用 rndc-confgen 生成密钥)对主从同步进行签名校验,防止未授权区传输与伪造更新。
- 网络与端口控制:仅开放 UDP/TCP 53 端口给可信来源;使用 firewalld 精确放行,例如:sudo firewall-cmd --zone=public --add-port=53/tcp --permanent;sudo firewall-cmd --zone=public --add-port=53/udp --permanent;sudo firewall-cmd --reload。
- 加固与可用度:为主从服务器启用 时间同步(如 NTP),避免因时间漂移导致 TSIG 校验失败;必要时限制递归查询来源,仅对内部网段开放,减少被滥用为开放解析器的风险。
Web 与 HTTPS 安全
- 强制加密与自动化证书:部署 Let’s Encrypt 的 Certbot 自动获取并续期证书,命令示例:sudo yum install epel-release && sudo yum install certbot-nginx;sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com;确保证书自动续期(默认 certbot 会创建 systemd 定时器或 cron 任务)。
- 禁止 IP 直访与默认站点:在 Nginx 中仅保留域名 server 块,对未匹配的 server_name 返回 444 或重定向,避免通过 IP 直接访问暴露默认页面或后台。
- 协议与套件硬化:仅启用 TLS 1.2/1.3,禁用 SSLv3/TLS1.0/1.1;使用 ECDHE 等前向保密套件;开启 HSTS;配置 OCSP Stapling 提升握手与隐私;将 HTTP 统一 301 到 HTTPS。
- 应用层防护要点:关闭目录浏览与默认索引;设置安全 HTTP 头(如 X-Frame-Options、X-Content-Type-Options、X-XSS-Protection、Referrer-Policy);限制请求方法(仅允许 GET/POST 等必要方法);对外隐藏 Server 版本信息。
系统与访问控制
- 持续更新与补丁:定期执行 sudo yum update 或配置自动更新,及时修复 内核/中间件/证书 相关漏洞。
- 防火墙最小暴露面:仅放行 80/443(Web)与 53(DNS)等必要端口;对管理口与敏感网段使用独立 zone 与更严格规则。
- 身份鉴别与授权:禁用 root 远程登录,使用 SSH 密钥 认证并更改默认端口;为关键目录与文件设置 最小权限 与 不可变位(如 Web 根目录仅 root:root 750,敏感文件 chattr +i)。
- 运行与审计:启用 SELinux 并维持 enforcing;集中收集与分析 auditd 日志;为 cron/at 设定最小权限与访问控制;对公网服务使用 非特权用户 运行。
监控与备份
- 持续监控与告警:对 named 查询日志、zone 传输 与 证书到期 设置监控与阈值告警;对 Web 访问异常(如大量 4xx/5xx、非法 UA、暴力路径)进行速率限制与封禁。
- 可靠备份与演练:定期备份 Web 文件与数据库,并进行 离线/异地 留存与恢复演练;对 DNS 保留 主从 多副本与变更记录,确保可快速回滚。