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/
),测试备份恢复流程;