V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Cineray
V2EX  ›  宽带症候群

把家用文件服务器开放到公网,有什么手段可以避免被攻击?

  •  
  •   Cineray · 360 天前 · 10419 次点击
    这是一个创建于 360 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上周叫师傅开通了家用公网,一个月 20 块钱。

    想搭建一个 samba 或者 webdav 服务器,给公司和外出作文件分享使用。

    先前的方案是坚果云,无奈空间太小价格太贵,其他的网盘又担心资源和谐问题。

    有没有什么方法可以既保证一定安全的情况下,又可以自己舒服的同步和传输文件?

    目前已经设置的:

    1. open 端口设置为非常用端口,5 位数,应该可以避免一定扫描。
    2. samba 密码复杂度包括大小写字母,数字和符号。
    3. 禁止 guest 访问。
    4. 使用 samba 2.0/3.0 ,关闭 samba 1.0 协议。

    但是除此之外就不知道还需要如何设置了。

    或者有什么更好的文件服务器部署方式,可以推荐以下。

    94 条回复    2023-05-05 14:08:09 +08:00
    cxtrinityy
        1
    cxtrinityy  
       360 天前 via Android
    zerotier 打洞,只在 zerotier 子网内公开不就行了?
    Cineray
        2
    Cineray  
    OP
       360 天前 via iPhone
    @cxtrinityy 穿透太慢了,外出不方便,也不便于分享。
    ruidoBlanco
        3
    ruidoBlanco  
       360 天前   ❤️ 1
    wireguard 或者 zerotier ,总之就是 VPN 。samba 只监听在 wireguard 的 IP 地址上。

    要不要密码什么的,随意就好。
    systemcall
        4
    systemcall  
       360 天前 via Android   ❤️ 1
    现在国内很多地方的运营商会查 HTTP 入站
    zerotier 有些地方已经不能正常用了,差不多是几年前 GitHub 的待遇,tailscale 还是可以用的
    现在跨省甚至跨市,都要过反诈了,和 gfw 类似的东西,封锁的权限下放了。现在还是 p2p 打洞比较稳
    dogfight
        5
    dogfight  
       360 天前
    frp 安全吗
    aru
        6
    aru  
       360 天前
    vpn 连进来就行了
    wiregurad 、openvpn 、pptp 、l2tp 、zerotier 都行
    aru
        7
    aru  
       360 天前
    @Cineray 有公网 IP 就是直连,不需要中转,速度不慢的
    mingl0280
        8
    mingl0280  
       360 天前 via Android   ❤️ 3
    别用 smb ,webdav+https+TLS Auth 可以干死大部分的攻击了……
    eudemonwind
        9
    eudemonwind  
       360 天前 via Android   ❤️ 1
    smba 换 ssh 好点吧?
    webdav 建议套 nginx ,禁 ip 访问,限定域名访问,防扫描,套 https ,套 cf 等等,跟建站防的那一套差不多。

    简单安全的话还是建议 wireguard ,家里用 openwrt 搭个服务器,需要的话连回去,其他设置都不需要怎么动,网盘里放一份客户端,手机上存一份,基本上几分钟就能搞定客户端回去。

    还一建议就是家里 nas 上开个虚拟机的 win 系统,有需要 rdp 回去,就是互传速度会大大受限于两边网速。

    总之就是暴露的越少越好
    Cineray
        10
    Cineray  
    OP
       360 天前 via iPhone
    @aru 好的好的,我测试一下,现在如果直接开放端口,除了暴力破解还有其他绕过风险吗?
    hefish
        11
    hefish  
       360 天前   ❤️ 4
    又要公网,又要方便,又要安全。。。
    那看起来还是得花钱啊。。。fw,ips,av,waf 买下来,再每两年做个等保测评,二级等保就可以了,再每年做个风险评测,漏洞扫描, 再找个第三方运维公司。 一套下来应该就安全了。
    vibbow
        12
    vibbow  
       360 天前
    禁止国外 IP 连接解决 99%的问题
    mzliangjianjun
        13
    mzliangjianjun  
       360 天前 via Android
    不开放到公网
    Cineray
        14
    Cineray  
    OP
       360 天前 via iPhone
    @hefish 这…很久没接触网络安全了,现在攻击都这么恐怖的吗…我记忆里还停留在暴力破解密码,跑彩虹表的阶段。
    Cineray
        15
    Cineray  
    OP
       360 天前 via iPhone
    @vibbow 用防火墙设置还是?
    mengdodo
        16
    mengdodo  
       360 天前
    想起了很久之前看过的一篇文章
    http://fisherworks.cn/?p=3541
    dancercl
        17
    dancercl  
       360 天前
    用过坚果云,那就自部署个 Nextcloud 啊,开源平替,多端同步。
    hefish
        18
    hefish  
       360 天前
    攻击有很多很多种途径和方法,一般自建站没有什么利益可挖的话,不用特别去强调安全。 主贴里面的措施大致也可以了。

    真是大站,那基本都是按照规范,来个全套。
    hefish
        19
    hefish  
       360 天前
    要禁止外国 IP 的话,可以自己去 APNIC 去下载一份 IPv4 的分配表,筛选出分配给 CN 的部分,然后针对这部分 IP 做个路由,默认路由就删掉。这样外国 IP 就访问不到了。 也有人家筛选好的 IP 列表,以前记得是 https://ispip.clang.cn/
    tulongtou
        20
    tulongtou  
       360 天前
    典型的既要又要
    kkocdko
        21
    kkocdko  
       360 天前
    webdav 比较合适,开 https 并且密码有足够复杂度就行。只要操作规范,相信密码学和数学的力量。
    makelove
        22
    makelove  
       360 天前
    高位端口 + webdav nginx 前端足够了,能突破这个的都是百万级大杀器,不可能浪费在你身上
    LiSrRbE2Mac
        23
    LiSrRbE2Mac  
       360 天前 via Android
    fail2ban
    根据登录日记自动封禁,可以根据登录失败次数改变封禁时间,逐渐拉长
    lwjef
        24
    lwjef  
       360 天前 via iPhone
    @hefish #11 还想做二级,配吗。🐶
    hefish
        25
    hefish  
       360 天前
    @lwjef 这不是按照规范来的嘛,你出个 5 万,保管有人来做。出正式网安备案的报告。
    lwjef
        26
    lwjef  
       360 天前 via iPhone
    @hefish #25 可以按二级要求来做,但是配不配定成二级我是这个意思。
    totoro625
        27
    totoro625  
       360 天前
    打算分享的话,你就没办法设置太高的门槛,如端口敲门等防护都没办法开启

    samba 默认是无法设置端口号的,所以只能放弃该方案

    我是自建的 Seafile ,带 webdav ,而且能多用户控制、去重、分享等等,自带 App ,同步软件,缺点是服务端比较重,部署麻烦: https://cloud.seafile.com/published/seafile-manual-cn/home.md
    其次推荐 filebrower ,很简单好用: https://github.com/filebrowser/filebrowser
    Believer
        28
    Believer  
       360 天前 via iPhone
    最小攻击面,入站只留 vpn 的端口其他都 drop
    Cineray
        29
    Cineray  
    OP
       360 天前
    @totoro625 samba 我是准备设置端口转发的方式改,感觉最主要是安全问题。Seafile 和 filebrowser 我有考虑,这种就是不知道什么时候出个 0day 就比较麻烦。
    SenLief
        30
    SenLief  
       360 天前
    如果用公网最好的还是 wireguard ,我现在有时候翻出来都是网络先回家再从家里代理出去。wg 这个协议大部分代理 app 都支持的。
    Jamy
        31
    Jamy  
       360 天前   ❤️ 1
    首先用 iptables 把 samba 对外端口全部禁用了, 然后做一个需要登陆的 web 界面, 登陆成功之后,调用 iptable ,允许指定的 ip 连接 samba 。退出登陆的时候,再继续禁用。最大限度减少端口暴露于公网的时间。
    Eytoyes
        32
    Eytoyes  
       360 天前
    主路由开 VPN 模式最佳,就像在家里一样,软件配置也不需要改动,主路由性能不够的话 60 元买个魔百盒刷 armbian 做旁路由,性能强劲功耗也低。
    Jamy
        33
    Jamy  
       360 天前   ❤️ 1
    @Jamy 其他更详细方法,请 google 端口敲门。
    Fri
        34
    Fri  
       360 天前
    楼主搜一下“端口敲门”,可能有帮助。
    mohumohu
        35
    mohumohu  
       360 天前   ❤️ 1
    zerotier 穿透一点都不慢,在其中一端有公网 IP 的情况下百分百打洞成功,而且还加密压缩流量甚至更快更安全,还不用主动暴露任何端口。另外,zerotier 也可以自建私服的,教程很多,比如这个教程: https://blog.03k.org/post/zerotier-moon-ui.html
    totoro625
        36
    totoro625  
       360 天前   ❤️ 1
    @Cineray #29 担心安全问题那就 filebrowser 吧,docker 部署,只映射一个能公开的目录,专门用于分享

    因为我是 Windows ,直接用 Tailscale 方式组网后通过 samba 回家,隔了 2 个地级市只有 15ms ,能跑满带宽,相对公网比较安全
    yufeng0681
        37
    yufeng0681  
       360 天前
    阿里云盘 一年 88 元的时候 ,你可以选择续三年的。6T 空间足够你放,分享。速度也很快。
    现在价格升到 168 一年( 8T ),如果你分享频率高,用这个省时间,高效。
    Cineray
        38
    Cineray  
    OP
       360 天前
    @Jamy 是一个有意思的解决方式,有点像 ddnsto
    Cineray
        39
    Cineray  
    OP
       360 天前
    @yufeng0681 公有云我应该考虑做一层备份,主要是怕删东西。。
    yws112358
        40
    yws112358  
       360 天前
    seafile 好用不 安全性 便利性
    documentzhangx66
        41
    documentzhangx66  
       360 天前
    @Cineray 楼主在 2 楼提到:

    穿透太慢了,外出不方便,也不便于分享。

    我大概了解了,楼主想要一套知乎这种方案:

    1.基于 Web 。

    2.不需要穿透。

    3.可以共享。

    那么,楼主至少需要专业的 防火墙 + WAF 。

    这两台安全设备,一线牌子的,第一次采购的费用基本上在 10 - 30 万左右,过了维护期后,每隔 3 年还需要花几万元续费一次授权。

    楼主确定愿意花这个钱嘛?
    kmvvv
        42
    kmvvv  
       360 天前
    我觉得尽量用 vpn 连回来,能省很多事
    Cineray
        43
    Cineray  
    OP
       360 天前
    @documentzhangx66 倒不必这么极端,根据楼上的很多推荐,貌似 webdev+https+tls auth 是比较折中的解决方案。
    dann73580
        44
    dann73580  
       360 天前
    专业的防火墙也是有开源方案的,看看 goedge ,是非常好的项目!不过一般使用的话,https+webdav+复杂密码足以,不需要的端口用防火墙关掉,不要转发。
    mohumohu
        45
    mohumohu  
       360 天前
    webdev 并不算很方便,相比 zerotier 直接挂 smb ,webdav 的体验在 windows 下简直是灾难。
    killgfat
        46
    killgfat  
       360 天前 via Android
    samba 不太适合外网使用吧,真要用建议通过 zerotier 或者 tailscale 搭一个虚拟局域网用
    spacezip
        47
    spacezip  
       360 天前
    至少 ipsec 进去吧
    纯公网
    墙划 dmz 设策略 ddos 防毒墙 waf ips 一套下来 得几十个 真有人打还要折腾蜜罐
    liuhai233
        48
    liuhai233  
       360 天前 via iPhone
    只开一个 http 端口,我外网用 alist 的 webdav 来传输文件,http 的服务都走 nginx ,绑定域名
    luny
        49
    luny  
       360 天前
    家用的开 http 端口,估计比较容易被查吧
    我是买断了花生壳 2 台主机,挺方便
    opengps
        50
    opengps  
       360 天前
    @vibbow #12 更正下:禁止国外 IP+所有 idc 的 ip
    MFWT
        51
    MFWT  
       360 天前   ❤️ 1
    嫌 VPN 麻烦,可以考虑 SFTP ,Windows 用 FileZilla 访问就行

    但是,毕竟你有公网,建议还是 VPN 的方案比较好

    最次的,是系统自带的 VPN ,比如 L2TP/IPSec ,IKEv2/IPSec 什么的,但是因为没办法分流,所以平时上网也会受影响

    基本还是建议用 WireGuard 或者 OpenVPN ,配置下路由,让一个特定的内网段进去就好了,这样的话文件传输用啥都无所谓,FTP ,SMB ,WebDAV 随便你
    EvineDeng
        52
    EvineDeng  
       360 天前
    其实爱快或者 openwrt 都可以限制到只允许某国,甚至某省、某市的 ip 方可访问指定端口。
    crazyweeds
        53
    crazyweeds  
       360 天前
    成本最低,体验最好的其实就是 VPN ,前提是你有公网 IP 。
    gdfsjunjun
        54
    gdfsjunjun  
       360 天前
    公网还要收费的?莫非是固定 IP ?
    最好部署 VPN ,最安全。
    q000q000
        55
    q000q000  
       360 天前
    WebDAV + HTTPS , 不要开 SMB !
    yinmin
        56
    yinmin  
       360 天前 via Android
    @Cineray 你是使用 mac 吧? 推荐 stunnel 双证书加密隧道,把远程 smb 端口 map 到本地,安全而且稳定。端口建议 465 、993 、995 等邮件常用的 tls 端口,有些企业内网防火墙限得比较严格,设这些端口能过。
    Cineray
        57
    Cineray  
    OP
       360 天前
    @gdfsjunjun 我们这是要收费的,湖南电信。。
    ixiumu
        58
    ixiumu  
       360 天前
    1. 公网绝不要直接 SMB 和版本或者 guest 无关 刚需请套 VPN
    2. WebDAV 一定要套 TLS 证书
    3. 端口几位数没有多大意义 (你想用 80/443 电信也不同意

    安全这块如果你不是特别熟悉 建议上群晖 (买系统送软件不是开玩笑 黑的也行 直接跑个 VM 很方便
    ixiumu
        59
    ixiumu  
       360 天前
    @ixiumu 打错了 买系统送硬件 群晖默认的设置就足够应付大多数情况了 扫描 锁 IP 之类的基础工作都帮你处理好了 超管账号开 2FA 普通用户简单设置一下权限就可以了
    Cineray
        60
    Cineray  
    OP
       360 天前
    @ixiumu 感谢,现在 smb 还有这么严重的缺陷吗?
    ixiumu
        61
    ixiumu  
       360 天前
    @Cineray 据我所知 "严重缺陷"应该是没有 但是这个是局域网协议 它握手也不考虑公网情况 这种中间人和嗅探会泄露不少东西出去 还怕被暴力 你既然在意安全性 这个首先就应该排除掉的
    TheNine
        62
    TheNine  
       359 天前
    smb 不安全,不方便。

    我目前的方案是用 vpn 回家访问
    还有一台专门用来控制家里其他设备的 linux 开了公网的端口,用的是私钥登陆。有时候没办法会控制它临时打开一些端口,用完就关
    MartinWu
        63
    MartinWu  
       359 天前
    wireguard + noip 免费 ddns
    motai
        64
    motai  
       359 天前 via Android
    开个 v2ray 服务到公网连上到局域网
    terrancesiu
        65
    terrancesiu  
       359 天前
    我既有 wireguard 又有 ip 白名单,因为公司连接回去肯定是用的静态地址,所以白名单有效。
    lingeo
        66
    lingeo  
       359 天前
    op 是哪家的运营商啊?支持购买公网 IP.
    newmlp
        67
    newmlp  
       359 天前
    用 ipv6 也可以,只要别人不知道地址,几乎不可能被攻击到
    goodryb
        68
    goodryb  
       359 天前
    如果只是文件服务,建议使用 webdav , 前面套个 HTTPS ,端口非常用,不要弱密码,有公网 IP 直接端口映射,直连最方便

    smb 不建议在公网使用,也有可能根本使用不了,运营商把 SMB 的端口都干掉了。
    Cineray
        69
    Cineray  
    OP
       359 天前
    @lingeo 湖南电信的
    Cineray
        70
    Cineray  
    OP
       359 天前
    @newmlp v6 还是得用 ddns 。 这个就基本上有风险被扫到了,同时 v6 据说也有是大内网?比如手机的 v6 无法访问到电脑。既然开了公网 v4 我还是不折腾 v6 了
    newmlp
        71
    newmlp  
       359 天前
    @Cineray v6 没有大内网,连不到是因为运营商的光猫防火墙策略默认阻止 ipv6 的主动入站连接
    cy18
        72
    cy18  
       359 天前
    不要用 samba 。
    用群晖,seafile ,nextcloud 之类的现成的系统,配好 https ,除了 ddos 跟 0day 漏洞,应该问题不大了。
    cy18
        73
    cy18  
       359 天前
    另外可以看看 syncthing 满足你要求不
    vhus
        74
    vhus  
       359 天前
    带宽是上下行对等吗?
    troilus
        75
    troilus  
       359 天前
    最后用的 sftpgo 搭建的 WebClient ,登录支持两步验证
    777777
        76
    777777  
       359 天前
    如果你介意隐私的化,可以直接 nginx 、apache 公开目录。hhhh
    superliy
        77
    superliy  
       359 天前
    @systemcall zerotier 不是 udp 类似 p2p?
    fastcache
        78
    fastcache  
       359 天前 via iPhone
    zerotier 没广告,用 webdav https 还要装个有广告的软件(收费版可去广告),体验不好
    dude4
        79
    dude4  
       359 天前
    @fastcache 你说的是 windows 的 RaiDrive 吧,支持 webdav https 和其他很多云盘本地挂载但免费版确实有广告
    可以用 rclone 替代,虽然是命令行,但是开源免费还支持多种系统,能上这个坛子的人整点命令行很简单
    cwbsw
        80
    cwbsw  
       359 天前
    @MFWT ipsec 也可以分流的啊,虽然不如 wireguard/openvpn 强大,但是给客户端下发一个内网段还是可以的。
    gdfsjunjun
        81
    gdfsjunjun  
       359 天前
    @Cineray 收费的话会给固定公网 IP 吗?
    systemcall
        82
    systemcall  
       358 天前 via Android
    @superliy #77
    现在一些地方把 zerotier 的 planet 屏蔽了,自建 moon 的话好像还是可以用的,但是 iOS 和安卓的官方客户端不可以支持。套代理的话,zerotier 似乎不能正常打洞,因为会影响对那个设备 endpoint 的判断
    tailscale 没这个问题,开了代理,它会识别到走代理和直连的 endpoint ,似乎是通过设备之间互相访问来判断的,在局域网里面也可以打洞。如果你同时开启了 zerotier ,它甚至会尝试走一下 zerotier ,之后选择连线质量最好的回路
    YGBlvcAK
        83
    YGBlvcAK  
       358 天前   ❤️ 3
    我的方案:webdav+https+二级目录+密码验证,之前也分享过 t/923605
    效果:只有正确输入二级目录才能打开,比如: https://abc.com/666 ,如果 666 输错或不输入,全部不返回(非 404 ),完美隐藏 webdav 页面
    优点:
    1.666 可以理解为第一层密码,即便有中间人攻击也抓不到,最多只能抓到 sni ( abc.com ),除非证书劫持
    2.输错 666 直接 abort ,不是 404 之类,进一步降低被探测的风险
    3.实现方式:caddy
    acbot
        84
    acbot  
       358 天前
    如果公网访问的用户不多或者网络环境相对稳定的情况下,可以考虑在网关上限制相关服务访问 IP 范围,这个可以避免 90%以上的安全问题! 如果用户多或者说网络使用环境变化大可以考虑部署 VPN ,然后在此基础上部署服务!
    sarkur
        85
    sarkur  
       358 天前
    不建议 smb 开给公网,谁知道这玩意还有多少漏洞。最安全的肯定还是路由器开 vpn ,或者就本地搭建个 nextcloud 或者可道云(这个配置简单),然后弄个域名配置证书反代本地的这两个服务到公网。这样除非知道你的域名+ip 才能访问到文件服务,还是比较安全的
    Tamamopoi
        86
    Tamamopoi  
       358 天前
    个人用的 openvpn ,openwrt 里面直接搜索下载,点击启动,导出 ovpn 文件给手机就能直接连接了...其他 vpn 的配置太麻烦。
    实测 tcp 模式传输丢包严重,udp 模式倒是不错。今天还试了在公司连接 openvpn 用 qtscrcpy 远控手机,有云手机的体验。
    Cineray
        87
    Cineray  
    OP
       358 天前
    @gdfsjunjun 不是固定的,动态 ip
    knva
        88
    knva  
       357 天前
    用别怕 怕别用。
    MrTlyer
        89
    MrTlyer  
       357 天前
    本地安装 lucky+ddnsgo+socat, 通过 cf wokers 代理走 cf cdn,前提是要开启 SSL,但是访问速度上有损失
    yunisky
        90
    yunisky  
       357 天前
    既然有公网了,装个 softether 得了,协议兼容性还挺好的,用起来也方便
    eudemonwind
        91
    eudemonwind  
       356 天前 via Android
    @dude4 rclone+ssh 的 sftp 杠杠滴
    yijiangchengming
        92
    yijiangchengming  
       355 天前
    WireGuard 直接上,安全性绝对有保障,而且速度也快。跑满上传带宽不是问题。还有一种是小流量文件分享,开个高位端口接入腾讯云 CDN 。端口设置只允许腾讯云回源 IP 访问,运营商也扫不出来。搭建 alist 分享也行。
    mm2x
        93
    mm2x  
       355 天前
    避免被攻击就一个比较好的办法 1.禁止 ICMP 2.只用 V6 访问。 现在还真没几个人有能力扫 V6 的 IP
    cooldaddy
        94
    cooldaddy  
       347 天前
    @mengdodo 我说我万年没人看的 blog 咋跑来流量了……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1566 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 00:00 · PVG 08:00 · LAX 17:00 · JFK 20:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.