十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

telly IPTV 代理安全配置实战指南:三步走完从开箱到加固的全过程

telly IPTV 代理安全配置实战指南:三步走完从开箱到加固的全过程 telly IPTV 代理安全配置实战指南三步走完从开箱到加固的全过程【免费下载链接】tellyAn IPTV proxy项目地址: https://gitcode.com/gh_mirrors/te/tellytelly 是一个用 Go 编写的 IPTV 代理它把运营商的 M3U 播放列表伪装成一台 HDHomeRun 虚拟调谐器让 Plex 能像搜有线电视一样自动发现、转码并播放你的 IPTV 频道。但正因为伪装它默认向整个局域网广播自己的存在——这份安全配置指南将带你按三个层级逐步加固从改掉默认凭据到隐藏真实流地址再到部署层面的纵深防御。先还原一个真实场景你的服务是怎么裸奔的某个周末的晚上你发现家里带宽被莫名吃满打开 Plex 一看频道列表里多了几个自己从没订阅过的台——你的邻居或者任何连上你家 WiFi 的人正在通过你跑的 telly 白嫖 IPTV。听起来像段子不这是 telly 开箱即跑的默认状态Device-Auth 是telly123Device-ID 是12345678SSDP 广播默认开启局域网内任何一个设备都能用公开的协议发现你这台虚拟调谐器并请求频道。这不是 telly 的缺陷而是所有开箱即用工具的共性它优先保证 Plex 能顺利发现你安全则留给使用者。好消息是加固 telly 只需要改一个 TOML 文件而且每一步都能说清楚防住了什么。下面我们分三个阶段推进。第一阶段开箱即改让 telly 以安全状态启动拿到配置模板后先动这三个字段telly 的配置文件叫telly.config.toml按优先级查找$HOME/.telly/、/etc/telly/和当前目录。第一件事就是改掉[Discovery]段里那几个出厂默认值[Discovery] Device-Auth K9#mP2$vQ7!xL4 # 由 12 位以上大小写字母、数字、符号组成 Device-ID 5F3a9K2q # 8 位随机字母数字别用 12345678 这类连续串 Device-UUID 7d4e2f1a-9c3b-4a5e-8f2d-6b1c9e0a4d7f # 留空会自动生成也可手填 SSDP true这段配置解决了什么风险Device-Auth 和 Device-ID 是 Plex 识别这台虚拟调谐器的身份凭据而 SSDP 协议会把这套身份信息周期性地广播到整个局域网routes.go 里每 15 秒发一次心跳。如果你保留telly123任何略懂 HDHomeRun 协议的人都能在局域网里发现你的设备并直接拉流。改掉默认值等于把大门上挂着万能钥匙换成了只有你家 Plex 知道的钥匙。新手提示Device-ID 别用生日、手机号这种可猜测序列直接openssl rand -hex 4生成一串Device-UUID 保持空字符串也行telly 会自动拼出一个 UUID。监听地址两个字段别再填混了[Web]段里有两个地址新手 90% 的启动失败都出在它俩身上[Web] Base-Address 192.168.1.100:6077 # 本机真实内网 IP 端口 Listen-Address 0.0.0.0:6077 # 监听所有网卡接口Base-Address是对外宣称的地址会写进 SSDP 广播和 lineup.jsonPlex 拿它去请求频道Listen-Address是 telly 实际绑定的端口。这两者的区别决定了你把它俩填混会出什么事故Base-Address 填0.0.0.0telly 的validateConfig()会直接 panic 拒绝启动——报错信息写着base URL is set to 0.0.0.0, this will not work。README 里的示例配置就是这么写的直接复制必踩坑。Listen-Address 填0.0.0.0而 Base-Address 填localhosttelly 会警告你Plex 会尝试访问它自己的 localhost结果是 Plex 连不上流你还以为是网络坏了。所以规则很简单Base-Address 填 telly 运行机器的实际内网 IPListen-Address 按需填0.0.0.0多设备访问或具体 IP单机自用。至于端口6077 是默认值如果你希望降低被扫描命中的概率改成 8899、18080 之类的高位端口即可——但改了端口Base-Address 里的端口要跟着改。第二阶段进阶加固让真实流地址从此隐身认识 302 重定向的隐患先问你一个问题你的 IPTV 播放列表里频道链接长什么样多数是http://provider.com/live/user/password/1234.ts这种自带用户名密码的完整 URL。如果你不开 ffmpeg 缓冲telly 的stream()逻辑会直接对请求方返回 301 重定向把客户端导向这条真实地址。这意味着任何能访问 telly 端口的人只要请求一次/auto/vXXXXX就能在响应头里看到你运营商的完整流地址——你的订阅凭据就这样被抄走了。对策是启用 ffmpeg 缓冲让 telly 自己拉流、转封装后再喂给 Plex[IPTV] Streams 1 Starting-Channel 10000 XMLTV-Channels true FFMpeg true # 开启后由 telly 缓冲转发客户端看不到真实地址 [[Source]] Name MyProvider Provider Custom M3U http://myprovider.com/playlist.m3u EPG http://myprovider.com/epg.xml Filter Sports|News # 正则只暴露体育和新闻频道 FilterKey group-title # 按 M3U 标签过滤这段配置同时解决两个风险FFMpeg true 让真实流地址不再经 telly 之手泄露给客户端同时还能兼容 Plex 直接播放不了的流格式Filter 正则把频道列表从几百个收缩到你真正需要的十几个。别忘了源码里有一道硬性限制超过 420 个频道 telly 会直接 panic 退出因为 Plex 根本处理不了这么多台。所以 Filter 不是可选项是刚需。把凭据从配置文件里挪出去telly.config.toml里明文存着运营商账号密码那么问题来了这台机器的备份、日志、网盘同步里有没有它的副本telly 支持用TELLY_前缀的环境变量覆盖任何配置项敏感信息完全可以不落盘export TELLY_IPTV_PLAYLISThttp://myprovider.com/live/myuser/mypass/playlist.m3u export TELLY_DISCOVERY_DEVICE_AUTHK9#mP2$vQ7!xL4 export TELLY_LOG_LEVELinfo export TELLY_LOG_REQUESTSfalse telly -c /etc/telly/telly.config.toml配合上还要注意配置文件本身的权限。telly 在打印 M3U/EPG 加载日志时会自动把username、password、token后面的值替换成REDACTEDutils.go 里的脱敏正则这层保护只覆盖日志不覆盖文件本身。所以配置文件放好后立刻收紧权限chmod 600 /etc/telly/telly.config.toml chmod 700 /etc/telly第三阶段生产级加固部署层的纵深防御Docker 部署的正确姿势如果你用容器跑 telly两个细节决定它是否安全配置文件的挂载方式和运行身份。services: telly: image: tellytv/telly:dev-ffmpeg ports: - 6077:6077 environment: - TZAsia/Shanghai volumes: - /etc/telly/telly.config.toml:/etc/telly/telly.config.toml:ro restart: unless-stopped注意:ro后缀——配置文件只读挂载容器被攻破也没法篡改你的订阅配置。另外telly 官方镜像基于scratch构建本身不含 shell 和包管理器攻击面已经很小但你还是应该在编排层加上cpu_shares、mem_limit这类资源约束防止恶意请求把流量打满拖垮宿主机。别让 /metrics 和 /debug.json 裸奔你可能没注意到telly 默认暴露了两个调试端点/metricsPrometheus 指标无鉴权和/debug.json完整频道列表与来源信息。开发时它们很香生产环境就是信息泄露口——指标里的 URL 标签、频道列表里的来源名都在帮陌生人勾勒你的订阅结构。这两个端点没有开关配置正确做法是在 telly 前面挡一层要么用防火墙规则把 6077 端口限制为只允许 Plex 服务器的 IP 访问要么用 Nginx/Caddy 做反向代理把/metrics和/debug.json路径直接deny掉其余路径转发给 telly。顺手还能补上 HTTPS避免流地址在网络上明文传输。SSDP 广播与日志两个按需开关SSDP 广播是双刃剑开着Plex 零配置自动发现开着局域网里任何设备都能看见你。如果 Plex 和 telly 在同一台机器或者你愿意在 Plex 里手动添加调谐器地址把SSDP false关掉你会瞬间从局域网视野里消失。日志方面同理[Log]段的两个选项各管一摊[Log] Level info # debug 会打印完整配置 JSON 和频道细节生产环境别用 Requests false # 请求日志会记录每个访问者的 IP、UA 和请求路径Requests true在排障时很有用但它把访问者指纹写进了日志一旦日志外泄就是隐私事故。生产环境设为false需要排查时再临时打开。四个最常见的配置误区每一个都有人踩过误区一改了端口就等于安全了。端口只能防住盲目扫描防不住 SSDP 广播和/discover.json这类协议探测。换端口必须和改默认凭据关 SSDP组合使用单独改端口约等于把门牌号换了一下。误区二配置文件随便放个目录就行。前面说过配置文件里是运营商账号密码的明文。放在 web 服务可访问的目录、或同步进公有云盘等于把订阅凭据打包送人。固定放/etc/telly/并chmod 600是最省心的选择。误区三生产环境开着 debug 日志慢慢调。debug 级别会在启动时把全部配置序列化成 JSON 打出来包括 M3U 地址即使有脱敏正则兜底也架不住字段变体。上线前务必回到info。误区四跑第二个 telly 实例只改端口。telly 用Device-ID Device-UUID 端口三件套区分多实例只改端口而保留默认 Device-ID两个实例会互相打架Plex 也分不清谁是谁。每个实例都要换一套随机 Device-ID。误区五直接复制 README 的示例配置。前面提过示例里的Base-Address 0.0.0.0:6077会让 telly 在校验阶段直接崩溃。示例是能看懂的模板不是能直接跑的成品照抄前先对照本文第一阶段的字段说明。部署完成后照这份清单自查一遍逐项打勾全部通过再让 Plex 上线Device-Auth已改为 12 位以上强密码不再是telly123Device-ID已改为随机 8 位字符不再是12345678Base-Address填的是本机真实内网 IP没有0.0.0.0或localhost端口已确认保留 6077 或已同步修改两处地址中的端口号telly.config.toml权限为 600目录权限为 700M3U 中的账号密码已改用TELLY_IPTV_PLAYLIST环境变量注入或确认只存在于配置文件内Log.Level infoLog.Requests false排障时再临时打开需要隐藏真实流地址时FFMpeg true且容器镜像为dev-ffmpegFilter正则已生效频道数远低于 420 上限防火墙只放行 Plex 服务器的 IP 访问 6077 端口或反向代理已屏蔽/metrics、/debug.jsonSSDP 已按需开关单机自用则关闭依赖自动发现则确认凭据已更换Docker 挂载带:ro只读后缀且设置了资源上限配置是静态的威胁是动态的。建议你把这份清单存档每次升级 telly 版本、更换运营商订阅后都重跑一遍。安全不是一次配置的结果而是每次改动后重新确认的习惯——花十分钟走完这三步你的 IPTV 代理才算真正上锁了。【免费下载链接】tellyAn IPTV proxy项目地址: https://gitcode.com/gh_mirrors/te/telly创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表