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]