1.
准备工作与信息收集
步骤:a) 登录台湾电信 VPS 控制面板,记录公网 IP、控制台与防护面板入口。b) 确认操作系统(Ubuntu/CentOS)和内核版本:uname -a。c) 备份重要配置:cp /etc/ssh/sshd_config ~/sshd_config.bak。
2.
基础防火墙:使用 UFW(适合 Ubuntu)
步骤:a) 安装并启用:apt update && apt install ufw -y;ufw default deny incoming; ufw default allow outgoing。b) 允许必要端口:ufw allow 22/tcp; ufw allow 80,443/tcp。c) 如果 SSH 非默认端口替换 22;启用并检查状态:ufw enable; ufw status verbose。
3.
进阶防火墙:使用 iptables/nftables(更灵活)
步骤(iptables 示例):a) 保存默认规则:iptables-save > /root/iptables.bak。b) 基本规则:iptables -F; iptables -X; iptables -P INPUT DROP; iptables -P FORWARD DROP; iptables -P OUTPUT ACCEPT。c) 允许回环/已建立连接:iptables -A INPUT -i lo -j ACCEPT; iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT。d) 允许服务端口:iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT。e) 持久化:apt install iptables-persistent 或使用 iptables-save >/etc/iptables/rules.v4。
4.
使用 ipset 快速阻挡大批 IP
步骤:a) 安装 ipset:apt install ipset。b) 创建集合并加入规则:ipset create blacklist hash:ip; iptables -I INPUT -m set --match-set blacklist src -j DROP。c) 批量加入:ipset add blacklist 1.2.3.4; 或使用脚本导入 /etc/blacklist.txt。
5.
防止 SYN 洪水与内核调优
步骤:a) 临时设置:sysctl -w net.ipv4.tcp_syncookies=1; sysctl -w net.ipv4.tcp_max_syn_backlog=2048;b) 持久化写入 /etc/sysctl.conf:net.ipv4.tcp_syncookies=1\nnet.ipv4.tcp_max_syn_backlog=2048\nnet.netfilter.nf_conntrack_max=262144。c) 重载:sysctl -p。
6.
限速与连接追踪优化
步骤:a) 使用 iptables rate-limit:iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 4 -j REJECT;iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/second --limit-burst 50 -j ACCEPT。b) 调整 conntrack:echo 262144 > /proc/sys/net/netfilter/nf_conntrack_max。
7.
应用层防护:nginx 限流与 ModSecurity
步骤:a) nginx limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; 配置 limit_req 在 server/location 中。b) 安装 ModSecurity(适合 Apache/nginx):启用 OWASP 栈并更新规则,重启服务测试。
8.
入侵检测与自动封禁(fail2ban)
步骤:a) 安装:apt install fail2ban -y。b) 创建本地 jail:/etc/fail2ban/jail.local,添加 sshd 配置:[sshd]\nenabled = true\nport = 22\nfilter = sshd\nmaxretry = 5\nbantime = 3600。c) 重启 fail2ban 并查看状态:systemctl restart fail2ban; fail2ban-client status sshd。
9.
监控与流量分析(检测 DDoS 来源)
步骤:a) 实时查看连接:ss -tunap | head;b) 使用 tcpdump 捕获可疑流量:tcpdump -i eth0 src host X.X.X.X -w suspect.pcap(注意磁盘);c) 使用 vnStat/iftop/ntopng 监控带宽趋势,配置告警(Prometheus + Grafana 可选)。
10.
与台湾电信/主机商协作的应急流程
步骤:a) 提前了解主机商提供的 DDoS 面板、黑洞(null-route)或清洗服务。b) 遭受攻击时:立刻通过工单/电话联系,提交攻击开始时间、攻击类型(SYN/UDP/HTTP)、源 IP 列表与 pcap。c) 请求临时封锁(IP 黑洞)或流量清洗;同时本地降低服务暴露面(停止非必要端口)。
11.
测试防护有效性(在受控环境下)
步骤:a) 仅在授权网络/实验机上使用 hping3 测试 SYN flood:hping3 -S -p 80 --flood <你的IP>(注意法律与风险)。b) 使用 ab 或 wrk 测试 HTTP 限流效果。c) 根据结果调整 iptables/nftables 规则与内核参数。
12.
日常维护与自动化备份规则
步骤:a) 将防火墙规则、ipset 列表、sysctl.conf 放入版本控制并定期备份。b) 用 crontab 导出 ipset/iptables:*/5 * * * * /sbin/iptables-save >/root/iptables-$(date +\%F).rules。c) 定期审计日志 /var/log/auth.log 与 nginx/access.log,更新拦截策略。
13.
问:台湾电信 VPS 遭到 DDoS 时我第一步该做什么?
14.
答:先收集证据并减小暴露面
步骤:暂停非必要服务、导出 pcap 或 netstat/ss 输出,联系台湾电信客服开启清洗或 null-route,同时在 VPS 端启用严格 iptables/ipset 规则并限速。
15.
问:如何在不影响正常用户的情况下做限流?
16.
答:分流与分级限速
方法:对重要接口(API/登录)设置较低速率限制,对静态资源使用 CDN 缓存并在 nginx 上对单 IP 做令牌桶限速,结合 IP 白名单保证可信用户不受影响。
17.
问:台湾电信有没有可用的防护服务,如何选择?
18.
答:选择清洗能力与响应速度匹配的方案
建议:询问支持清洗带宽、按秒计费与响应时间,优先考虑已有全球/本地清洗节点的供应商;对小型 VPS 可结合 Cloudflare/加速型 CDN 与主机商基础黑洞服务。
来源:安全篇 台湾电信vps 的防火墙与DDoS防护设置建议