1.
环境准备与初始登录
步骤1:拿到韩国VPS的IP与初始root密码或密钥;步骤2:使用SSH密钥登录(建议在本地先生成密钥对:ssh-keygen -t rsa -b 4096),然后上传公钥到服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub root@your-ip;步骤3:为后续操作创建不可少的普通管理员用户(例:deploy),命令示例:adduser deploy && usermod -aG sudo deploy;测试sudo权限,确保不要在远程同时断开root登录。
2.
SSH 服务加固(详细命令步骤)
步骤1:编辑SSH配置:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak && sudo nano /etc/ssh/sshd_config;步骤2:修改或添加配置项:Port 2222(自定义端口)、PermitRootLogin no、PasswordAuthentication no、ChallengeResponseAuthentication no、UsePAM yes、AllowUsers deploy youruser;步骤3:重启服务并测试:sudo systemctl restart sshd && ssh -p 2222 deploy@your-ip;步骤4:如使用 fail2ban 请在后续配置文件中允许新端口。
3.
防火墙(UFW/iptables)基础规则
步骤1(UFW推荐):sudo apt install ufw -y;步骤2:设置默认策略并允许必要端口:sudo ufw default deny incoming && sudo ufw default allow outgoing && sudo ufw allow 2222/tcp && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp;步骤3:启用并查看状态:sudo ufw enable && sudo ufw status verbose;步骤4(iptables 示例):sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT;sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT;并保存规则(iptables-persistent 或 netfilter-persistent)。
4.
Fail2Ban 部署与自定义 jail
步骤1:安装:sudo apt install fail2ban -y;步骤2:创建本地配置:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local;步骤3:编辑 jail.local,启用 sshd 和 nginx-http-auth:[sshd] enabled = true port = 2222 maxretry = 5 bantime = 3600;步骤4:自定义动作发送邮件或使用 iptables-block;步骤5:重启服务并查看日志:sudo systemctl restart fail2ban && sudo fail2ban-client status。
5.
Nginx 加固与限制策略
步骤1:关闭版本暴露:在 nginx.conf server {} 外添加 server_tokens off;;步骤2:限制并发与速率:在 http{} 中添加 limit_conn_zone $binary_remote_addr zone=addr:10m; 在 server/location 中使用 limit_conn addr 10; limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s; limit_req zone=req burst=20 nodelay;步骤3:配置强制 HTTPS,并使用 Certbot 获取证书:sudo apt install certbot python3-certbot-nginx -y && sudo certbot --nginx -d example.com;步骤4:开启访问日志与错误日志轮转,设置 client_max_body_size 10m 等。
6.
PHP 与应用层安全配置
步骤1:编辑 php.ini(路径视发行版而定,如 /etc/php/7.4/fpm/php.ini),关闭高危函数:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,或按需求调整;步骤2:设置 open_basedir 限制站点目录,upload_tmp_dir 指定安全目录并限制权限;步骤3:将 PHP-FPM 以独立用户池运行,避免所有站点使用同一用户;步骤4:重启 php-fpm:sudo systemctl restart php7.4-fpm。
7.
文件权限与用户隔离
步骤1:将站点文件归属设置为 web 用户:sudo chown -R www-data:www-data /var/www/site && sudo find /var/www/site -type d -exec chmod 750 {} \; && sudo find /var/www/site -type f -exec chmod 640 {} \;;步骤2:避免将网站目录暴露为可执行脚本目录,控管上传目录权限并使用恶意文件扫描;步骤3:对管理面板(如 WordPress wp-admin)使用目录限制与双因子认证。
8.
自动更新与补丁管理
步骤1:启用 unattended-upgrades:sudo apt install unattended-upgrades -y && sudo dpkg-reconfigure --priority=low unattended-upgrades;步骤2:定期手动检查:sudo apt update && sudo apt upgrade -y;步骤3:对关键服务(Nginx、PHP、数据库)使用维护窗口并在更新前做好快照备份(韩国VPS通常支持快照)。
9.
备份与快照策略(实操)
步骤1:使用 VPS 提供商快照作为首选快速恢复点;步骤2:配置增量备份:使用 rsync 或 duplicity,将 /var/www、/etc、数据库导出(mysqldump)到异地存储;示例 cron:0 3 * * * /usr/bin/rsync -az --delete /var/www/ backup@backup-server:/backups/site/;步骤3:定期演练恢复流程,验证备份有效性。
10.
日志、监控与入侵检测
步骤1:集中日志(rsyslog/ELK/Graylog)或至少将关键日志备份;步骤2:安装 rkhunter/chkrootkit 定期扫描:sudo apt install rkhunter chkrootkit -y 并配置 cron;步骤3:设置监控告警(Prometheus+Grafana、Netdata 或简单的 Zabbix),关键指标:CPU、内存、网络流量、异常登录、I/O 突增。
11.
应急响应与攻击处置流程
步骤1:遭遇攻击先隔离:临时封禁异常IP、关闭被攻占的端口或把受感染站点下线(return 503);步骤2:收集证据:保存 /var/log 中相关时间段日志、使用 journalctl -u service 查看服务日志;步骤3:如果确认入侵,先从快照或干净备份恢复,重置所有秘钥与密码,审查后门文件;步骤4:记录事件并改进规则(如调整 Fail2Ban、WAF 规则)。
12.
常见攻击类型与快速应对建议
子段1(暴力破解): 使用 Fail2Ban+SSH 密钥+自定义端口与强密码;子段2(DDoS): 启用云防护或上游清洗服务,限速、限制连接数并使用 CDN;子段3(SQL 注入/文件上传): 在应用层做输入校验、使用参数化查询、限制上传类型并在 nginx 层做上传大小与 mime 检查。
13.
问:如果韩国VPS被DDoS攻击,第一步该怎么做?
回答:第一时间启用流量过滤与速率限制(nginx limit_req/limit_conn),在防火墙层封禁异常IP段;联系VPS提供商请求流量清洗或启用上游DDoS防护,必要时切换到提供商的带清洗功能的公网或使用CDN(如 Cloudflare)做源站隐藏与缓存。
14.
问:如何在不中断站点的情况下更新内核或关键服务?
回答:先在非生产环境或旁路服务器验证更新;在生产上使用快照或备份并安排维护窗口,使用 rolling update(逐台重启)或利用负载均衡器将流量移出目标服务器后再更新,确保更新后服务健康再逐步回流量。
15.
问:遭遇入侵后最重要的三步是什么?
回答:第一步隔离受影响节点并保存日志证据;第二步从已验证的备份或快照恢复干净环境,同时更换所有密钥与凭证;第三步进行事后复盘,找出入侵根源并加强相应防护(补丁、配置改进、监控规则)。
来源:韩国站群vps安全防护配置示例与常见攻击应对方法