1.1 购买韩国VPS并获取控制面板与IP。确认系统发行版(Ubuntu/Debian/CentOS/RHEL)。
1.2 在本地生成SSH密钥对:在终端执行 ssh-keygen -t rsa -b 4096 -C "you@example.com",将公钥(~/.ssh/id_rsa.pub)上传到VPS控制面板或使用 ssh-copy-id user@vps_ip。
1.3 通过密钥登录测试:ssh -i ~/.ssh/id_rsa user@vps_ip,确认连接稳定后关闭使用密码的root登录(后续步骤)。
2.1 登录后先切换到root或有sudo权限的用户,执行系统更新:Ubuntu/Debian:sudo apt update && sudo apt upgrade -y,CentOS/RHEL:sudo yum update -y。
2.2 安装常用工具:sudo apt install -y ufw fail2ban vim curl wget git 或 CentOS:sudo yum install -y firewalld fail2ban vim curl wget git。
2.3 检查时区与时间同步:安装并启用ntp或chrony,确保日志时间准确:sudo timedatectl set-timezone Asia/Seoul。
3.1 创建用户并加入sudo组:sudo adduser deploy,然后 sudo usermod -aG sudo deploy(Ubuntu)或 usermod -aG wheel deploy(CentOS)。
3.2 将公钥复制到该用户:sudo mkdir -p /home/deploy/.ssh && sudo chmod 700 /home/deploy/.ssh && sudo cp ~/.ssh/authorized_keys /home/deploy/.ssh/ && sudo chown -R deploy:deploy /home/deploy/.ssh。
3.3 编辑SSH配置文件 /etc/ssh/sshd_config:禁用密码登录并禁用root登录,示例修改项:PermitRootLogin no、PasswordAuthentication no、(可选)修改端口 Port 2222。保存后重启SSH:sudo systemctl restart sshd。
4.1 启用并默认拒绝入站:sudo ufw default deny incoming; sudo ufw default allow outgoing。
4.2 允许必需端口:例如SSH(若改端口2222):sudo ufw allow 2222/tcp,HTTP/HTTPS:sudo ufw allow 80/tcp; sudo ufw allow 443/tcp。
4.3 若需限速SSH:sudo ufw limit 2222/tcp。确认并启用:sudo ufw enable,查看状态:sudo ufw status verbose。
5.1 启用并开机自启:sudo systemctl enable --now firewalld。
5.2 永久添加规则并重新加载:允许SSH(端口示例2222):sudo firewall-cmd --permanent --add-port=2222/tcp,允许HTTP/HTTPS:sudo firewall-cmd --permanent --add-service=http; sudo firewall-cmd --permanent --add-service=https,然后 sudo firewall-cmd --reload。
5.3 使用rich rules限制来源IP或速率,例如限制某IP访问:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" reject'。
6.1 若希望使用更细粒度控制,可使用iptables/nft。示例阻止常见扫描:sudo iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j DROP。
6.2 保存规则并持久化:Ubuntu安装iptables-persistent:sudo apt install -y iptables-persistent,保存:sudo netfilter-persistent save。
7.1 安装(Ubuntu/Debian/ CentOS均可用):sudo apt install -y fail2ban 或 sudo yum install -y fail2ban。
7.2 创建本地配置:复制默认配置并编辑:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local,编辑 [sshd] 区块:设置 enabled = true、port = 2222、maxretry = 5、bantime = 3600。
7.3 重启服务并检查状态:sudo systemctl restart fail2ban; sudo fail2ban-client status sshd。
8.1 编辑 /etc/sysctl.conf 添加推荐项,例如:
net.ipv4.ip_forward = 0; net.ipv4.tcp_syncookies = 1; net.ipv4.conf.all.rp_filter = 1; net.ipv4.conf.default.accept_source_route = 0
8.2 生效配置:sudo sysctl -p。这些可减少IP欺骗、SYN攻击面。
9.1 列出并关闭多余服务:sudo ss -tulpn 或 sudo systemctl list-unit-files --type=service,对于不必要的服务使用 sudo systemctl disable --now 服务名。
9.2 对外暴露的Web服务应启用HTTPS(使用Let's Encrypt):安装certbot并申请证书:sudo apt install -y certbot; sudo certbot --nginx。
10.1 安装并启用auditd或logwatch:sudo apt install -y auditd logwatch,配置邮件通知或集成到第三方监控(Datadog、Prometheus、Zabbix)。
10.2 配置Fail2Ban、UFW及syslog日志轮转:查看 /var/log 并配置 /etc/logrotate.d/ 以避免日志占满磁盘。
11.1 对于关键补丁,建议启用自动安全更新:Ubuntu:sudo apt install unattended-upgrades 并配置 /etc/apt/apt.conf.d/50unattended-upgrades。
11.2 建立定期备份:使用rsync/duplicity或VPS提供的快照功能,备份重要配置文件(/etc)与数据目录,测试恢复流程。
12.1 启用并正确配置SELinux(CentOS)或AppArmor(Ubuntu)以限制进程权限,避免简单禁用,按需调整策略。
12.2 容器化应用需注意映射权限、避免以root运行容器、限制capabilities,使用Docker的--user和--read-only等选项。
13.1 如果启用SSH新端口后无法连接,仍保留控制面板的Web控制台或VPS主机提供的救援模式,可以在救援模式下修正 /etc/ssh/sshd_config 或 UFW 规则。
13.2 遇到网络被阻断先检查防火墙规则:UFW:sudo ufw status numbered;firewalld:sudo firewall-cmd --list-all。必要时使用控制面板重置网络配置。
14.1 问:我想把SSH从22端口改成2222,怎样安全操作避免把自己锁在外面?
14.2 答:先编辑 /etc/ssh/sshd_config 修改 Port 2222,并双方(UFW或firewalld)先开放新端口(例如 sudo ufw allow 2222/tcp),再重启sshd:sudo systemctl restart sshd。确认新会话能成功登录(在新终端测试),确认无误后再修改防火墙策略并禁用22端口与PermitRootLogin/password auth。
15.1 问:我的韩国VPS是CentOS系统,推荐使用UFW还是firewalld?
15.2 答:CentOS默认支持firewalld,建议使用它以配合系统控制器和SELinux。UFW主要面向Debian/Ubuntu,虽然能安装在CentOS但兼容性和社区支持不如firewalld。选择firewalld能更方便地使用zone、rich rules与服务管理。
16.1 问:如果VPS遭遇DDoS攻击,我有哪些应急与长期防护措施?
16.2 答:应急时先联系VPS提供商请求上游流量清洗或调整防护策略;在VPS端可以临时限制连接数、调整iptables速率限制、封禁来源IP段。长期防护建议:使用CDN/WAF(Cloudflare、阿里云WAF等)做边缘防护,配置rate limiting、启用验证码/挑战机制,并监控流量异常,必要时购买带宽防护服务。