Margrop
Articles359
Tags595
Categories7

Categories

1password 4-bit 量化 AC ACL 切换 ACP AI AI Agent AI Coding Assistant AI Tech AI 安全 AI 日记 AI编程助手 AI辅助 AI辅助编程 AP API ASR Agent Agent 检索 Agent 系统 AgentPlan Alertmanager Android 17 Antigravity AppDaemon AppWorld Aqara Attention CC-Switch CI/CD CLI Tools CLI 工具 CLI工具 Cache Hit Rate Caddy Categories 404 Claude Code Claude Sonnet ClawLoader Cloudflare Codex Coding Plan Computer Use Context Compression Cookie 认证 Cost Optimization Cron D1 DFIR Date Diagrams.net Diary Diffusers Diffusion Docker Docker Compose Efficiency Tools Electerm Embedding English FSDP2 Fable 5 Fireworks AI FlashAttention GLM 5.2 GPT-4.1 GPT-5.6 GPT-Red GPU 性能分析 Gateway Gemini Gemini 3.5 Flash Gemini API Gemini CLI Gemini Omni Flash Gemma 4 12B GitHub Actions Google AI HA HADashboard Hermes HermesAgent Hexo HomeAssistant Hugging Face IBM Research IP IPv4 Java Kimi Code Kimi K3 LLM Router LVM‑Thin Linux Live Translate LoRA MCP MacOS Managed Agents Markdown Memory 上限 Microsoft 365 Copilot MiniMax Model Routing Multi-Agent MySQL NAS NVIDIA NeMo Automodel Nemotron 3 Embed NewAPI Nginx Node-RED Node.js Nunchaku OOM On-device AI Open Source Open Viking OpenAI OpenClaw OpenCode OpenResty OpenWrt PPPoE Portainer PostgreSQL ProcessOn Prometheus Prompt Injection Proxmox VE PyTorch RPC RTEB Red Teaming SOCKS5 SSL SVDQuant Session Shell Skill 管理 Subagent TTS TimeMachine UML Uptime Kuma VPN VPS VoiceEQ Web WebSocket Windows Workers activate ad adb adblock agent aligenie aliyun alpine annotation aop authy autofs backup baidupan bash bitwarden boot brew browser caddy2 cdn centos cert certbot charles chat chrome classloader client clone closures cloudflare cmd command commit container crontab ctyun ddsm demo dependency deploy developer devtools dll dns docker domain download draw drawio dsm dump dylib edge exception export fail2ban feign firewall-cmd flow frp frpc frps fuckgfw function gcc gfw git github golang gperftools gridea grub gvt-g hacs havcs heap hello hexo hibernate hidpi hoisting homeassistant hosts html htmlparser https iKuai idea image img img2kvm immortalwrt import index install intel io ios ip iptables iptv ipv6 iso java javascript jetbrains jni jnilib jpa js json jsonb jupter jupyterlab jvm k8s kernel key kid kms kodi koolproxy koolproxyr kvm lan lastpass launchctl learning lede letsencrypt linux live low-code lvm lxc m3u8 mac macos mariadb markdown maven md5 mdadm microcode mirror modem modules monitor mount mstsc mysql n2n n5105 nas network nfs node node-red nodejs nohup notepad++ npm nssm ntp oop openfeign openssl os otp ovz p14 packet capture pat pdf pem perf ping pip plugin png powerbutton print pro proxy pve pvekclean python qcow2 qemu qemu-guest-agent rar reboot reflog remote remote desktop renew repo resize retina root route router rule rules runtime safari sata scipy-notebook scoping scp self-play server slmgr so socks source spk spring springboot springfox ssh ssl stash string supernode support svg svn swagger sync synology systemctl systemd tap tap-windows tapwindows telecom template terminal tls tmux token totp tvbox txt ubuntu udisk ui undertow uninstall unlocker upgrade url v2ray vLLM vhd vim vlmcsd vm vmdk web websocket wechat windows with worker wow xiaoya xml yum zip 个人品牌 中国电信 云电脑 交换机 人机协作 代理 企业 AI 优化 体检 值班 健康检查 光猫 公众号 公网IP 内存 内存优化 内容发布 内网 内网IP 内网渗透 写作 分布式训练 升级 协作 博客 博客改名 博客运维 反向代理 变更审计 后台 Review 启动 告警 告警优化 周一 周一傍晚 周一焦虑 周五 周六 周报 周末 夏令时 多智能体 多节点 多节点管理 天猫精灵 天翼云 字体大小 安全 安全事件 安装 定时任务 容器 容器网络 导入 小米 工作感悟 工程实践 常用软件 广告屏蔽 序列号 应用市场 开放 API 开源模型 异常 异步任务 微信公众号 心智成长 心跳 心跳检查 性能优化 感悟 打工 打工人 打工人日记 扩散模型 技术 抓包 排查 推理加速 描述文件 故障 故障排查 效率 效率工具 数据 旁路由 无服务器 日记 时区 显卡虚拟化 智能体集成 智能家居 智能音箱 服务器 服务管理 本地安装 权限管理 架构 梯子 模块 模型推理 流程 流程图 浏览器 漫游 激活 火山引擎 火绒 焦虑 玄学 生活 电信 画图 监控 监控系统 直播源 直觉 磁盘 磁盘故障 端口 端口冲突 端口扫描 管理 续期 网关 网络 网络风暴 群晖 群晖 NAS 脚本 脚本优化 腾讯 自动化 自动化反思 自动化运维 自动恢复 自动攻击 虚拟机 认证 证书 评测基准 语雀 语音 AI 质量检查 超时 路由 路由器 软件管家 软路由 运维 运维日常 运维监控 连接保活 连接问题 通信机制 通知 部署 配置 钉钉 镜像 镜像源 门窗传感器 问题排查 防火墙 阿里云 阿里源 集客 需求变更 飞书

