本文目录导读:

“安全加固”是一个系统性工程,而不是简单地安装一个软件或修改一个配置,它通常指通过一系列技术和管理措施,减少系统、网络或应用的攻击面,提升其抵御攻击的能力。
实施安全加固通常遵循“最小权限、默认安全、纵深防御”的原则,以下是通用的、分阶段的实施步骤,你可以根据加固对象(如服务器、数据库、网络设备、应用系统)进行细化。
总体实施流程(PDCA循环)
- 规划与评估(Plan)
- 基线制定与实施(Do)
- 检查与测试(Check)
- 持续监控与优化(Act)
具体实施步骤详解
第一步:资产盘点与风险评估
- 明确对象:明确要加固的是哪台服务器、哪个Web应用、哪个数据库还是整个网络。
- 资产梳理:记录操作系统版本、安装了哪些服务、开放了哪些端口、运行了哪些应用。
- 风险评估:识别关键资产面临的主要威胁。
- 对外服务的Web服务器:SQL注入、XSS、弱口令。
- 核心数据库:未授权访问、数据泄露、暴力破解。
- 办公网络:勒索病毒、钓鱼邮件。
第二步:遵循安全基线(硬性标准)
这是最核心的步骤,不要自行猜测,建议参考权威的安全基线,
- CIS Benchmarks:最权威、最细致的基线标准,覆盖Windows、Linux、云平台、数据库等。
- 等级保护2.0:中国国家标准,对企业合规要求很明确。
- 运营商/云厂商基线:如阿里云、腾讯云的安全基线。
以下是通用的核心加固项:
账号与认证加固(最基础也最重要)
- 禁用默认/共享账户:如Windows的Guest、Administrator(建议改名),Linux的root(建议禁用直接SSH登录)。
- 启用强密码策略:长度至少12位以上,包含大小写字母、数字、特殊字符,并定期更换。
- 启用多因素认证(MFA):对所有管理后台、SSH/VPN登录启用。
- 最小权限原则:用户只拥有完成其工作所必需的最小权限,删除不必要的本地管理员权限。
系统与网络加固
- 及时打补丁:操作系统、应用软件、中间件(Nginx、Apache、Tomcat)的漏洞补丁应定期或紧急更新。
- 关闭不必要的端口和服务:只开放业务必需的端口(如80、443、3306等),使用
netstat -an或ss -tlnp查看,关闭像Telnet、FTP、SMBv1、RDP(如果不是必要)等服务。 - 防火墙规则:配置主机防火墙(如iptables/firewalld/Windows Defender防火墙)和网络防火墙(ACL),允许特定来源IP访问,拒绝其他。
- 禁用危险协议:禁用LLMNR(本地链路多播名称解析)、NetBIOS、SMBv1等容易被攻击利用的协议。
应用安全加固
- Web应用:
- WAF:部署Web应用防火墙,拦截SQL注入、XSS、CSRF等攻击。
- 输入验证:对用户输入进行严格的过滤、转义。
- 会话管理:配置安全的Cookie(HttpOnly、Secure、SameSite),会话超时时间设置。
- HTTPS:全站启用HTTPS,使用HSTS(HTTP严格传输安全)头部。
- 数据库:
- 端口变更:更换默认端口(MySQL 3306 -> 自定义端口)。
- 访问控制:限制特定IP才能访问数据库,禁用root远程登录。
- 最小权限:数据库用户只赋予其需要的库/表权限(如SELECT、INSERT),避免赋予ALL/GRANT权限。
- 数据加密:敏感数据(身份证、密码)在传输和存储时加密(TLS、AES)。
- 备份与审计:定期备份,开启慢查询日志和全量审计日志。
日志与监控
- 开启日志:系统日志(syslog)、应用日志(如Apache access_log)、安全日志(Windows Event Viewer)。
- 集中化管理:将日志统一发送到SIEM(安全信息和事件管理)系统或日志分析平台(如ELK Stack)。
- 告警规则:设置关键告警,连续多次登录失败、添加管理员账户、修改主机防火墙规则、CPU/内存异常飙升。
- 设置基线:了解正常流量模式,以便发现异常。
数据安全与备份
- 敏感数据脱敏/加密:数据在静态存储和动态传输中都要加密。
- 定期备份:制定“3-2-1”备份策略(至少3份备份,2种不同介质,1份异地/脱机存放)。一定要测试恢复流程。
- 防勒索病毒:部署EDR(端点检测与响应)或防病毒软件,配置防篡改策略,备份文件不可直接写入。
第三步:实施与验证
- 制定变更计划:不要在周一早上直接改,制定变更计划,明确影响范围、回退方案。
- 在测试环境先验证:所有加固措施(如关闭端口、修改权限、打补丁)先在测试环境验证,确保不影响业务正常运行。
- 分阶段实施:先在非核心系统实施,确认没问题后再推广到核心系统,可以灰度上线。
- 自动化工具:使用Ansible、SaltStack、Puppet等自动化工具批量下发配置,也可以使用安全基线扫描工具(如OpenSCAP、安全检查脚本)来检测偏离。
第四步:持续监控与优化
- 定期扫描:定期进行漏洞扫描(如Nessus、OpenVAS)、基线合规检查、渗透测试(可以找专业团队或使用工具)。
- 应急响应:建立安全事件响应流程(发现 -> 分析 -> 抑制 -> 清除 -> 恢复 -> 复盘)。
- 培训:定期对员工进行安全意识培训(关于钓鱼邮件、弱口令、数据泄露等)。
- 进入循环:根据扫描结果、事件复盘、业务变化,回到第一步,不断迭代优化。
一个简单的Web服务器加固清单示例(Linux + Nginx + MySQL)
- 操作系统:
- [ ] 更新系统补丁:
apt update && apt upgrade -y(或yum update -y)。 - [ ] 禁用SSH root登录:修改
/etc/ssh/sshd_config中PermitRootLogin no。 - [ ] 修改SSH端口(22 -> 34222),开启密钥认证,禁用密码认证。
- [ ] 删除不必要的用户/组:
userdel -r test。 - [ ] 配置防火墙:只允许22(已修改端口)、80、443端口;允许/8内网网段,拒绝其他。
- [ ] 更新系统补丁:
- Nginx:
- [ ] 隐藏版本号:
server_tokens off; - [ ] 限制请求速率:防止暴力破解。
- [ ] 设置合理的超时时间。
- [ ] 配置HSTS头部、X-Frame-Options、X-Content-Type-Options等安全头。
- [ ] 隐藏版本号:
- MySQL:
- [ ] 执行
mysql_secure_installation脚本(删除匿名用户、禁止root远程登录、删除test数据库)。 - [ ] 创建专用数据库用户,只授予SELECT/INSERT/UPDATE/DELETE权限,不授予CREATE/ALTER/DROP。
- [ ] 修改默认端口(3306 -> 13306)。
- [ ] 配置远程访问控制:
bind-address = 127.0.0.1或只允许应用服务器IP。
- [ ] 执行
- 数据:
- [ ] 配置
logrotate,将日志保留90天。 - [ ] 配置自动备份到异地存储(如对象存储或NAS)。
- [ ] 备份文件进行加密。
- [ ] 配置
关键工具推荐
- 扫描/审计:Nessus(商业)、OpenVAS(开源,现在叫Greenbone)、Qualys。
- 基线检查:OpenSCAP(Linux)、Microsoft Security Compliance Toolkit(Windows)、Lynis(通用审计)。
- 入侵检测:OSSEC、Wazuh、Snort/Suricata。
- 日志管理:ELK Stack(Elasticsearch + Logstash + Kibana)、Splunk。
- 自动化:Ansible、SaltStack。
记住这几点
- 安全是过程,不是终点:不存在100%绝对安全,我们能做的是不断降低风险。
- 加固不等于“关掉一切”:不能为了安全牺牲业务可用性,比如为了防范DDoS,可以部署CDN和流量清洗服务,而不是直接关闭网站。
- 没有银弹:光靠买一个防火墙解决不了所有问题。人(意识与流程)、技术(工具与基线)、管理(制度与执行)三者缺一不可。
- 从最脆弱的地方入手:常见的薄弱环节有:弱密码、未打补丁的组件、配置不当的云存储桶、代码中的硬编码凭证、不规范的API接口。
建议你先从最核心、对外暴露风险最高的资产(如Web服务器、数据库服务器、管理员登录入口)开始,而不是一次性试图加固所有资源,每一步操作都要做好记录和备份。