本方案面向在台湾地区部署的直播云服务器,目标:防止盗链、抗DDoS、保护流媒体秘钥与用户隐私。落地要点:系统补丁、最小端口暴露、HTTPS/TLS、WAF+CDN、签名URL与短时token、日志与告警。
步骤:1) 更新系统:sudo apt update && sudo apt upgrade -y(或 yum)。2) 创建非root用户并禁止root远程登录:编辑 /etc/ssh/sshd_config,PermitRootLogin no;重启 sshd。3) 安装 Fail2ban 并启用 SSH 规则:sudo apt install fail2ban;编辑 /etc/fail2ban/jail.local 增加 sshd 配置。4) 最小化安装,只运行必要服务,移除不需要软件包。
步骤:1) 使用 UFW/iptables 仅开放必须端口(80/443、1935/RTMP视情况):sudo ufw default deny incoming; sudo ufw allow 443; sudo ufw allow 1935/tcp; sudo ufw enable。2) 限制管理IP:sudo ufw allow from 203.0.113.0/24 to any port 22。3) 增加速率限制:在 UFW 中配置 limit ssh。4) 配置内网分离,直播采集机与转码/存储机使用私有子网。
步骤:1) 使用 Let's Encrypt 自动化证书:sudo apt install certbot; sudo certbot certonly --nginx -d live.example.tw。2) 强制 HTTPS,禁用 TLS1.0/1.1,启用 TLS1.2+。3) 在直播源(OBS/RTMP推流)与服务器间启用 TLS/SSL(若使用 RTMPS 或 SRT)。4) 定期自动续期:certbot renew --dry-run 并用 crontab 检查。
步骤:1) 在 CDN/云供应商(如 Cloudflare、Akamai 或本地台湾IDC)启用 WAF,选择直播专用规则或自定义规则,拦截常见注入、XSS、异常URI。2) 配置速率限制(rate limiting)和行为分析规则,阻断突发大量连接。3) 配合云端 DDoS 防护,设置突发流量告警阈值并自动阻断或黑洞。
步骤:方案一(Nginx secure_link):1) 在 nginx 编译或启用 ngx_http_secure_link_module;2) 配置 location /live/ { secure_link $arg_expires$arg_sig; secure_link_md5 secret$uri$arg_expires; if ($secure_link = "") { return 403; } if ($secure_link = "0") { return 410; } }。3) 生成签名:sig = md5_hex("secret" + uri + expires)。方案二(HLS 加密+signed query):服务端使用 HMAC-SHA256 生成 token,URL 示例:/hls/stream.m3u8?expires=1600000000&token=HMAC(secret, path+expires)。客户端播放器使用该短时URL。
步骤:1) 在 CDN 配置按签名或 Referer 校验优先级,优先在边缘校验 token,减少回源压力。2) 对 .m3u8 做短时缓存(TTL 5-10s),对 ts 切片可延长缓存;用 Cache-Control 控制回源频率。3) 设置不允许跨域非授权播放的 CORS 策略,必要时使用 Origin 白名单。
步骤:1) RTMP 推流鉴权:在 nginx-rtmp 使用 on_publish 脚本回调到鉴权接口,返回 2xx 允许推流,否则拒绝。2) HLS 切片路径带签名参数,播放器访问前由验证服务验证token与IP绑定。3) 不在URL明文传输秘钥,将密钥接口放在内网并做访问控制。
步骤:1) 收集访问/错误日志到集中化系统(ELK/Prometheus+Grafana),设置流量与异常连接数告警。2) 建立黑名单自动化脚本:当某IP在1分钟内并发连接>阈值则加入防火墙并通报。3) 建立恢复流程:回源切换、CDN缓存清理、密钥轮换步骤文档并定期演练。
步骤:1) 功能测试:验证签名URL过期、不同Referer访问被拒、推流鉴权失效后推流拒绝。2) 压力测试:模拟并发观看与推流,监测CPU/带宽/连接数,调整 Nginx worker_connections、keepalive。3) 安全扫描:用漏洞扫描器检查已知漏洞并修复。
问:如何快速在台湾节点实现防盗链,不影响真实用户?
答:优先采用短时签名URL(token含path+expires+HMAC),并在CDN边缘校验。配合Referer白名单与IP绑定减误判,TTL设置短一些以兼顾缓存性能。上线前用真实网络环境测试连接成功率。
问:签名URL被盗用后如何快速应急?
答:立即:1) 在CDN侧禁用对应签名key并下发新key;2) 清理边缘缓存并使旧token失效;3) 在服务器端增加短期访问限制并通知用户重新获取token。平时保留密钥轮换脚本以快速生效。
问:是否必须在源站也启用WAF,还是靠CDN即可?
答:推荐两层防护:CDN/WAF做第一道过滤与DDoS缓解,源站仍应启用主机级WAF与最小端口暴露,防止CDN失效或配置错误时被直接攻击。两层配合能最大限度降低风险。