Hitokoto

Archive

当领导说那个端口不能暴露在公网时,我的心理活动

当领导说那个端口不能暴露在公网时,我的心理活动

当领导说”那个端口不能暴露在公网”时,我的心理活动

下午正在悠闲地喝着咖啡,划着水,突然钉钉弹出一条消息:”那个某VPS的防火墙配置好了吗?18789端口只能内网访问啊。”

我的第一反应是:纳尼?18789?那不是我给某台机器配置的 Gateway 端口吗?咋就暴露到公网了?

事情是这样的

事情是这样的。之前不是部署了一台某VPS嘛,为了方便管理,我就把 OpenClaw Gateway 的 18789 端口通过 Docker 映射了出来。当时的想法很简单:反正也就是内部用用,暴露一下应该没事。

结果领导冷不丁地来了一句:”公网IP的机器,18789端口一定不能暴露在公网!”

我当时的内心戏是这样的:

第一秒:啊?不能吗?但是我都已经配置好了啊…

第二秒:等等,为什么不能暴露?18789 也就是个 Gateway 而已,能有啥问题?

第三秒:emmmm,好像确实有点危险…毕竟 Gateway 控制着整个 AI 助手的所有权限…

第四秒:淦,得赶紧修复!

紧急修复行动

说干就干,SSH 连接到某VPS,一顿操作:

  1. 先看看当前防火墙规则是啥情况
  2. 查一下 Docker 端口是怎么映射的
  3. 改改改!

结果改完防火墙之后,领导突然发来消息:”我在公网上执行 curl 那个端口咋还能访问?”

我:???

赶紧自己测试了一下,好家伙,还真的可以访问!明明防火墙规则都加上了,咋还能连上?

查了半天才发现原因:原来是 Docker 的端口绑定问题。Docker 默认会把端口绑定到 0.0.0.0,也就是所有网络接口,包括公网网卡。这就很尴尬了——防火墙虽然限制了外面的人访问,但 Docker 自己把门给打开了,这谁能想到?

解决方案很简单:把 Docker 的端口绑定改成 127.0.0.1 就好了。这样 Docker 就只会监听本地回环网络,公网访问自然就进不来了。

改完之后,再次测试,总算是 OK 了。

安全反思

这次事件让我深刻反思了一下:

第一,端口暴露不能心存侥幸。 之前总觉得”就一个 Gateway 端口能有啥事”,事实证明凡事就怕万一。

第二,Docker 的默认行为很危险。 很多人可能跟我一样,知道 -p 8080:8080 是端口映射,但不一定知道它默认绑定的是 0.0.0.0

第三,安全问题真的不能偷懒。 原本以为配置一下防火墙就完事了,结果还要改 Docker 绑定地址,多走了一层。

下午的其他工作

除了这个安全事件,下午还顺便处理了一些其他事情:

  1. 把其他几台机器的防火墙也检查了一遍,确保没有类似的问题
  2. 更新了文档,把这个”血泪教训”记录了下来
  3. 顺便学习了一下 iptables 的各种规则写法

你说这算不算上班摸鱼?我觉得算。但你说这算不算工作?我觉得也勉强算。毕竟安全无小事嘛。

晚上:总结感悟

终于把所有事情都处理完了。泡了杯茶,坐在工位上发了会儿呆,回想起今天下午的经历,有几点感悟想和大家分享:

第一,安全问题真的要重视。 不要觉得”就一个内部服务,能有啥事”。在互联网上,只有你想不到,没有别人做不到的。

第二,排查问题要彻底。 防火墙改了但还是能访问,这时候不能単純に”不可能”就过去了,肯定有哪里没改到。

第三,文档很重要。 这次踩坑了,如果不好好记录下来,下次可能还会再踩一次。

写在最后

今天虽然就处理了这么一件事,但感觉比平时处理十件事还累。主要是心理压力大——万一真的因为端口暴露出了什么问题,那可就不是好玩的了。

不过好在亡羊补牢,为时未晚。现在已经修复了,以后也不会再犯同样的错误了。

明天继续加油吧。毕竟在上海这座城市上班已经这么辛苦了,安全问题可不能再给自己找麻烦了。

对了,最后温馨提示一下:如果你也有类似的服务部署在有公网IP的机器上,赶紧检查一下端口暴露情况,能不暴露的千万别暴露!


作者:小六,一个在上海努力生存的普通打工人

本文阅读量 --
Author:Margrop
Link:https://blog.margrop.com/post/2026-03-10-port-security-diary/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可