LNMP架构(Linux, Nginx, MySQL, PHP)是Web应用部署的热门选择,但其安全性不容忽视。以下是一些关键的安全设置步骤和最佳实践,助您构建安全的LNMP服务器环境。
一、Linux系统加固
- 权限控制:Nginx、MySQL和PHP-FPM应使用最小权限用户运行。网站目录的文件权限需严格控制,避免PHP直接操作静态文件,建议将静态文件处理交给Nginx。PHP对网站文件的访问权限应仅限于执行权限。
- SSH安全访问:禁用SSH密码登录,改用公钥认证方式。
- iptables配置:启用iptables防火墙,仅开放必要的端口,例如HTTP(80)和HTTPS(443)。
二、Nginx安全策略
- 版本更新:及时更新Nginx至最新稳定版本,修复已知漏洞。
- 虚拟主机配置:合理配置虚拟主机,防止跨目录访问,并使用
open_basedir
限制PHP访问范围。 - 访问限制:利用
limit_req_zone
和limit_req
模块,有效控制访问频率,抵御暴力破解攻击。
三、MySQL数据库安全
- 修改root密码:安装MySQL后,立即使用
mysql_secure_installation
命令设置强密码。 - 访问控制:仅允许信任的IP地址访问MySQL服务。
四、PHP安全加固
- 禁用危险函数:禁用
system
、exec
、passthru
等高危函数,降低安全风险。 - 错误日志管理:避免直接输出错误信息,将错误信息记录到日志中,方便调试。
- 扩展管理:仅启用必要的PHP扩展,禁用不必要的扩展。
五、防火墙与端口管理
- 使用
ufw
防火墙限制必要的端口,如22(SSH)、80(HTTP)、443(HTTPS)和3306(MySQL)。
六、持续维护与监控
- 软件更新:定期更新Nginx、MySQL、PHP和操作系统,及时修复安全漏洞。
- 日志审计:定期检查和分析Nginx、MySQL和PHP日志,及时发现和处理潜在的安全问题。
以上步骤提供了Linux LNMP环境的基本安全设置,但请注意,安全是一个持续的过程,需要定期更新和审查安全措施。