1. 系统与软件持续更新
定期更新Debian系统及LNMP组件(Nginx、MySQL、PHP),及时修补已知安全漏洞。使用sudo apt update && sudo apt upgrade命令更新系统,通过官方源或可信第三方源升级LNMP组件至最新稳定版。
2. 防火墙严格管控
使用ufw(Uncomplicated Firewall)配置防火墙规则,限制入站流量:
sudo ufw allow 80/tcp(HTTP)、sudo ufw allow 443/tcp(HTTPS)、sudo ufw allow 3306/tcp(MySQL,建议替换为特定IP)、sudo ufw allow ssh(远程管理);sudo ufw default deny incoming(拒绝所有入站)、sudo ufw default allow outgoing(允许所有出站);sudo ufw enable,通过sudo ufw status查看规则。3. SSH服务安全强化
/etc/ssh/sshd_config,设置PermitRootLogin no;ssh-keygen -t rsa),将公钥添加至~/.ssh/authorized_keys,关闭密码认证(PasswordAuthentication no);Port 22为其他端口(如2222),减少自动扫描风险;sudo systemctl restart sshd。4. Nginx配置安全优化
http_autoindex_module),减少攻击面;limit_req_zone模块防止暴力破解,例如limit_req_zone $binary_remote_addr zone=req_per_ip:10m rate=10r/s;;nginx.conf中添加server_tokens off;,避免泄露Nginx版本;return 301 https://$host$request_uri;将HTTP请求重定向至HTTPS,配置SSL/TLS证书(如Let’s Encrypt)。5. MySQL数据库安全加固
sudo mysql_secure_installation,移除匿名用户、禁止root远程登录、移除测试数据库;bind-address为服务器IP(0.0.0.0仅允许多IP访问),创建专用数据库用户并授予最小权限(如GRANT SELECT, INSERT ON db.* TO 'user'@'特定IP';);mysqldump或工具(如Percona XtraBackup)备份数据库,测试恢复流程。6. PHP安全配置限制
/etc/php/7.x/fpm/php.ini(根据版本调整),设置disable_functions = system, exec, passthru, shell_exec;open_basedir将PHP访问限制在网站目录(如open_basedir = /var/www/html/:/tmp/);display_errors = Off,将错误日志记录到/var/log/php_errors.log(error_log = /var/log/php_errors.log);pm.max_children(如pm.max_children = 50)防止资源耗尽。7. 日志监控与入侵检测
access_log/error_log)、MySQL(general_log/slow_query_log)、PHP(error_log)记录所有活动;fail2ban防范暴力破解(如针对SSH、Nginx的多次失败登录),配置logwatch每日发送日志摘要;/var/log/nginx/、/var/log/mysql/、/var/log/php/中的异常记录(如大量404请求、SQL错误)。8. 其他关键安全措施
www-data、mysql)运行,网站目录权限设为750(所有者可读写执行,组可读执行,其他无权限);htmlspecialchars防XSS)、使用预处理语句(PDO::prepare)防SQL注入;/var/www/html/)和配置文件(如/etc/nginx/、/etc/mysql/),测试备份恢复流程;