一、基础安全防护(必须做到)
保持软件和插件更新
核心原则:及时更新网站使用的操作系统、Web服务器(如Nginx、Apache)、数据库、CMS(如WordPress、Drupal)以及所有插件、主题。大量攻击正是利用已知但未修复的漏洞。
操作方法:开启自动更新(谨慎评估),或制定定期手动更新计划。订阅安全公告,及时获取漏洞信息。
使用强密码和多因素认证
强密码:所有管理后台、FTP、数据库、服务器SSH账户,必须使用复杂、唯一的密码(长度至少12位,包含大小写、数字、特殊符号)。禁止使用默认密码(如admin/123456)。
多因素认证:为所有管理员账户启用MFA(如Google Authenticator、短信验证码、硬件密钥)。这是防止密码泄露后账户被滥用的最有效手段之一。
部署Web应用防火墙
作用:WAF位于用户和网站之间,能自动拦截常见攻击,如SQL注入、跨站脚本、跨站请求伪造、恶意爬虫、CC攻击等。
选择:可使用云WAF服务(如Cloudflare、AWS WAF、阿里云WAF),或基于软件的WAF(如ModSecurity)。对于大多数公司,云WAF更易于部署和管理。
启用HTTPS加密
作用:加密浏览器与服务器之间的所有通信,防止数据在传输中被窃听、篡改(如中间人攻击)。同时提升SEO排名和用户信任。
实施:从Let‘s Encrypt等机构获取免费SSL/TLS证书,或购买商业证书。配置Web服务器强制跳转HTTPS,并启用HSTS(HTTP严格传输安全)。
二、日常运维与监控(持续进行)
定期备份网站和数据库
原则:保持多地、多版本备份。这是遭受攻击(如勒索软件、数据删除)后恢复业务的最后防线。
策略:自动执行每日/每周全量备份+增量备份。备份存储到异地(如云存储、另一台服务器)和离线介质。定期测试备份恢复流程,确保备份可用。
实施最小权限原则
文件和目录权限:网站文件设置为644,目录设置为755。禁止给Web进程写权限的目录(如上传目录)赋予执行权限。
数据库权限:应用程序连接数据库使用最小必要权限的账户(如只读、仅操作特定表)。禁止使用root或管理员账号连接应用。
系统用户:日常运维使用普通用户,仅在需要时通过sudo提权。禁用root远程登录。
关闭不必要的服务和端口
仅开放业务必需的端口(如80/443的HTTP/S,22的SSH管理)。关闭FTP(改用SFTP)、Telnet等不安全服务。
禁用不使用的Web功能(如目录列表、PHP危险函数如exec、system、服务器签名信息)。
实时监控与日志分析
监控指标:服务器CPU/内存/带宽异常飙升、文件完整性变化、非预期进程、登录失败次数。
日志:记录并定期审查访问日志、错误日志、认证日志。使用工具(如GoAccess、ELK Stack)或云监控服务自动分析异常模式(如大量404请求、同一IP频繁尝试登录)。
三、应用层安全(针对动态网站)
防范SQL注入
强制使用参数化查询或预编译语句(如PDO、MyBatis等)。禁止拼接用户输入到SQL语句。
对用户输入进行严格过滤和验证(白名单优于黑名单)。
防范跨站脚本
输出编码:将用户可控数据显示到HTML页面时,根据上下文进行正确的HTML实体编码、JavaScript编码等。
使用内容安全策略:通过HTTP头Content-Security-Policy限制浏览器只加载信任来源的脚本、样式等。
启用内置防护:使用框架提供的XSS过滤功能(如htmlspecialchars、strip_tags)。
管理文件上传安全
验证:检查文件扩展名(白名单)、MIME类型、文件头魔数。使用唯一随机名称重命名文件。
存储隔离:将上传文件存储在Web根目录之外,或通过脚本(如PHP readfile)读取,防止直接通过URL执行。
扫描病毒:对上传文件进行病毒扫描(如ClamAV)。
防止跨站请求伪造
使用CSRF Token:在每个表单或状态变更请求中嵌入一个随机且用户绑定的Token,并验证其有效性。
验证Referer头(作为辅助措施)。
四、人员与流程管理
定期安全培训与演练
培训开发、运维、客服人员识别钓鱼邮件、社工攻击。明确告知不可在开发文档、代码仓库中暴露生产凭据。
模拟攻击(如渗透测试、红蓝对抗)检验防御体系。
建立应急响应计划
明确当网站被入侵时(如页面篡改、数据泄露、挂马)的发现-隔离-取证-恢复-复盘流程。
准备联系人清单(安全厂商、云服务商、法务、PR)。定期演练响应流程。
五、额外建议
减少暴露面:不要将管理后台、phpMyAdmin、测试工具暴露在公网(使用VPN或白名单IP访问)。
限制登录尝试:对管理后台登录启用验证码或自动封禁多次失败IP。
使用安全扫描工具:定期使用自动扫描器(如Nikto、OpenVAS、WPScan)检查已知漏洞。专业公司可做渗透测试。
订阅威胁情报:关注网络安全新闻和漏洞数据库,了解针对常用CMS或中间件的新攻击手法。
总结:核心行动清单
每天/每周:检查并应用安全更新;审查关键日志。
每周/每月:执行自动备份并测试恢复;运行安全扫描。
每季度:更换一次重要密码;进行员工安全意识培训。
每年:聘请第三方做渗透测试;演练应急响应流程。
没有绝对的安全,只有持续降低风险的努力。 上述措施投入成本从低到高,建议至少完成一、基础安全防护中的全部四项,再逐步完善其他部分。对于资源有限的小型公司,可优先托管给提供自动安全防护的云平台(如Cloudflare + 托管服务器),将部分安全工作外包。