Linux中LNMP安全设置指南
LNMP(Linux+Nginx+MySQL+PHP)是常见的Web服务架构,需从系统基础、组件配置、权限管理、监控审计等多维度强化安全。以下是具体安全设置步骤:
sudo apt update && sudo apt upgrade -y;CentOS/RHEL系统执行sudo yum update -y。webuser),避免Nginx/PHP-FPM以root运行;禁用root SSH登录,修改/etc/ssh/sshd_config中的PermitRootLogin no并重启SSH服务(sudo systemctl restart sshd)。sudo ufw allow 22; sudo ufw allow 80; sudo ufw allow 443; sudo ufw enable。server_tokens off;),移除Server、X-Powered-By等HTTP头(more_clear_headers 'Server'; more_clear_headers 'X-Powered-By';)。if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 405; });使用limit_req_zone限制请求频率(如每秒10个请求),抵御暴力破解。ECDHE-ECDSA-AES256-GCM-SHA384),启用OCSP Stapling提升验证效率。X-Frame-Options "SAMEORIGIN"防点击劫持、X-XSS-Protection "1; mode=block"启XSS保护、Content-Security-Policy "default-src 'self'"控资源加载、X-Content-Type-Options "nosniff"防MIME混淆)。sudo mysql_secure_installation,设置root强密码,移除匿名用户、测试数据库及远程root登录。webuser),限制其仅能从localhost访问,并授予最小必要权限(如SELECT, INSERT, UPDATE);修改/etc/mysql/my.cnf,设置bind-address = 127.0.0.1禁止远程访问。skip-name-resolve(避免DNS反向解析延迟)、local-infile=0(防止文件读取漏洞)、secure-file-priv=/var/lib/mysql-files(限制文件导入导出路径)。exec, passthru, shell_exec),关闭错误显示(display_errors = Off),记录错误到日志(log_errors = On; error_log = /var/log/php_errors.log);禁止URL包含/打开(allow_url_fopen = Off; allow_url_include = Off),启用cgi.fix_pathinfo=0防止路径遍历。webuser)运行,设置listen.owner和listen.group为webuser;调整进程池参数(pm.max_children = 50,根据服务器内存调整),避免资源耗尽。open_basedir,限制PHP仅能访问网站目录(如/var/www/html:/tmp/),防止目录穿越攻击。sudo chown -R webuser:webuser /var/www/html),目录权限设为750(find /var/www/html -type d -exec chmod 750 {} \;),文件权限设为640(find /var/www/html -type f -exec chmod 640 {} \;),避免PHP直接操作静态文件。/etc/mysql/my.cnf、/etc/php/7.4/fpm/php.ini、Nginx虚拟主机配置)的访问权限为600(chmod 600 /path/to/config)。/etc/logrotate.d/nginx),每日归档、保留14天、压缩旧日志,避免日志文件过大。sudo apt install fail2ban),配置针对SSH、Nginx的防护规则(如禁止多次失败登录的IP),实时阻断恶意访问。sudo rkhunter --check);定期检查Nginx、MySQL、PHP日志,分析异常请求(如大量404、POST请求)。mysqldump -u root -p --all-databases | gzip > /backup/mysql_$(date +%Y%m%d).sql.gz)、网站文件(tar -czvf /backup/website_$(date +%Y%m%d).tar.gz /var/www/html)、配置文件(tar -czvf /backup/config_$(date +%Y%m%d).tar.gz /etc/nginx /etc/mysql /etc/php)。sudo apt install unattended-upgrades),配置自动安装安全更新(sudo dpkg-reconfigure --priority=low unattended-upgrades),减少手动维护成本。