homelab 怎么尽可能保证安全性呢

285 天前
 kratosmy

前两天发贴问了下 ddns 的问题,主要是主路由刷不了固件又懒得换,这两天还是耐不住折腾了下,现在可以公网访问了但是担心安全问题,这是拓扑图,有没有大佬看看怎么保证安全性呀。 https://imgur.com/a/3oNo1dB

6181 次点击
所在节点    宽带症候群
25 条回复
ladypxy
285 天前
方法很多
1 ,必须通过 vpn 访问……或者通过 citrix 或者 vmware 转成 443 访问,必须验证通过才可以连接
2 ,路由器限制入站 IP
locoz
285 天前
最基本的:防火墙只开放必要的端口,甚至严苛到只开放 VPN 端口,通过 VPN 访问。

如果不走 VPN 访问,HTTPS 弄上,再用个域名控制可访问的服务,不同子域名对应的服务不同,服务是否可以被外网访问的配置也不同。然后只需要在配置域名解析时只配置泛解析,证书也只签发给泛解析的解析记录,就能实现在你自己没有暴露子域名的情况下,别人没法找到其中一个可能存在弱点的服务进行突破了。
winson030
285 天前
推荐用 cloudflare tunnel ,你都不需要折腾公网安全
kratosmy
285 天前
@locoz 谢谢,ssl 证书我理解,但是 vpn 是什么意思呢,是我理解的 tailscale 之类的吗
msdurex
285 天前
WireGuard 呀,家里路由器是 UDR ,用 Teleport 非常方便。
awd1ti
285 天前
搭建不了 vpn 的方式也可以用搭建堡垒机的形式 通过外网访问的堡垒机来进行内网直接的访问
cnbatch
285 天前
VPN 是最安全的做法了。就是原本意义的 VPN ,不是被梯子使用人群污染过意义的“VPN”。
最常见的有 WireGuard 、OpenVPN ,还可以选择 Softether 之类的。
joynvda
285 天前
VPN 要求客户端,不是那么的方便;目前还是通过端口映射允许公网访问部分服务(比起公有云,家宽接入的服务器更灵活)。

个人经历过:pi 没有修改默认密码,被扫描后远程登录; 2 次 win 机器的 rdp 被攻破,整盘加密勒索比特币。幸亏上面没有核心数据,只是重新安装系统就可以了。

暴露在公网的机器一定要加强访问控制:只开放需要的端口; ssh 外网登录尽量禁止密码登录,只用密钥;
可以安装 fail2ban 或之类的消除不必要的嗅探。
Damn
285 天前
@joynvda
????
用系统内置的客户端不就方便了。
比如 Windows 内置的 ikev2 ,sstp 等等
FlytoSirius
285 天前
前面几位基本已经列出了主要的安全的连接方式,
1. VPN 方案:
目前看 WireGuard 应该是 可靠性, 易用性, 性能, 几方面平衡下来很好的选择.
使用 VPN 方案的话, 在主路由器的防火墙上只映射 WireGuard 的端口, 为了安全性不要也不需要映射全端口.
2. 使用 Tunnel 类的方案:
ZeroTier 是很好的一个方案, 可管理性很好, 构建了一个安全的基于局域网和互联网之上的 Private Network. 个人用了几年了.
Cloudflare tunnel 也常看到, 大概也是此类型的方案吧.
3. 自建 Bation sever 方案:
仅仅只开放 ssh 端口, 通过 ssh public/private key 机制进行安全链接, 并通过 ssh tunnel 进行数据转发. 安全实施难度较大.


至于常见的 公网 IP + DDNS 方案 呢?
那纯属是找死 .......
locoz
285 天前
@kratosmy #4 这里说的 VPN 指的是任何能让你在外网通过一个包含了身份验证机制的加密隧道访问内网服务、将设备加入内网环境的软件/协议,包括但不限于比较老的 PPTP 、L2TP 、IPSec 等,新一点的 OpenVPN 、WireGuard 等,以及自动组网的 ZeroTier 、Tailscale 等。

