V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Richard14
V2EX  ›  程序员

实验室想要实现让一台机器只能访问内网不能访问公网,应该用什么技术实现?

  •  
  •   Richard14 · 2023-01-28 00:16:51 +08:00 · 9797 次点击
    这是一个创建于 694 天前的主题,其中的信息可能已经有所发展或是发生改变。

    实验室计划新采购一台运算机,但是为了限制研究用途,希望实现的效果是运算机与内网各节点可以顺利互相访问,但运算机无法访问外网(无法向外访问)。

    实验室现有一台消费级路由器。

    因为我们实验室都是菜鸡,想问一下 v 友们这个需求应该用什么技术实现,应该在什么层级实现,比如是应该在路由器界面里限制某局域网 IP 的连接(我看了下似乎并没有禁止互联网但允许局域网的选项)?还是应该用比如 exsi 等技术开虚拟机,并禁止虚拟机访问互联网?还是说直接在虚拟机的系统内部通过某种设置的方式禁止防火墙的所有放行?(机器基本需要 linux ,如果用虚拟化的话需要显卡直通)

    有无大佬讲讲,谢谢了。

    59 条回复    2023-02-01 00:09:51 +08:00
    wangyu17455
        1
    wangyu17455  
       2023-01-28 00:24:25 +08:00   ❤️ 5
    mkdir -p /etc/network/if-post-down.d/
    echo -e "ip r del default\nip -6 r del default" > /etc/network/if-post-down.d/ban
    chmod +x /etc/network/if-post-down.d/ban
    重启完事
    datocp
        2
    datocp  
       2023-01-28 00:25:22 +08:00 via Android
    这种东西还是属于权限问题,以及是否有人会搞破坏
    1,电脑配置 ip 不配置网关,但是高手会用代理出去
    2,电脑布置防火墙,指定 acl 访问控制
    3,网关用 openwrt ,使用 iptables 防火墙可以针对电脑 ip+mac 地址进行屏蔽,拒绝外网访问。

    当然都防不了挂代理。。。
    wangyu17455
        3
    wangyu17455  
       2023-01-28 00:29:03 +08:00
    把命令里的 if-post-down 都改成 if-post-up ,tab 补全+闭着眼复制粘贴害人啊😡
    xuegy
        4
    xuegy  
       2023-01-28 00:31:02 +08:00 via iPhone   ❤️ 6
    唯一的办法:
    涉密不上网,上网不涉密。
    whileFalse
        5
    whileFalse  
       2023-01-28 01:01:05 +08:00
    最简单的方法是把运算机的网关填一个错的。
    qwq11
        6
    qwq11  
       2023-01-28 01:06:10 +08:00 via Android
    iptables -I FORWARD -s 你的机器 ! -d 你的子网范围 /24 -j DROP

    想要去掉的话把上面 -I 改成 -D
    qwq11
        7
    qwq11  
       2023-01-28 01:08:56 +08:00 via Android
    不过最好办法是直接扯网线,请 linus 来都上不了网
    webcape233
        8
    webcape233  
       2023-01-28 01:11:18 +08:00 via iPhone
    呃,作为有一定高校集群项目经验的人的看法,难道不是不连外网不就行了?如果能控制物理连接,比如放到机房或机柜上锁,那就没啥说了,如果公共区域放置这个机器和路由器担心有人连外网,那要控制网口,usb 口,不能让人连,加个封签(当然这阻止不了撕了去用) ,最好是路由器给你们的内网机器专用,或者建议买个几个口的交换机来专用,也不贵。 这个主要还是用管理手段来完成,何况你们的管理员技术不熟悉。
    Richard14
        9
    Richard14  
    OP
       2023-01-28 01:46:41 +08:00
    @datocp 暂不考虑用户恶意使用的问题,想先假设用户都是合法用户,先解决整体网络的有无问题。之前朋友实验室确实听说过有师兄代理进去然后偷算力挖矿的情况,后来好像也没怎么样,也没被抓到的样子。我觉得如果考虑这种的话以我们的技术估计是很难处理了,只能技术上限制一部分,剩下的从人事角度管理。。。

    @webcape233 需求就是不连外网但是能连内网,路由器和机器我们都有完全控制权限,包括物理上
    cncmmdwl
        10
    cncmmdwl  
       2023-01-28 02:11:24 +08:00   ❤️ 1
    如果是我话,提供一个思路,主体是不限制设备本身,建议从连接上丢数据就完事
    1.使用交换机的 acl 规则,把这个端口发给路由器 /网关的数据全丢了。
    2.爱快什么的路由可以选择直接禁止上网
    3.该设备的 ipv4/6 不设置网关,把 dns 也去掉
    4.如果该机有需要,建议直接拔网线,实话讲我这保密性高的运算机是不允许接外网且不允许插 u 盘,数据必须插 nas ,存放只读目录后才能让运算机拉走,为了方便,插了个向日葵棒子,(只有鼠标键盘和 hdmi ),目前看起来没啥问题
    Pil0tXia
        11
    Pil0tXia  
       2023-01-28 02:33:28 +08:00
    法一 防火墙用白名单模式,把内网网段添加白名单;
    法二 DNS 选为内网自有的 DNS ,比如 AdguardHome 这种红米 AC2100 刷个 padavan 就能装的,不解析域名、只解析 IP ;
    法三 参考学校机房和教学楼,可选开启或关闭某个 IP 地址机器的公网联网权限,padavan 就可以。或者网络结构上做隔离
    以上方法都要做好权限划分,管理员配置好,用户不能改
    yso
        12
    yso  
       2023-01-28 03:36:49 +08:00 via iPhone
    服务器上的 Linux 配置不使用 DHCP ,并且不配置网关即可。如果需要访问特定大内网的资源,可以创建到那个网段的路由,网关还是用那台路由器的 IP 。
    Soo0
        13
    Soo0  
       2023-01-28 03:53:19 +08:00 via iPhone
    你能访问网内资源,网内其他终端 服务器一样可以访问他,单单禁止这台电脑互联网 只能说有点点用而已,横向攻击 信息收集没法避免,特别重要 涉密建议直接断开网络,考虑其他方式交换数据。
    haikouwang
        14
    haikouwang  
       2023-01-28 03:59:31 +08:00
    @whileFalse 差不多我也是这个意思,固定 IP 地址,然后网关的 DNS 不写就行了
    dingwen07
        15
    dingwen07  
       2023-01-28 04:59:20 +08:00 via iPhone
    内网其他设备可以联网,那么搭建代理就可以绕过了……
    akira
        16
    akira  
       2023-01-28 05:04:14 +08:00
    iptables 限制对外 ip 发起任何访问应该就足够了。
    ETiV
        17
    ETiV  
       2023-01-28 05:06:22 +08:00 via iPhone
    任何在你本机上做的修改,都是纸老虎,而且听你的意思也不会用 Linux ,你还需要在未来的管理维护中在意给谁 root 、给谁 sudo 、或者某天来个权限逃逸漏洞

    (不知道你所提及的内网有多大,所以也不好下定论)

    如果你们组织有网络管理员的话,可以让他帮忙划拨个 VLAN ,物理连入这个 VLAN 下的设备只能访问内网,就行了
    ericls
        18
    ericls  
       2023-01-28 05:13:12 +08:00 via iPhone
    这个是路由器干的事情
    Gav1nw
        19
    Gav1nw  
       2023-01-28 07:56:16 +08:00 via iPhone
    我原来这种情况直接在其他 server 搭 VPN 。。。你怎么限制?干脆点拔网线,拷入拷出数据严格审核,最好终端登陆不要接触到主机
    lrigi
        20
    lrigi  
       2023-01-28 08:48:43 +08:00 via iPhone
    服务器不能连外网传输数据很麻烦哎
    先用着 有问题就重装系统!
    julyclyde
        21
    julyclyde  
       2023-01-28 08:55:26 +08:00
    在最出口的路由器上
    route add 这台机器的 IP reject
    就行了
    dashab
        22
    dashab  
       2023-01-28 09:03:22 +08:00
    方案一 通过主机配置如设置防火墙或改 dhcp 之类的,缺点是用户可以自己修改或者不给 root 权限让用户改不了
    方案二 在路由器中设置某些允许的 mac 地址可以上网
    方案三 不知道你啥层的路由器,是不是可以把某个网段配置成不能上网外网,只能内网互联
    不是专门搞网络的也不知道上面三个方案是否可行,只是感觉可行
    tinybaby365
        23
    tinybaby365  
       2023-01-28 09:07:59 +08:00
    单独一个路由器搞一个独立网段,路由器上只配置访问其他内网网段的路由。
    为了安全性,可以考虑再加一个堡垒机。只有通过堡垒机才能访问你这台机器。
    ik
        24
    ik  
       2023-01-28 09:15:51 +08:00 via iPhone
    一般路由器都有”防火墙”的类似配置选项,黑名单加强对应的 ip 或者 mac 地址。

    内网只有一个子网的话像楼上说的不写网关也可以。多个子网再手写路由。
    psiKENT
        25
    psiKENT  
       2023-01-28 09:42:51 +08:00
    看具体情况。
    如果你的内网指的是校园网,那就在运算机配置好路由和本机防火墙的前提下,针对要运行的软件新建专门的用户,通过严格的权限控制阻止运算机网络底层和防火墙配置被更改。
    如果是自己组内网,那方法就多了,可以通过控制所有节点路由+权限管理的方式来控制,或者通过网关 ACL 等,不一一列举。
    C0nvN3t
        26
    C0nvN3t  
       2023-01-28 09:49:47 +08:00
    AC 或者 AF 上配一下规则 针对 mac 或固定 ip
    byte10
        27
    byte10  
       2023-01-28 09:50:41 +08:00
    如果是研究所用的话,就只允许它连接内网的 2-3 台机器呗。或者重新模拟一个内网环境,单独给这个实验项目所使用不就可以了吗?
    zzutmebwd
        28
    zzutmebwd  
       2023-01-28 09:57:51 +08:00
    内网能访问+内网其他机器能访问外网=一个跳板就能访问,没有任何意义。
    zzutmebwd
        29
    zzutmebwd  
       2023-01-28 09:58:35 +08:00
    如果要在路由上操作,openwrt 基础操作了,防火墙 ban 掉即可
    SAGAN
        30
    SAGAN  
       2023-01-28 10:06:49 +08:00
    我在自己家路由器上弄过这个(目的是阻止破解的 ps4 联网。。),就是几条 iptables 规则:

    ipset create blnet hash:net
    ipset create macblnet hash:mac

    iptables -t mangle -I PREROUTING -m set --match-set blnet src ! -d 192.168.0.0/16 -j DROP
    iptables -t mangle -A PREROUTING -m set --match-set macblnet src,src ! -d 192.168.0.0/16 -j DROP

    其中 192.168.0.0/16 是你的局域网网段。

    然后把想要禁止联网机器的 IP 地址或 MAC 地址加到 blnet / macblnet 的 ipset 里即可,例如:

    ipset add blnet 192.168.1.100
    ipset add macblnet 00:11:22:33:44:55

    但是这种方式只建议用于自己控制的设备。如果要做到网络安全意义上的隔离,需要用 vlan 之类的。
    abbottcn
        31
    abbottcn  
       2023-01-28 10:08:04 +08:00 via iPhone
    物理隔离
    hlbcpt
        32
    hlbcpt  
       2023-01-28 10:08:12 +08:00
    消费级的路由器一般都有 Mac 地址过滤,加入到黑名单就好了。
    kingleid
        33
    kingleid  
       2023-01-28 10:16:16 +08:00
    消费级的路由器也是有黑名单的直接黑名单那台设备就行了
    zxsa
        34
    zxsa  
       2023-01-28 12:49:57 +08:00
    做好基本防护就好,代理防不住,不如从管理方面着手。
    机器单独放在一个小房间内,安装门禁,进入房间需要申请,定期审计进入记录,一个近景摄像头,拍摄键盘屏幕和鼠标,一个全景摄像头拍摄全屋,进入房间前需要确认摄像头工作正常,操作时必须双人确认,操作前后填写台账后并签字。对于漏填错填篡改有意污损台账,伪造签名,规避摄像头者进行处分,必要时追究双人刑事责任。
    TheNine
        35
    TheNine  
       2023-01-28 13:06:32 +08:00
    最有效的办法还是内网和外网进行物理隔离
    zxsa
        36
    zxsa  
       2023-01-28 13:08:39 +08:00   ❤️ 1
    受限于保密协议,要不然想让大家看看我现在这个公司的规定,安全部的那些人几乎把各种人能想到的漏洞都堵上了,搞骚操作,不可能的,除非你能把高层拉下水。
    可以参考一下这个
    http://www.pbc.gov.cn/kejisi/146812/146814/2899523/index.html
    pinkbook
        37
    pinkbook  
       2023-01-28 13:25:28 +08:00 via iPhone
    考虑合法用户的合规操作,如上面所说只需要修改路由表或 iptable 规则即可。
    如果要防止违规操作,比如修改路由,代理上网等。需要详细且安全的使用规则和操作审查,以及专门网络安全人员的定时巡检排查,再加上对网络流量的审计与机器资源的监控
    ccadb
        38
    ccadb  
       2023-01-28 13:33:18 +08:00   ❤️ 2
    个人理解:要想绝对安全,内外网隔离;如果只是让不能上外网,出口路由器换成防火墙,写策略即可。不知道你说的“运算机与内网各节点可以顺利互相访问”是否一般就是指访问共享文件夹、打印机、数据库,如果是这样的话,也可以在防火墙上写策略,让局域网内电脑之间互访只限于特定端口。
    ashuai
        39
    ashuai  
       2023-01-28 14:30:47 +08:00   ❤️ 2
    正经的做法是在路由器上开 mac addr 白名单。

    都是菜鸡的话,把网关和 dns 都改成错的就行了
    yolee599
        40
    yolee599  
       2023-01-28 15:04:41 +08:00
    @wangyu17455 #3 是 if-pre-up 吧?没有 if-post-up 。
    wangyu17455
        41
    wangyu17455  
       2023-01-28 15:09:28 +08:00
    @yolee599 是 post ,默认路由只有在 dhcp 获取到网关之后才出现。这就是为啥要 mkdir 了,有些系统默认没有这个文件夹。
    preach
        42
    preach  
       2023-01-28 15:22:14 +08:00
    iptables allow 内网 ip
    iptables reject all
    preach
        43
    preach  
       2023-01-28 15:22:42 +08:00
    @preach iptables allow 内网 ip 网段
    iptables reject all
    mytsing520
        44
    mytsing520  
       2023-01-28 15:25:54 +08:00
    看了半天,非得在机器上加?
    直接上联分配一个不允许连接互联网的网段用不就行了么?
    laqow
        45
    laqow  
       2023-01-28 15:33:07 +08:00
    没意义,不如给危险用户开虚拟机。除非运算机是以 cluster 节点方式设置的,不然后面 apt-get 都运行不了时就几十万设备闲置了。
    CSGO
        46
    CSGO  
       2023-01-28 16:24:41 +08:00
    拔掉网线不行吗?
    yankebupt
        47
    yankebupt  
       2023-01-28 18:02:05 +08:00
    删默认路由是对的。
    但是就不应该有默认路由
    这种情况应该需要跳板机
    就是专门有一台机器开代理当跳板机,访问控制,SSL 剥了壳出去,代理密码精确到个人。   这样可以杜绝各种乱七八糟连接,所有连接有迹可查
    密级再高一点我也不知道,反正那种装样子的上网不涉密都是这样搞的
    WuSiYu
        48
    WuSiYu  
       2023-01-28 20:42:27 +08:00
    在出口的路由器上加就可以
    在本机上加也是可以的,但你得防止用户能改

    不过这都没法完全阻止,只要用户自己的机器有网,并且能连 ssh 过去,那就可以用端口转发让服务器通过自己机器上网
    crazyweeds
        49
    crazyweeds  
       2023-01-28 20:51:44 +08:00
    搞太复杂了。路由器一般都有限制功能,直接限制联网就行了,然后 MAC+IP 绑定起来就完事了。
    samersions
        50
    samersions  
       2023-01-28 22:33:49 +08:00
    OpenWRT 防火墙设置一下规则,把 LAN 区域这台机器 IP 向 WAN 区域的区域间转发 DROP 掉。
    systemcall
        51
    systemcall  
       2023-01-29 04:12:42 +08:00
    加个 openwrt 路由器,配置好规则。取决于内网速度,应该要不了多好的机器吧。有两个网口、配置不要太低差不多就行了
    建立路由规则,只保留到内网各节点的路由,防火墙到内网各节点的放行,其他的丢掉。开 DMZ
    ipv6 的话不知道怎么配置。要求不高的话可以用 socat 提供单向的访问,还可以用 nat66 ,但是不好看
    检测代理的话,那你只能上 DPI 了。不过简单一点的办法的话,你可以让流量通过 clash-meta ,之后通过脚本模式把带别的 host 的连接丢掉,似乎可以把 HTTPS 连接丢掉,不清楚能不能丢掉 socks 连接
    xuanbg
        52
    xuanbg  
       2023-01-29 08:03:05 +08:00
    网关设置成本机的 ip
    wslzy007
        53
    wslzy007  
       2023-01-29 08:42:13 +08:00
    如果局域网内其它机器能访问互联网那就没有意义,可以通过代理访问到内网那台机器的。
    cagev5
        54
    cagev5  
       2023-01-29 09:17:20 +08:00
    买个好点的路由器,直接把 MAC 禁止连接外网即可,不影响内网使用。最优解
    explore365
        55
    explore365  
       2023-01-29 15:46:05 +08:00
    网卡 MAC 可以自定义啊,路由器禁止 MAC 没用
    Richard14
        56
    Richard14  
    OP
       2023-01-29 17:16:59 +08:00
    @cagev5
    @systemcall
    @crazyweeds
    @WuSiYu 各位都提到改路由,有推荐路由器具体型号吗?我们实验室人比较多,具体需求应该是几台物理机器通过物理网线连接,然后还有不少其他设备通过无线网络连接,同时需要确保比较高的内网速度
    systemcall
        57
    systemcall  
       2023-01-29 17:21:14 +08:00
    @Richard14 #56
    跑千兆 r2s 就够了吧,要隔离的机器如果只有一台就直连,要是有很多台就接个交换机
    我想到你其实可以用 v2ray 或者 clash 来做,而不是传统的基于 iptables 这类的东西做出来的实现
    多研究一下,写个规则,做成白名单吧
    llbbzh
        58
    llbbzh  
       2023-01-29 18:40:23 +08:00
    我感觉最简单的方法就是,再搞一个内部的小内网,把这台机器和其它几台需要它连接的机器组起来就行了
    crazyweeds
        59
    crazyweeds  
       2023-02-01 00:09:51 +08:00
    @Richard14 多少设备数?如果少于 50 的话,直接华硕 AC86U 就完事了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2863 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:22 · PVG 20:22 · LAX 04:22 · JFK 07:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.