系统层强化
sudo apt update && sudo apt upgrade安装最新安全补丁,降低已知漏洞风险;可配置unattended-upgrades实现自动更新,确保系统及软件(如Nginx、MySQL、PHP)始终保持最新状态。ufw(Uncomplicated Firewall)配置默认拒绝所有入站连接,仅允许必要端口(如SSH:修改后的非标准端口(如2222)、HTTP:80、HTTPS:443、MySQL:3306);运行sudo ufw enable开启防火墙,sudo ufw reload应用设置。sudo apt install fail2ban安装,编辑/etc/fail2ban/jail.local启用SSH防护(enabled = true、port = 2222、maxretry = 3、bantime = 600),自动封禁多次登录失败的IP,防范暴力破解。/etc/ssh/sshd_config,设置Port 2222(非标准端口)、PermitRootLogin no、PubkeyAuthentication yes、PasswordAuthentication no;将本地公钥(~/.ssh/id_rsa.pub)复制到服务器~/.ssh/authorized_keys,重启SSH服务(sudo systemctl restart sshd)提升远程登录安全性。Nginx强化
/etc/nginx/nginx.conf或/etc/nginx/sites-available/default),添加server_tokens off;,避免响应头中暴露Nginx版本信息,减少针对性攻击。sudo apt install certbot python3-certbot-nginx),配置Nginx重定向HTTP到HTTPS(return 301 https://$host$request_uri;);在SSL配置中启用强加密套件(如ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5;)、设置合理的会话缓存(ssl_session_cache shared:SSL:10m;)和会话超时(ssl_session_timeout 1h;),提升传输安全。server块中添加安全头部,如add_header X-Content-Type-Options "nosniff";(防止MIME类型嗅探)、X-Frame-Options "SAMEORIGIN"(防范点击劫持)、X-XSS-Protection "1; mode=block"(启用XSS防护)、Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"(强制HTTPS),增强客户端安全。http块中添加limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;(定义请求速率限制),在server或location块中使用limit_req zone=mylimit burst=5 nodelay;限制突发请求(如5个请求),防止DoS/DDoS攻击;同时设置client_max_body_size 2M;(限制上传文件大小,避免大文件消耗资源)。events块中调整worker_connections 1024;(每个worker进程的最大连接数),限制并发连接数,防止资源耗尽。MySQL/MariaDB强化
sudo mysql_secure_installation,按照提示设置root密码(强密码,包含大小写字母、数字和特殊字符)、删除匿名用户(DELETE FROM mysql.user WHERE User='';)、禁止远程root登录(REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';)、删除测试数据库(DROP DATABASE IF EXISTS test;),提升数据库初始安全性。GRANT SELECT, INSERT, UPDATE ON appdb.* TO 'appuser'@'localhost';),避免使用root账户连接数据库;限制远程访问(bind-address = 127.0.0.1,仅在/etc/mysql/mysql.conf.d/mysqld.cnf中允许本地连接),减少远程攻击面。/etc/mysql/mysql.conf.d/mysqld.cnf),添加log_error = /var/log/mysql/error.log(记录错误日志)、general_log = 1(开启通用查询日志,可选,生产环境谨慎使用)、slow_query_log = 1(开启慢查询日志,long_query_time = 2,记录执行时间超过2秒的查询),便于排查异常行为。PHP强化
/etc/php/7.x/fpm/php.ini,版本根据实际调整),设置expose_php = Off(隐藏PHP版本信息)、display_errors = Off(禁止显示错误信息,避免泄露敏感路径或代码)、log_errors = On(开启错误日志,error_log = /var/log/php_errors.log)、memory_limit = 128M(限制内存使用,防止内存耗尽)、max_execution_time = 30(限制脚本执行时间,避免长时间占用资源)、file_uploads = On(允许文件上传,但需配合其他限制)、upload_max_filesize = 2M(限制上传文件大小)、post_max_size = 8M(限制POST数据大小)。/etc/php/7.x/fpm/pool.d/www.conf)或php.ini中添加open_basedir = /var/www/html:/tmp/,限制PHP脚本只能访问指定目录(如网站根目录/var/www/html和临时目录/tmp),防止越权访问系统文件。755(chmod -R 755 /var/www/html),所有者为www-data(chown -R www-data:www-data /var/www/html),避免其他用户修改网站文件;上传目录(如/var/www/html/uploads)设置为755,禁用PHP执行(在Nginx配置中添加location ~* ^/uploads/.*\.(php|php5)$ { deny all; }),防止上传恶意脚本。其他强化建议
rsync、tar或工具(如Duplicity、Restic)定期备份网站文件(/var/www/html)和数据库(mysqldump -u appuser -p appdb > appdb_backup.sql),存储到异地(如云存储、另一台服务器),确保数据丢失后可快速恢复。Netdata(实时系统监控,sudo apt install netdata)、Prometheus+Grafana(可视化监控,用于监控服务器性能、Nginx请求量、MySQL连接数等),及时发现异常(如CPU占用过高、内存泄漏、异常请求)。Cloudflare(免费版提供基础WAF,支持SQL注入、XSS、CC攻击防护)、ModSecurity(开源WAF,sudo apt install libapache2-mod-security2,需配合Nginx配置)过滤恶意请求,提升Web应用安全性。Snort(轻量级IDS,sudo apt install snort)或Suricata(高性能IPS,sudo apt install suricata),监控网络流量,识别并阻止入侵行为(如端口扫描、恶意代码注入)。