保持软件持续更新
定期更新Ubuntu系统、Nginx、MySQL、PHP及相关依赖至最新版本,及时修补已知安全漏洞。可通过sudo apt update && sudo apt upgrade -y命令一键更新,建议开启unattended-upgrades实现自动更新。
强化SSH访问安全
/etc/ssh/sshd_config,将Port 22改为非标准端口(如2222),减少暴力破解风险;PermitRootLogin no,禁止直接通过SSH登录root账户;PubkeyAuthentication yes并禁用密码认证(PasswordAuthentication no),使用SSH密钥对登录;sudo systemctl restart sshd。配置防火墙限制访问
使用UFW(Uncomplicated Firewall)限制入站/出站连接,仅允许必要端口:
sudo ufw allow 2222/tcp;sudo ufw allow 'Nginx Full';sudo ufw enable;sudo ufw default deny incoming。优化Nginx配置
autoindex),减少攻击面;add_header X-Content-Type-Options "nosniff"; add_header X-Frame-Options "SAMEORIGIN"; add_header Content-Security-Policy "default-src 'self';",防范MIME类型嗅探、点击劫持等攻击;server_tokens off;,避免暴露Nginx版本;limit_req_zone和limit_req指令限制单个IP的请求频率(如1秒1次),防范DDoS/CC攻击。加固MySQL/MariaDB安全
sudo mysql_secure_installation,完成设置强root密码、删除匿名用户、禁止远程root登录等操作;GRANT ALL PRIVILEGES ON database.* TO 'user'@'trusted_ip' IDENTIFIED BY 'strong_password';);ssl-ca、ssl-cert、ssl-key参数),加密客户端与服务器间的通信。安全配置PHP
/etc/php/{version}/fpm/php.ini,设置disable_functions = eval,passthru,exec,system,chroot,scandir,shell_exec,proc_open,禁止执行危险系统命令;open_basedir限制PHP脚本只能访问指定目录(如/var/www/html:/tmp/),防止越权访问;display_errors = Off,避免暴露服务器路径、数据库结构等敏感信息;allow_url_include = Off,防止远程文件包含攻击。使用Web应用防火墙(WAF)
部署ModSecurity等WAF,过滤恶意请求(如SQL注入、XSS攻击)。可通过sudo apt install libapache2-mod-security2安装(若使用Apache作为前端代理),或使用Nginx的ModSecurity模块,配置规则集(如OWASP Core Rule Set)。
启用HTTPS加密通信
使用Let’s Encrypt免费证书服务获取SSL证书,配置Nginx支持HTTPS:
sudo apt install certbot python3-certbot-nginx;sudo certbot --nginx -d yourdomain.com;sudo certbot renew --dry-run测试。监控与日志管理
/var/log/nginx/access.log/error.log)、MySQL(/var/log/mysql/error.log)、PHP(/var/log/php{version}-fpm.log)的日志,使用fail2ban监控异常登录(如SSH暴力破解);数据备份与恢复
定期备份网站数据(/var/www/html)和数据库(mysqldump -u root -p database_name > backup.sql),将备份文件存储在异地(如云存储)或离线介质(如移动硬盘),测试备份恢复流程,确保安全事件发生时能快速恢复。
安全编码实践
开发Web应用时遵循安全编码规范:
SELECT * FROM users WHERE username = '$username');SELECT、INSERT),避免使用root账户。