在轻量应用服务器上安全地托管多个网站,需要系统性地进行规划和管理。以下是关键步骤和最佳实践:
一、基础环境配置
-
选择操作系统
- 推荐使用 Ubuntu 20.04/22.04 或 CentOS 7/8(需注意 CentOS 8 已停止维护,可考虑 AlmaLinux/Rocky Linux)。
- 保持系统更新:
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian sudo yum update -y # CentOS/RHEL
-
配置防火墙
- 启用防火墙(如
ufw或firewalld),仅开放必要端口(如 80、443、22):sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 22/tcp sudo ufw enable
- 启用防火墙(如
-
创建非 root 用户
- 避免使用 root 直接操作,使用
sudo权限管理。
- 避免使用 root 直接操作,使用
二、Web 服务器与虚拟主机配置
方案 A:Nginx(推荐高性能场景)
- 安装 Nginx
sudo apt install nginx -y -
配置虚拟主机
- 每个网站在
/etc/nginx/sites-available/创建独立配置文件(如example.com.conf),通过软链接到/etc/nginx/sites-enabled/。 -
示例配置:
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/html; index index.html index.php; location / { try_files $uri $uri/ =404; } # 安全增强 location ~ /. { deny all; } # 隐藏文件 location ~* .(log|sql|bak)$ { deny all; } # 敏感文件 }
- 每个网站在
- 启用 HTTPS
- 使用 Let’s Encrypt 免费证书:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com
- 使用 Let’s Encrypt 免费证书:
方案 B:Apache
- 安装 Apache
sudo apt install apache2 -y - 配置虚拟主机
- 在
/etc/apache2/sites-available/创建配置文件,使用a2ensite启用。 - 确保启用
mod_ssl并配置 SSL。
- 在
三、安全加固措施
-
文件权限控制
- 网站文件所有者设为非特权用户(如
www-data:www-data),目录权限设为755,文件权限设为644:sudo chown -R www-data:www-data /var/www/example.com sudo find /var/www/example.com -type d -exec chmod 755 {} ; sudo find /var/www/example.com -type f -exec chmod 644 {} ;
- 网站文件所有者设为非特权用户(如
-
数据库安全
- 每个网站使用独立的数据库和用户,避免共用凭据。
- 定期备份数据库并加密敏感数据。
-
隔离与监控
- 使用 Docker 容器(可选)隔离每个网站的环境。
- 安装日志监控工具(如
fail2ban防御暴力破解):sudo apt install fail2ban
-
定期更新与备份
- 自动更新安全补丁:
sudo apt install unattended-upgrades - 定期备份网站文件和数据库到远程存储(如云存储或另一台服务器)。
- 自动更新安全补丁:
四、高级优化建议
-
启用 HTTP/2 和缓存
- 在 Nginx/Apache 中配置 HTTP/2 和静态资源缓存,提升性能与安全性。
-
WAF(Web 应用防火墙)
- 使用 ModSecurity(Apache)或 NAXSI(Nginx)防御 SQL 注入、XSS 等攻击。
-
限制资源使用
- 通过
systemd或容器限制每个网站的 CPU/内存使用,避免相互影响。
- 通过
-
隐藏服务器信息
- 在 Web 服务器配置中隐藏版本号等敏感信息。
五、常见问题与排查
- 网站无法访问:检查防火墙、Nginx/Apache 服务状态、域名解析。
- 权限错误:确保文件所有者和 Web 服务器用户匹配。
- SSL 证书过期:设置自动续期(
certbot renew --quiet)。
总结
安全托管多个网站的核心在于:
- 隔离:通过虚拟主机或容器分离各网站。
- 最小权限:严格限制文件、数据库权限。
- 加密:强制使用 HTTPS。
- 监控:实时监控日志与资源使用。
通过以上步骤,你可以在轻量应用服务器上构建一个安全、高效的多网站托管环境。如果遇到具体问题,可结合日志进一步排查。
CLOUD技术笔记