LNMP服务器如何提升安全性
小樊
35
2025-12-10 02:55:41
LNMP服务器安全加固清单
一 系统层加固
- 保持系统与组件更新:定期执行系统包更新(如 yum/apt update),及时修补 Nginx、MySQL/MariaDB、PHP 的漏洞。
- 身份与权限:创建普通用户并授予 sudo,禁用 root 远程登录(/etc/ssh/sshd_config:PermitRootLogin no),设置强密码策略(长度≥10位,含大小写字母、数字、特殊字符),清理无用账户。
- 登录安全:优先使用SSH 密钥认证,可修改默认端口(如 2222),并启用 Fail2ban 防暴力破解([sshd] 段:enabled = true,maxretry = 3)。
- 强制访问控制:启用并保持 SELinux 为 Enforcing 模式,按需调整布尔值(如允许 Nginx 连接数据库:setsebool -P httpd_can_network_connect_db 1)。
- 物理与引导安全:禁用不必要外设,设置 BIOS/GRUB 密码,减少物理与引导层风险。
二 网络与防火墙
- 最小化开放端口:仅开放业务所需端口(如 80/443/SSH),数据库端口(如 3306)建议仅内网访问。
- firewalld 示例(CentOS 7+):
- 启动与开机自启:systemctl start firewalld && systemctl enable firewalld
- 放行 HTTP/HTTPS:firewall-cmd --permanent --add-service=http --add-service=https
- 放行 SSH(示例端口 2222):firewall-cmd --permanent --add-port=2222/tcp
- 使配置生效:firewall-cmd --reload;验证:firewall-cmd --list-all
- iptables 思路:默认策略 DROP,放行已建立连接(ESTABLISHED,RELATED)、SSH、HTTP/HTTPS,再按需细化规则与保存。
三 Nginx 与 PHP 安全配置
- Nginx 基础安全:
- 隐藏版本:server_tokens off;
- 安全响应头:
- X-Frame-Options “SAMEORIGIN”
- X-Content-Type-Options “nosniff”
- Content-Security-Policy “default-src ‘self’; script-src ‘self’; object-src ‘none’”
- Strict-Transport-Security “max-age=63072000; includeSubDomains; preload”
- 访问与速率限制:
- 并发连接限制:
- limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
- limit_conn conn_limit_per_ip 10;
- 请求速率限制:
- limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
- 目录与请求控制:禁用自动索引(autoindex off;),仅允许必要 HTTP 方法(GET/POST/HEAD),按需做 IP 白名单。
- PHP 安全:
- 禁用危险函数:disable_functions = eval,system,exec,passthru,shell_exec,proc_open,proc_get_status,pcntl_exec(按应用需要调整)。
- 错误与日志:生产环境关闭 display_errors,开启 log_errors 写入日志。
- 访问边界:open_basedir 限制脚本可访问目录;上传目录与 PHP 执行目录分离,上传文件禁止执行。
- 资源与执行隔离:使用 php-fpm 池与不同用户运行,限制 upload_max_filesize / post_max_size,必要时用 cgroups/ulimit 限制资源。
四 数据库 MySQL/MariaDB 安全
- 强口令与账户管理:为所有数据库用户设置复杂且唯一的密码,定期更换。
- 最小权限原则:按库/表/列授予权限,避免使用 root 远程连接应用。
- 加密与访问控制:启用 SSL/TLS 连接,限制来源 IP 与端口访问(数据库端口默认 3306,生产环境建议仅内网开放)。
- 安全基线:删除匿名账户与测试库,限制本地/远程登录方式,定期审计用户与权限。
五 运维监控与备份恢复
- 日志与审计:集中收集并定期审计 Nginx、PHP-FPM、MySQL 日志;使用 Fail2ban、Logwatch/Tripwire 检测异常登录与篡改;必要时引入 ELK/Prometheus+Grafana 做可视化监控与告警。
- 备份与演练:制定定期备份(配置、代码、数据库),保留多份异地副本并定期恢复演练,确保可快速回滚。
- 持续更新与测试:保持 OS/Nginx/MySQL/PHP 及依赖库为最新稳定版;上线前进行安全审计/渗透测试;使用 SSL Labs 测试(目标评分 A/A+)。