为什么我不建议大家把公网端口都关掉

重度粉毛厨 2026-08-22 23:13 1

从再也不想在l站看到有人说自己服务器被攻击了继续讨论:


恕我不能认同楼主的整套方案,理由如下:


隐藏信息差,学习成本不低


能够学习这套操作,并且在实战环境下长期、安全运维,你至少需要知道:



  1. 怎么注册使用cloudflare(大家应该都会)

  2. 怎么配置cloudflared的隧道规则

  3. 怎么保持进程活跃

  4. 服务器管理面板的VNC入口在哪里(bushi


我很难相信一个ssh端口不会改,nginx规则不会设置的人,能够掌握这套方法论。


夸大风险,误判攻击形态


对普通人而言,网络攻击的安全形式并没有那么严峻。


流量攻击


DDoS、CC攻击流量是很贵的,而这些攻击带有很强的报复、勒索等目的,没有哪个攻击者愿意把这些昂贵的流量浪费在一个“素未谋面”的陌生IP。

更何况,L3/L4的泛洪攻击,流量先到了机器的网口再进iptables链规则,iptables drop 卵用没有。


漏洞攻击


还是那句话,如果你不是已知的高价值目标,这些攻击通常只有自动化脚本执行:

ssh只扫22,只用弱口令连接。

http/https,只用一些影响面较广的漏洞,PHP是重灾区

MySQL,3306端口,弱口令尝试,能进去就删库然后留下钱包地址

elasticsearch,9200端口,无口令/弱口令尝试,进去之后操作同上


我之前就栽过一回,因为是测试没怎么注意端口安全,结果服务器写了几十分钟elasticsearch突然报错找不到索引,重复好几次之后发现是9200端口暴露在外面被傻逼攻击者删库了,留下一串钱包地址……


不是哥们,我这是测试数据……测试数据……妈的……


我要这公网有何用,我要这IP又如何?


既然要把所有公网端口关掉,请问你买独立ipv4服务器的目的是?每个月给IDC付一笔包含ip费用的订阅费的目的是?


你省下几块钱买个NAT机它不香吗?


安全方法论


SSH


高位端口,仅密钥登录,管理好私钥。做到这三点,你的服务器ssh已经足够安全了。


如果OpenSSH真的被爆出安全漏洞,相信我,你绝对不会是第一个受害者。没那个资格知道吗(乐


不是很推荐小白在完成以上操作之后再给ssh配置fail2ban,因为在这样的架构下fail2ban充其量只能减少部分日志噪音,但如果不熟悉配置反而会增加自己被关在外面的风险。


Nginx,或者说http/https服务


三板斧:



  1. 把默认请求全部返回444,不要设置真实的默认站点。这样所有host header不正确的http攻击请求都不会落到真实的后端。

  2. 保护好源站IP与域名的映射关系。Cloudflare防御,我们通常把“不暴露源站”作为安全宗旨,但这不严谨。只要你有公网IP,那源站一定处在各种扫描的风险中。真正不能暴露的,是域名与源站的映射关系,也就是这条域名的真实解析目标。配合第一点,绝大多数CVE扫描都只会得到444。

  3. 防火墙给cloudflare ip加白。如果你的所有网站都透过cloudflare代理,那么80/443端口可以只给cloudflare ip放行,其他攻击扫描流量根本打不过来。cloudflare的ip段说是可能变化,实际上好像压根没变过。


另外,能够容器化的尽量容器化,即使真的有网站被提shell了,攻击者也很难把整个服务器一锅端。


安全哲学


安全是一套系统性的设计,它不只关注“被入侵风险”这一条,而是要综合考虑错误配置风险、单点故障风险、凭据丢失风险、误操作风险、可恢复性等等。


任何安全体系都不是尽善尽美的,没有所谓的绝对安全。当你为了追求那一点点边际效用,无限累加操作复杂度的时候,其实反而会在运维层面引入更高的风险。




各位可以在站内搜索一下我的黑历史,包括但不限于elasticsearch被删库n次、iptables把自己关在外面等等……

最新回复 (19)
  • 摇摆熊 08-22 23:17
    2

    (帖子已被作者删除)

  • 量子咸鱼K 08-22 23:17
    3

    隐藏信息差,学习成本不低


    能够学习这套操作,并且在实战环境下长期、安全运维,你至少需要知道:



    1. 怎么注册使用cloudflare(大家应该都会)

    2. 怎么配置cloudflared的隧道规则

    3. 怎么保持进程活跃

    4. 服务器管理面板的VNC入口在哪里(bushi


    我很难相信一个ssh端口不会改,nginx规则不会设置的人,能够掌握这套方法论。



    其实这个还好欸,因为cloudflare有mcp的,cloudflared也有docker镜像,所以,基本上全新机器环境,只要装好一个harness,然后让它装docker环境,配置cloudflare mcp,然后创建cloudflared容器并连接好。下面要跑什么容器就告诉他就行了,会全自动弄好的。


    唯一不好的就是网络玄学


    其实我觉得也没那么严重,不过小白这么干确实减少了很多攻击面,至于增加的延迟与减速器作用,其实大部分人也没那么在意。


    其实要是教程的目标是无公网ip的纯lxc容器,也许就不会那么大争议了。


    另外,cloudflare挺万能的,甚至通过它你能建立tcp隧道,连tailscale都不用装,除了延迟大点(也许境外机器的话cf还快点呢,因为跨境很多时候打不通p2p,还是得derp,估计是协议被干扰了),没啥缺点了,还能少学个tailscale怎么用。


    总之,对于小白来说,减少攻击面就是最简单粗暴的做法,好处坏处都有,从减少损失上看,这么极端的做法也有一定道理。不公网暴露服务,绝大多数自动攻击脚本还真是没招了。想打漏洞? 先和cf说去吧,和防滥用先放个turnstile差不多,你要干碎后面的服务,先得过个boss关。


    但是关掉22属实太极端了,我感觉这个fail2ban后很难被打,而且玩意隧道出问题,得从控制台去修,对小白就更搞不懂了。


    真正应该需要保护的,是那些没有久经考验的vibe项目,不但需要关进docker容器里,不暴露在公网也是挺必要的

  • cc 08-22 23:18
    4

    虽然那哥们写小白教程初心是好的,但是需要写的更全面。普通线路机器套cf没啥问题,但是端口全关走内网就不太合理,都走内网那使用公网服务器的意义何在呢。优先线路不需要套cf,能通过tunnel暴露的web服务走cf;只给自己使用的 ssh/面板/数据库走tailscale。

  • xiaofei xiao 08-22 23:20
    5

    其实ssh 用key登录就够了,别乱装各种探针什么的,这种可以越权的

  • www-data 08-22 23:21
    6

    现在的攻击都趋向0day化了,所以不设置弱密码,非必要的端口不要开放,这些是小白的极限。如果需要开放运维之类的端口,可以专门设置个跳板机搞转发,其他ip封死。最重要的是重要数据多备份。


    其他大部分都是脱了裤子放弃,0day不管你这些那些,一把送到西。

  • 卡里姆•汗 08-22 23:21
    7

    砂糖的帖子是对的,小白玩服务器应该关注的是如何让自己便利安全的使用,将安全完全置于便利头上是很危险的,把自己关在门外就老实了,我的常规方法是高位端口加密钥加只允许壁垒鸡ssh,然后项目用托管在cf上的域名加npm反代就行,我觉得一般做到这种程度就行,壁垒鸡都不是必要的

  • Black名單 08-22 23:24
    8

    确实 便利跟安全都是需要考虑的 不能只说安全就不考虑便利性了 两者需要平衡

  • 竹屋 08-22 23:25
    9

    要防护彻底是把安全策略塞到云服务商的那个策略,不是本地塞一个ufw和fail2ban啥的,本地那个只是筛选不是防护,防扫不防炸,稍微几个gb的并发本地cpu就算不过来了^-^


    对于小白更关键应该是知道自己在干啥,不要啥都一把梭哈一键运行,大摇大摆乱git pull乱跑,哪怕是照着别人做防护,那也得知道自己到底防护了个什么玩意 ^-^

  • 星渊清梦 08-22 23:26
    10

    更支持楼主,相对来说更加合理一点

  • kk C 08-22 23:26
    11

    赞成,其实对小白的安全警告是不要把高价值放服务器就行。你随便折腾都行

  • 柏川 08-22 23:27
    12

    完全赞同,那个帖子我也回复了,ssh改高位端口+密钥登录,对于个人而言已经足够安全了。再不济装个Fail2ban。全端口关闭,用cf访问,太折腾了

  • zpwu1 08-22 23:29
    13

    从为什么我不建议大家把公网端口都关掉继续讨论:关公网端口干嘛?我cf都没套,裸连也没见有人攻击我吖,人家也不是吃饱了撑的没事干,攻击也要成本的。

  • AreaSong 08-22 23:30
    14

    没有谁的帖子是不好的,都是好的,有问题就讨论,(好久没有看到技术而发的帖子了,现在站内都充斥着大量的中转站、福利羊毛什么的),初心都是写给刚刚加入社区或者刚刚开始计算机网络安全学习的那些佬们,分享一些自己的走过的路,这一路上都是老师,没有敌人

  • blacksein 08-22 23:34
    15

    我建议是除了用于服务的端口 比如80/443 后面也是连nginx 只转发特定host和api路径

    其他全关 用云厂商的白名单 一个都不要放过 ^-^


    ssh一定要放开改端口有一定效果但有限因为可以扫出来 必须禁用密码登录

  • Xyzen 08-22 23:36
    16

    我都是只开WireGuard端口,组网访问,能给我击落了我就认命,个人玩家就别用nginx了,来玩caddy吧,语法简单多了~

  • Sam Altman 08-22 23:37
    17

    komari 那个探针 agent 看着真的恐怖,居然能远程控制…直接卸了(虽然能关掉)

  • 物语 08-22 23:38
    18

    我比价赞同楼主的想法,其实只要把默认端口数字+1就能避免大多数人默认扫描了 然后给服务器装个面板,以后只用面板操作,ssh登录在云服务商那里关闭(用的时候再打开就好了)就基本安全了,再套个cdn,基本不是有心人都可以拦住了,有心人真想攻击是拦不住的,不管怎么样都会打的

  • 重度粉毛厨 楼主 08-22 23:38
    19

    有agent辅助,部署个cloudflared跑起来当然不难


    问题是,当你的容器炸掉,或者SaaS出现单点故障时,访问不到服务器上Agent的你怎么办……


    能够部署起来,和能够正确处理故障的技能要求,我看是有挺大差距的。

  • kk C 08-22 23:39
    20

    这个协议不是容易被阻断吗,国内的服务器吗

* 帖子来源Linux.do
返回