怎样保障centos lnmp的数据安全
导读:CentOS LNMP 数据安全落地方案 一 安全基线与访问控制 系统与软件更新:保持 CentOS 与 Nginx/MySQL/PHP 的持续更新,及时修补漏洞。 防火墙最小化:仅放行 SSH(22 、HTTP(80 、HTTPS(44...
CentOS LNMP 数据安全落地方案
一 安全基线与访问控制
- 系统与软件更新:保持 CentOS 与 Nginx/MySQL/PHP 的持续更新,及时修补漏洞。
- 防火墙最小化:仅放行 SSH(22)、HTTP(80)、HTTPS(443)。示例:
- firewall-cmd --permanent --set-default-zone=drop
- firewall-cmd --permanent --zone=public --add-service=ssh --add-service=http --add-service=https
- firewall-cmd --reload
- 身份与登录安全:
- 禁用 root 远程登录,使用 SSH 密钥认证;必要时修改默认 SSH 端口 并限制可登录用户。
- 配置 Fail2ban 保护 SSH 与 Nginx 登录入口。
- 权限与系统防护:
- 以最小权限运行服务(Nginx、MySQL、PHP-FPM 使用专用低权用户/组)。
- 启用 SELinux 并执行最小权限策略;对关键文件(如 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow)设置 chattr +i 防篡改。
- 设置 TMOUT 自动注销、限制 su 使用范围。
二 组件安全配置
- Nginx
- 隐藏版本号:server_tokens off;
- 全站 HTTPS 与强化头部:
- 使用 Certbot 申请证书并开启重定向、HSTS、OCSP Stapling。
- 安全头:X-Frame-Options SAMEORIGIN、X-Content-Type-Options nosniff、Referrer-Policy、Permissions-Policy、Content-Security-Policy、Strict-Transport-Security。
- 请求与连接限制防 DoS:client_max_body_size 2M; client_body_timeout 10s; keepalive_timeout 15; 以及 limit_conn/limit_req。
- 管理路径 IP 白名单:对 /admin/ 等敏感路径仅允许可信来源。
- MySQL
- 运行安全初始化:mysql_secure_installation(删匿名、禁 test、禁 root 远程)。
- 绑定本地:bind-address = 127.0.0.1,skip-name-resolve。
- 最小权限:为应用创建专用账号,仅授予目标库必要权限(如 SELECT/INSERT/UPDATE/DELETE)。
- 启用 SSL 加密客户端连接(配置 ssl-ca/ssl-cert/ssl-key)。
- PHP
- 关闭暴露与调试:expose_php = Off、display_errors = Off、log_errors = On、error_log。
- 资源与上传:memory_limit、max_execution_time、max_input_time、upload_max_filesize、post_max_size 合理设置。
- 会话加固:session.cookie_httponly=1、session.cookie_secure=1、session.use_strict_mode=1。
- 禁用危险函数:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,…。
- 目录隔离:open_basedir 限制 PHP 仅访问指定目录(如 /var/www/html:/tmp)。
三 备份与恢复策略
- 备份范围与频率
- 数据库:使用 mysqldump 做逻辑备份(如每日),建议参数 –single-transaction --quick --lock-tables=false 减少锁表影响。
- 文件与配置:/etc/nginx、/var/www/html、/var/log、/etc/php.ini、/etc/php.d、/etc/my.cnf 等关键目录与配置。
- 策略建议:采用 全量 + 增量(如每周全量、每日增量),并保留至少 7–30 天;对备份文件做 MD5/SHA256 校验 与异地/离线留存。
- 传输与存储
- 内网 Rsync + SSH 或 Rsync Daemon 推送至备份服务器,模块级鉴权、权限 600、限制 hosts allow;备份存储建议 RAID5/6、冗余与定期巡检。
- 自动化与批量
- 编写备份脚本(全量/增量)、输出日志、清理过期包;多机环境用 Ansible 批量分发与定时任务(crontab)。
- 恢复演练
- 定期做恢复演练与完整性校验,验证备份可用性与恢复时效(RPO/RTO)。
- 示例命令
- 数据库备份:
- mysqldump -u root -p --all-databases --single-transaction --quick --lock-tables=false | gzip > mysql_$(date +%F).sql.gz
- 文件打包:
- tar -zcf web_$(date +%F).tar.gz /etc/nginx /var/www/html /var/log/nginx /etc/php.ini /etc/php.d /etc/my.cnf
- Rsync 推送(SSH):
- rsync -avz --delete /backup/ user@backup-server:/data/backup/hostname/
- 数据库备份:
- 参考实践
- 大规模 CentOS 7.9 场景可采用 Rsync 主从、按 IP/主机名 分目录、全量/增量与批量部署/验证的完整方案。
四 监控审计与应急响应
- 日志与审计
- 集中收集 Nginx 访问/错误日志、PHP-FPM 日志、MySQL 错误/慢查询日志、系统安全日志,并保留足够保留期。
- 启用 Fail2ban 对 SSH/Nginx 暴力尝试进行自动封禁;对关键目录与命令设置审计规则。
- 入侵检测与基线核查
- 定期执行安全基线核查与漏洞扫描;对异常登录、权限变更、敏感文件改动设置告警。
- 应急响应预案
- 明确流程:隔离受影响主机 → 取证与溯源 → 从最近可用备份恢复 → 修复漏洞 → 复盘改进;关键业务建立热备/只读副本与快速切换机制。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样保障centos lnmp的数据安全
本文地址: https://pptw.com/jishu/787689.html
