场景描述

上个星期处理了一回客户的紧急求助状况:他们所拥有的一台三级域名服务器,也就是那个代码为 api.szxx.com 的服务器,被网安大队通报指出存在高危漏洞,并且要求在限定的期限之内完成整改。

客户感到极为委屈,说道:“这仅仅是个三级域名,难道也要去做等保?” 你瞧,这便是典型的认知误区。

等保测评要求_域名安全等级_三级域名是否需要做等保

今天,我们拿这台服务器当作例子,完整地走上一回,从最开始着手搭建契合等保2.0三级要求的LNMP环境的整个流程,这里面涵盖了域名解析,服务器配置,安全加固,CDN接入,还有故障排查。

准备工作

一部云服务器呢这里是以CentOS 7.9作为例子,其配置是4核8G,系统盘是40G,数据盘是100G。

一个已经完成备案流程的一级域名,举例来说像szxx.com这样的,而三级域名api.szxx.com会朝着该服务器的方向进行指向。

那已安装了宝塔面板,其官方一键安装命令是,yum install -y wget,并且,wget -O install.sh http://download.bt.cn/install/install_6.0.sh,然后,sh install.sh

本地电脑:Xshell或类似终端工具,用于远程连接

第一步:域名解析配置

登录DNS服务商后台,为三级域名添加A记录:

主机记录:api

三级域名是否需要做等保_等保测评要求_域名安全等级

记录类型:A

记录值:服务器公网IP

TTL:600(测试阶段可短一些,上线后建议3600)

注意:TTL不是越小越好,频繁变更会增加DNS服务器压力。

第二步:服务器基础加固

1. 修改SSH端口(等保要求必须更改默认端口):

sed -i 's/#Port 22/Port 2222/g' /etc/ssh/sshd_config
systemctl restart sshd

2. 创建普通用户并禁用root远程登录:

useradd szxxops
echo "Szxx@2026" | passwd --stdin szxxops
echo 'szxxops ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
systemctl restart sshd

3. 配置防火墙(仅开放必要端口):

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

第三步:宝塔面板安装LNMP环境

进行宝塔面板的登录操作,于该面板的软件商店之中,以一键的方式去安装,Nginx 1.20 ,还有MySQL 5.7 ,以及PHP 7.4。

安装完成后,进行以下安全配置:

在MySQL中,将root密码修改成那种具备大小写字母、数字以及特殊符号,且长度大于或等于12的强密码模式,把默认的匿名用户给删除掉,同时禁止root进行远程登录。

PHP:将危险函数(也就是execshell_execsystem等这些)进行禁用。

Nginx,使得版本号被隐藏起来,具体做法是在配置文件里添加server_tokens off;

第四步:配置三级域名网站及SSL证书

1. 在宝塔面板添加站点:

域名:api.szxx.com

域名安全等级_三级域名是否需要做等保_等保测评要求

根目录:/www/wwwroot/api.szxx.com

创建FTP和数据库(按需)

2. 申请并部署SSL证书(等保三级要求通信加密):

借助宝塔面板的Let‘s Encrypt免费凭证,通过一键操作去申请,进而开启强制的HTTPS。

SSL配置中勾选“开启HSTS”和“开启OCSP装订”

留神:在开启HSTS之前一定要切实保证HTTPS的访问处于正常状态,不然的话就会致使网站没办法进行访问。

等保测评要求_三级域名是否需要做等保_域名安全等级

第五步:接入CDN并配置访问控制

以Cloudflare来作为例子,在国内能够使用阿里云或者腾讯云CDN:

于CDN控制台当中,添加域名,此域名乃是api.szxx.com,而源站之处,需填写服务器IP。

先是开启CDN,接着把DNS解析记录修改成CNAME去往CDN所提供的域名。

3. 在CDN配置WAF规则:

拦截常见的SQL注入、XSS攻击

设置IP黑白名单(仅允许公司出口IP访问后台管理路径)

4. 在服务器防火墙上设置仅允许CDN节点IP访问:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="CDN节点IP段" port port="80" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="CDN节点IP段" port port="443" protocol="tcp" accept'
firewall-cmd --permanent --remove-port=80/tcp
firewall-cmd --permanent --remove-port=443/tcp
firewall-cmd --reload

第六步:系统安全加固(等保三级重点)

1. 安装并配置fail2ban防止暴力破解:

yum install -y epel-release && yum install -y fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
systemctl enable fail2ban && systemctl start fail2ban

2. 配置日志审计:

着手开启rsyslog远程日志传输,此传输是要把日志发送至专用日志服务器。

设置日志保留时间≥180天(等保要求)

echo '$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"' >> /etc/rsyslog.conf
echo '. @192.168.1.100:514' >> /etc/rsyslog.conf
systemctl restart rsyslog

三级域名是否需要做等保_域名安全等级_等保测评要求

3. 文件完整性校验:

rpm -Va > /var/log/rpm_check_$(date +%Y%m%d).log

第七步:数据库备份策略

撰写,具备自动备份功能的脚本,其路径为/root/mysql_backup.sh

#!/bin/bash
backup_dir="/data/backup/mysql"
date=$(date +%Y%m%d_%H%M%S)
mysqldump -uroot -p'密码' --all-databases | gzip > ${backup_dir}/backup_${date}.sql.gz
find ${backup_dir} -type f -mtime +7 -name ".sql.gz" -delete

添加定时任务(每天凌晨2点执行):

crontab -e
0 2    /bin/bash /root/mysql_backup.sh >/dev/null 2>&1

第八步:故障排查与应急响应模拟

某天,网站忽然无法打开,出现“502 Bad Gateway”的提示。

等保测评要求_三级域名是否需要做等保_域名安全等级

排查步骤:

查看Nginx状态,通过执行:systemctl status nginx,其态势为正常运行。

2. 去查看有关错误的日志,tail -f /www/wwwlogs/api.szxx.com.error.log,并且会发现连接php-fpm出现超时的情况。

3. 对php - fpm状态予以检查,通过执行:systemctl status php-fpm,进而发现进程呈现挂掉的状况。

4. 去查看php - fpm的慢日志,tail -f /var/log/php-fpm/slow.log,从中发现有某个SQL查询执行了30秒。

4. 暂时重新启动php-fpm,即执行:systemctl restart php-fpm,随后网站能够恢复可被访问的状态。

6. 根本原因分析:数据库索引缺失,执行效率低。

优化SQL并添加索引后,问题解决。

总结

三级域名是否需要做等保,关键看它承载的业务。

像在本例所呈现的情况里,其中的api.szxx.com,它是涉及到用户数据交互这一范畴的,那么随之而来的要求便是,必须依照等保三级的相关规定,进行全方位的加固操作。

从网络层的相关操作,到主机层的对应设置,再到应用层的具体配置,以上的这些操作全都有所包含,并且是严格依照等保2.0标准来执行的。

三级域名是否需要做等保_等保测评要求_域名安全等级

提议每隔半年开展一回等保自我检查,迅速修复漏洞,如此方可切实守住网络安全的底线。