有这样一个场景,某家金融科技公司,因为域名劫持的缘故,进而导致用户数据出现泄露情况,于是紧急召集我们这个团队,让其介入处理。

经调查发觉,攻击者单单凭借社工手段夺得注册商后台权限,将A记录篡改至钓鱼服务器,在三天之内盗走数千条交易凭证。

这个案例证实了一个冷酷的事实,域名不只是流量的入口所在,更是企业数字资产的那关键“总钥匙”,一旦丢失了它,就如同将服务器权限轻易地拱手让给别人了。

要进行操作的准备工作,在操作之前,请准备好以下三样相关的且各不相同的东西,第一个呢是域名注册商企业级账户,这里推荐那种支持锁定功能的账户,第二个是一台已经安装了宝塔面板的Linux服务器,要知道这部服务器它的系统CentOS 7或者Ubuntu 20.04都是可以的,第三个是SSL证书文件。

咱们以实况生产环境当作实例,自始至终去演示怎样搭建起自解析开端直至服务的深度抗击体系。

一、域名解析加固:注册局锁与DNSSEC双保险

登录到企业级别的注册商控制台,此范例是Namecheap Business哈,最先要做的是开启注册局锁定。

一经启用此功能,任何域名转移,NS记录修改之际,均要求人工审核,或者短信验证,从而彻底杜绝劫持风险之时。

操作的路径是,从Domain List进而转向Manage,再推进到Advanced DNS,最终来到Registry Lock。

注意:开启后如需修改,务必提前24小时解冻。

接着配置DNSSEC。

先在DNS设置页面寻觅DNSSEC选项,接着上传那由域名托管商所给予的DS记录。

若使用Cloudflare托管,可在仪表盘获取DS信息。

执行命令验证生效情况:

dig +dnssec example.com

若响应头出现“ad”标志,说明签名验证通过。

上述这一机制,具备防止DNS缓存投毒的作用,能够确保用户所访问的IP,确切地指向你的服务器。

二、服务器配置:宝塔LNMP环境与权限收敛

于服务器初始化的阶段之时,在通过SSH实施登录以后,马上着手去修改默认端口,并且将root登录予以禁用。

vim /etc/ssh/sshd_config
Port 22822
PermitRootLogin no
systemctl restart sshd

安装宝塔面板(建议使用编译安装,避免预编译包的安全风险):

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh ed8484bec

完成安装之后,进入面板,从中选择LNMP套件,该套件包含Nginx 1.22、MySQL 5.7以及PHP 8.1。

要点步骤是,于面板设置内,强行开启登录限制,只准许特定IP去访问面板,并且绑定域名,加上SSL访问。

三、SSL/HTTPS强制:全链路加密

请求Let‘s Encrypt证书,建议运用acme.sh脚本自动化延展期限去进行:

curl https://get.acme.sh | sh
acme.sh --issue -d example.com --nginx
acme.sh --install-cert -d example.com --key-file /etc/nginx/ssl/example.com.key --fullchain-file /etc/nginx/ssl/example.com.cer --reloadcmd “systemctl force-reload nginx”

Nginx进行配置,使其强制实现跳转至HTTPS,并且将不安全的TLS版本予以禁用。

server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}

四、CDN加速与隐藏源站IP

在进行Cloudflare CDN配置期间,一定要将“橙色云朵”代理模式予以开启,并且在于源站Nginx那里进行设置地时候,要只准许CF回源IP进行访问:

# 在server段添加
allow 173.245.48.0/20;
allow 103.21.244.0/22;
...(完整CF IP列表)
deny all;

域名安全等级_域名安全风险管理_企业级域名注册商选择

为了确认CDN是否已经生效,需要进行这样的操作:使用ping命令,针对example.com进行测试,正常情况下,显示的结果应该是CF节点的IP地址。

一块儿开启CDN的WAF规则,去阻拦SQL注入、XSS等常见的攻击。

五、安全加固:文件权限与入侵检测

修改网站目录权限最小化:

chown -R www:www /www/wwwroot/example.com
find /www/wwwroot/example.com -type f -exec chmod 644 {} ;
find /www/wwwroot/example.com -type d -exec chmod 755 {} ;

安装Fail2ban防护SSH暴力破解:

yum install fail2ban -y
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
systemctl enable fail2ban --now

可以对自定义的配置进行监控,针对宝塔面板的登录日志,要是连续出现失败达到3次,那就封禁IP长达24小时。

六、故障排查:域名解析异常应急

当用户反馈网站无法访问时,按此链路排查:

1. 本地nslookup:确认解析IP是否为CDN节点

2. 源站连通状况:使用curl -I这个指令操作,针对https://源站IP链接,不过此源站IP需要与之绑定 Host头。

三、证书有效性,openssl s_client,连接源站IP与443端口,使用-servername参数指定example.com。

企业级域名注册商选择_域名安全等级_域名安全风险管理

4. 对Nginx日志予以检查:运用tail -f /www/wwwlogs/example.com.error.log这种方式。

较常出现的故障情形是,CDN证书处于不同步状态致使SSL握手遭遇失败状况,此时需要在CF面板里重新上传源站证书。

域名安全风险管理_企业级域名注册商选择_域名安全等级

七、备份恢复:自动化脚本与异地存储

编写每日备份脚本,打包网站文件+数据库:

域名安全风险管理_企业级域名注册商选择_域名安全等级

#!/bin/bash
BACKUP_DIR=/backup
DATE=$(date +%Y%m%d)
mysqldump -u root -p密码 dbname > $BACKUP_DIR/db_$DATE.sql
tar czf $BACKUP_DIR/site_$DATE.tar.gz /www/wwwroot/example.com
rclone copy $BACKUP_DIR/db_$DATE.sql onedrive:backup/
find $BACKUP_DIR -type f -mtime +7 -delete

域名安全风险管理_域名安全等级_企业级域名注册商选择

加入crontab每日凌晨执行。

进行恢复测试,于每个月当中随机性地挑选出一个备份包,在具备测试条件的环境之下做到完整的还原操作,以此保证数据方面的一致性。

域名安全风险管理_域名安全等级_企业级域名注册商选择

概括得出:域名安全并非是单个技术位点,而是涵盖从注册商挑选、解析锁定、服务器强化稳固直至CDN防护的全方位立体防线。

这套方案,已在我们所托管的,三十余下的金融客户的环境之中,运行了两年时间,期间呈现出零安全事故的状况。

域名安全风险管理_企业级域名注册商选择_域名安全等级

要记着,从事攻击行为的人始终都在寻觅最为薄弱的那个环节,千万不要致使域名变成你防御阵线的被突破之处。

域名安全风险管理_企业级域名注册商选择_域名安全等级