1. 前期准备与环境确认
在开始前确认:VPS 操作系统(建议 Ubuntu 22.04 / Debian 11 或 CentOS 8/Alma)、能用 root 或 sudo 登录、已开通控制台(以防 SSH 被锁)。准备好本地 SSH 公钥文件(id_rsa.pub)。记录 VPS 的公网 IP、控制面板接口和快照功能。
2. 基础系统更新与必备软件安装
登录后先更新:Ubuntu/Debian:sudo apt update && sudo apt -y upgrade;CentOS:sudo yum -y update。安装常用工具:sudo apt install -y vim curl wget git unzip && sudo apt install -y fail2ban ufw (或 CentOS 使用 firewalld)。设置时区:sudo timedatectl set-timezone Asia/Ho_Chi_Minh。
3. 创建非 root 用户并配置 sudo
新建用户并设置 sudo:sudo adduser deployuser;sudo usermod -aG sudo deployuser。把本地公钥复制到服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub deployuser@IP。验证普通用户能 sudo:sudo -l。完成后尽量用该用户进行后续操作。
4. SSH 硬化(步骤与示例)
编辑 /etc/ssh/sshd_config:先备份 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak。建议修改项:Port 2222(自选非22端口)、PermitRootLogin no、PasswordAuthentication no、ChallengeResponseAuthentication no、UsePAM yes、AllowUsers deployuser。保存后重启:sudo systemctl restart sshd。确认新端口能登录后再关闭22端口。
5. 防火墙与登录防护(UFW / firewalld + Fail2Ban)
UFW 示例:sudo ufw default deny incoming && sudo ufw default allow outgoing;sudo ufw allow 2222/tcp;sudo ufw allow 80,443/tcp;sudo ufw enable。CentOS 使用 firewalld:sudo firewall-cmd --permanent --add-port=2222/tcp && firewall-cmd --reload。安装并配置 Fail2Ban:sudo apt install -y fail2ban,复制 /etc/fail2ban/jail.conf -> /etc/fail2ban/jail.local,启用 sshd 针对自定义端口并设置 bantime、findtime、maxretry。
6. SELinux / AppArmor 与关闭不必要服务
CentOS 建议开启 SELinux(/etc/selinux/config 设置 ENFORCING),Ubuntu 使用 AppArmor:sudo apt install apparmor-utils 并启用关键服务的 profile。列出并停用不需要的服务:systemctl list-unit-files --type=service --state=enabled;逐个 sudo systemctl disable --now 服务名。避免安装多余软件,减少攻击面。
7. Web 与数据库性能优化(Nginx、PHP-FPM、MySQL)
Nginx:调整 worker_processes auto、worker_connections 1024、keepalive_timeout 15,开启 gzip 和缓存头。PHP-FPM:调整 pool 中 pm = dynamic、pm.max_children、pm.start_servers 根据内存计算。MySQL/MariaDB:调整 innodb_buffer_pool_size 为内存的 50-70%、max_connections 合理设置,并开启 slow_query_log,使用 mysqltuner.pl 测试并优化。使用 Certbot 申请 Let’s Encrypt:sudo apt install certbot && sudo certbot --nginx。
8. 日志、备份与监控
启用日志轮转:检查 /etc/logrotate.d,确保应用日志定期 rotate。备份:建议同时使用快照 + 异地备份(rsync、borg、rclone 到对象存储)。简单监控:安装 node_exporter/prometheus 或使用 netdata;配置邮件或 Telegram 告警。定期演练恢复流程并验证备份有效性。
9. 自动更新与入侵检测
配置自动安全更新:Ubuntu apt install unattended-upgrades 并编辑 /etc/apt/apt.conf.d/50unattended-upgrades;CentOS 可使用 yum-cron。安装 AIDE 做文件完整性检查:sudo apt install aide && sudo aideinit,定期运行 aide --check。定期使用 lynis 或 CIS 基线工具评估安全性。
10. 常见问答一
问:如何在不丢失连接的情况下更改 SSH 端口? 答:先在 sshd_config 添加新的 Port(如 2222),sudo systemctl restart sshd,然后从本地新端口尝试连接 ssh -p 2222 user@IP 确认无误后再在防火墙中关闭 22 端口并移除旧规则,最后删除或禁用 22 的监听。
11. 常见问答二
问:如何为 VPS 配置双因素登录(2FA)? 答:可用 libpam-google-authenticator:sudo apt install libpam-google-authenticator,作为普通用户运行 google-authenticator 并记录密钥和二维码;编辑 /etc/pam.d/sshd 添加 “auth required pam_google_authenticator.so” 并在 /etc/ssh/sshd_config 设置 AuthenticationMethods publickey,keyboard-interactive:pam,然后重启 sshd 并测试。
12. 常见问答三
问:如何快速检测 VPS 是否被入侵? 答:检查异常登录:sudo lastlog && sudo last;查看 /var/log/auth.log 或 /var/log/secure 中的失败/成功登录记录;使用 netstat -tulnp 或 ss -tulnp 查异常监听端口;查看 crontab、/etc/cron.*、/tmp、/var/tmp 的可疑文件,使用 AIDE 或 rkhunter 扫描。
来源:部署指南越南vps服务器系统环境优化与安全加固步骤