Tailscale 这种软件从本质上来说其实就是在一个通常意义上的 VPN 上叠加了自动配置、中继服务器转发、自动打洞等功能的软件,如果你希望更可控或者不怎么需要这些功能,那你用 WireGuard 之类的也是一样的。

像楼上说的用堡垒机也是可以的,只是相比起 VPN 而言体验会差一些,但达到的效果都是一样的,都是相当于加了一层身份验证和流量加密机制在你的服务前面,避免服务直接暴露在外面。
serafin
285 天前
以下安全策略风险和方便程度依次递增。

1. 不开放任何端口,用 Cloudflare tunnel 开放部分服务。
2. 只开放 VPN 端口,用 VPN 访问内网所以服务。
3. 仅开放为公网设计的服务端口,比如 http, ssh(非 22 端口), webDAV 等。
4. 开放为内网设计的服务,比如 SMB 。或者开放风险较大得端口比如 ssh 的 22, Microsoft 远程桌面的默认端口。
5. 开放所以端口 DMZ 。

个人推荐 3 级。
https://www.v2ex.com/t/911157
Bingchunmoli
285 天前
@serafin 以下难易程度依次递减。emm 我目前是 3,4,5 都用,5 是因为开放端口不生效,后面就全开了, 服务器用的 3 ,2 配置不好就没用
serafin
285 天前
@Bingchunmoli DMZ 我也开过,路由器 dns ( 53 )端口不给开,用 DMZ 可以开绕过限制。后来我的 DNS 就被利用来 DNS 放大 DDoS 攻击,导致路由器卡死(瓶颈在家用路由器,而不是服务器),家里断网,自动重启路由器再断网。查看 DNS 日志才发现,就给关了。
fy
285 天前
乐,想起我的 homelab 过年被猫物理关机了,远程毫无办法
Bingchunmoli
285 天前
@serafin 我是 nas 固件端口很多也非标,然后路由器 openwrt 防火墙太高级也不太会,开固定端口无效,然后全开,然后各种开关全是全开才能用。。。不过运行几年了,目前也没什么问题,
Damn
285 天前
@Bingchunmoli OpenWrt 防火墙可以说是非常易用了吧,说 OpenWrt 防火墙太高级不会用的言论我还是第一次见。。
bao3
284 天前
1. 你的设备应该尽可能的通过 redirect 、301 或者 web server 反代的方式,使各类服务尽可能共用同一个端口,比如所有的 web 服务都共用 5001 (群晖)。 然后在你的防火墙上就只开放这一个端口。
2. 家庭的服务应该尽可能使用非特权容器运行,比如 非特权 docker/LXC/LXD ;永远不要为了方便,授予你的容器特权。你可以找到各种非特权运行的方法
3. 家庭设备如果要远程登录,使用 ssh ,要禁用密码,使用密码;通常 linux 默认就禁止了 root 登录,永远不要为了方便而启用 root 使用密码。这很蠢,中文很多教程都教人安装后启用 root 的 ssh 密码登录,别学,这些人的核心逻辑就是“爱爱时不用 TT 也行,不见得会得病也不见得会怀孕”
4. 能安装 fail2ban 的就尽量安装。NAS 上能设置自动永久封锁帐户的,就一直开着。能打开防火墙的就要打开。
5. 尽量设置 ACL 防问规则。比如仅允许某一台特定设备才能连接其他设备。然后在这台设备上可以使用 vpn 等方式远程连接上来。这最大限度保障了即使有密钥泄露、即使又发生密码泄露,也能保证了家里网络的安全。
6. 当然你也可以在确保安全的前提下,使用诸如 headscale/ tailscale set —ssh 的方式,将 ssh 仅监听在 tailnet ,进一步保证安全性
7. 将你的密钥 key 一定要加上密码,在生成时就要加密码。不要担心麻烦,它保证了即使发生泄露,密钥也是安全地。
dyv9
284 天前
ssh 公钥连接, 启用 ssh tunnel 。
neroxps
283 天前
只是自己一个人访问的话,就做个 ddns 对外只开 ss-server 的端口,然后 qx 或者 clash 之类的软件分流回家即可。

对运营商测根本扫不到你的 web 服务。别人也进不来。

单位的流量识别防火墙也识别不到你的链接。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1015220

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX