Linux下LNMP安全防护措施如下:
- 系统与软件更新:定期更新Linux内核、Nginx、MySQL、PHP至最新版本,修复已知漏洞。
- 权限管理:
- 为Nginx、MySQL、PHP-FPM创建专用低权限用户(如
nobody)。
- 严格控制文件和目录权限,避免PHP直接操作静态文件(如设置
chmod 644、chown)。
- Nginx安全配置:
- 隐藏版本信息:
server_tokens off;。
- 禁用危险模块:如
autoindex、ssi等。
- 限制HTTP方法:仅允许
GET/POST/HEAD。
- 启用安全头:如
X-Frame-Options、X-XSS-Protection、Content-Security-Policy。
- MySQL安全加固:
- 设置强密码,禁用
root远程访问,仅允许信任IP连接。
- 启用二进制日志和慢查询日志,定期审计。
- 防火墙与访问控制:
- 使用
iptables或firewalld限制端口(仅开放80、443等必要端口),禁止外部访问数据库端口(3306)。
- 配置IP白名单,限制特定IP访问关键服务。
- 应用层防护:
- 禁用PHP高危函数(如
exec、system),启用open_basedir限制文件访问范围。
- 对用户输入进行严格验证和过滤,防止SQL注入、XSS攻击。
- 日志与监控:
- 启用Nginx、MySQL、PHP错误日志,定期分析异常。
- 使用工具(如
Prometheus、Grafana)监控服务器性能,及时发现异常流量。
- DDoS防护:
- 限制IP并发连接数和请求速率(Nginx的
limit_conn/limit_req模块)。
- 部署Fail2Ban,自动封禁恶意IP。
- 使用CDN或Web应用防火墙(如ModSecurity)分散流量、过滤恶意请求。
- 其他措施:
- 定期备份数据,测试恢复流程。
- 禁用SSH密码登录,改用公钥认证。
- 考虑使用Docker等容器化技术隔离服务。
参考来源:[1,2,3,4,5,6,7,8,9,10,11]