1. 系统基础安全加固
sudo apt update && sudo apt upgrade命令安装所有可用安全更新,确保操作系统及LNMP组件(Nginx、MySQL/MariaDB、PHP)处于最新版本,修补已知漏洞。libpam-pwquality工具,编辑/etc/security/pwquality.conf文件,设置密码复杂度要求(如最小长度、包含大小写字母/数字/特殊字符),强制用户使用强密码。systemctl list-units --type service --state=running命令列出运行中的服务,禁用未使用的服务(如FTP、Telnet),减少攻击面。2. 网络与访问控制
ufw(Uncomplicated Firewall)工具,仅允许必要端口(如SSH的22端口、HTTP的80端口、HTTPS的443端口)对外开放,命令示例:sudo ufw allow OpenSSH、sudo ufw allow 80/tcp、sudo ufw allow 443/tcp,然后启用防火墙sudo ufw enable。/etc/ssh/sshd_config文件,进行以下设置:更改默认SSH端口(如Port 2222)、禁用root远程登录(PermitRootLogin no)、启用SSH密钥认证(PasswordAuthentication no),重启SSH服务使配置生效。3. LNMP组件安全加固
http_autoindex_module、http_gzip_module,若无需目录列表或压缩功能),减少潜在攻击点;ssl_certificate(证书路径)和ssl_certificate_key(私钥路径)指令,启用HTTPS;server或location块中添加client_max_body_size 10M;,防止大文件上传导致的DDoS攻击;allow/deny指令限制特定IP访问敏感目录(如location /admin { allow 192.168.1.100; deny all; })。mysql_secure_installation脚本,完成root密码设置、移除匿名用户、禁止root远程登录、删除测试数据库等操作;/etc/mysql/mysql.conf.d/mysqld.cnf),将bind-address设置为127.0.0.1,限制MySQL仅监听本地接口,防止远程非法访问;log_bin = /var/log/mysql/mysql-bin.log)和慢查询日志(slow_query_log = 1),便于审计和排查性能问题。php.ini文件(如/etc/php/8.1/fpm/php.ini),修改disable_functions参数,禁用exec、system、shell_exec等函数,防止恶意代码执行;/etc/php/8.1/fpm/pool.d/www.conf)中,调整pm.max_children(最大子进程数,如5)、pm.start_servers(启动时的子进程数,如5)等参数,防止资源耗尽攻击;display_errors = Off,log_errors = On,避免在生产环境中泄露敏感信息(如数据库结构、路径),错误日志记录到/var/log/php_errors.log。4. 安全工具与监控
sudo apt install fail2ban命令安装,配置/etc/fail2ban/jail.local文件,针对SSH、Nginx等服务的暴力破解行为进行自动封禁(如maxretry = 3,尝试3次失败后封禁IP),减少非法登录风险。Logwatch工具(sudo apt install logwatch)生成每日系统日志报告,分析异常活动;或使用Prometheus+Grafana搭建实时监控系统,监控服务器CPU、内存、磁盘使用情况,以及Nginx、MySQL的运行状态,及时发现并响应安全事件。5. 数据备份与权限管理
rsync、tar等工具备份网站文件(如/var/www/html)、数据库(通过mysqldump导出),并将备份文件存储到异地(如云存储),防止数据丢失。chown -R www-data:www-data /var/www/html,chmod -R 750 /var/www/html),确保Nginx用户(通常为www-data)仅能访问必要的文件;避免使用root用户运行Nginx、PHP-FPM等服务,降低权限滥用风险。