centos

centos lnmp安全防护怎么做

小樊
44
2025-09-22 09:18:45
栏目: 智能运维

CentOS LNMP环境安全防护全指南
LNMP(Linux+ Nginx+ MySQL+ PHP)作为主流Web架构,其安全性需从系统基础、组件配置、访问控制、数据保护、监控审计五大维度综合加固。以下是具体实施步骤:

一、系统基础安全加固

  1. 系统更新与补丁管理
    定期执行sudo yum update -y更新CentOS系统及所有软件包,及时修复内核、Nginx、MySQL、PHP等组件的已知漏洞,避免被恶意利用。
  2. 用户与权限管理
    • 创建专用Web服务用户(如webuser),设置/sbin/nologin作为shell,禁止登录;
    • 禁用root用户SSH远程登录(修改/etc/ssh/sshd_config中的PermitRootLogin no并重启SSH服务);
    • 为Nginx、MySQL、PHP-FPM服务分配最小权限用户(如Nginx用nginx、PHP-FPM用webuser),避免权限滥用。
  3. SSH安全配置
    • 禁用密码登录,启用公钥认证(修改/etc/ssh/sshd_config中的PasswordAuthentication no);
    • 更改SSH默认端口(如改为2222),减少暴力破解尝试;
    • 使用fail2ban监控SSH日志,自动封禁多次登录失败的IP。

二、组件安全配置

1. Nginx安全设置

2. MySQL/MariaDB安全设置

3. PHP安全配置

三、访问控制与网络隔离

  1. 防火墙配置
    使用firewalldiptables限制访问:
    • 仅开放必要端口(HTTP:80、HTTPS:443、SSH:22);
    • 禁止外部直接访问MySQL(3306端口),如firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="3306" protocol="tcp" reject'
    • 限制SSH访问IP(如仅允许公司IP访问)。
  2. Nginx访问限制
    • 使用allow/deny指令限制特定IP访问敏感目录(如location ~ ^/admin { allow 192.168.1.100; deny all; });
    • 启用auth_basic认证(如auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd;),增加访问门槛。

四、数据安全保护

  1. SSL/TLS加密
    使用Let’s Encrypt获取免费SSL证书(通过certbot工具),配置Nginx强制HTTPS(return 301 https://$host$request_uri;),并启用HSTS(add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";),确保数据传输加密。
  2. 文件与目录权限
    • 网站目录权限设置为750(所有者:webuser,组:webuser,其他用户无写权限);
    • 文件权限设置为640(所有者可读写,组可读,其他用户无权限);
    • 配置文件(如/etc/nginx/nginx.conf/etc/php.ini)权限设置为600(仅所有者可读写)。
  3. 数据备份策略
    • 定期备份网站数据(如/var/www/html)和数据库(使用mysqldump),备份文件存储在异地(如云存储);
    • 测试备份恢复流程,确保灾难发生时可快速恢复。

五、监控与持续维护

  1. 日志监控与分析
    • 收集Nginx(access.logerror.log)、MySQL(error.log)、PHP(php_errors.log)日志,使用logwatchELK Stack(Elasticsearch+Logstash+Kibana)进行分析,及时发现异常请求(如大量404、SQL注入尝试);
    • 设置日志轮转(通过/etc/logrotate.d/nginx),避免日志文件过大占用磁盘空间。
  2. 安全审计与更新
    • 定期进行安全审计(如检查系统日志、组件漏洞),使用lynis等工具进行安全基线核查;
    • 关注组件官方安全公告(如Nginx、MySQL、PHP),及时升级到最新稳定版本。
  3. 防DDoS与暴力破解
    • 使用fail2ban监控Nginx、SSH日志,自动封禁多次访问失败的IP(如[nginx-http-auth] jail用于防范暴力破解);
    • 配置Nginx请求速率限制(如limit_req_zone),防止CC攻击;
    • 考虑使用专业DDoS防护服务(如Cloudflare),应对大规模攻击。

0
看了该问题的人还看了