V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
naoh1000
V2EX  ›  云计算

RDP 安全吗?

  •  
  •   naoh1000 · 2021-03-31 12:55:42 +08:00 via iPhone · 8438 次点击
    这是一个创建于 1093 天前的主题,其中的信息可能已经有所发展或是发生改变。
    好像 TLS 最高支持 1.0 版本,而且经常看到窃听 RDP 连接的文章( https://www.jianshu.com/p/dcf0cce5857b Google 上随便搜索的,和我无关)是否说明 RDP 不安全?那么如何安全的远程连接公网 Windows 机器办公呢?
    72 条回复    2021-04-07 09:43:55 +08:00
    hs0000t
        1
    hs0000t  
       2021-03-31 12:58:01 +08:00 via Android   ❤️ 1
    建议防火墙禁了 3389,套一层 VPN 再连
    opentrade
        2
    opentrade  
       2021-03-31 12:59:16 +08:00
    被 3389 勒索木马害惨了
    opentrade
        3
    opentrade  
       2021-03-31 13:03:08 +08:00   ❤️ 3
    dream4ever
        4
    dream4ever  
       2021-03-31 13:03:09 +08:00 via iPhone
    是阿里云么,是的话可以在安全组中限制 3389 端口的入方向 IP,只允许你的 IP 能远程连接就行。
    Jat001
        5
    Jat001  
       2021-03-31 13:22:22 +08:00   ❤️ 4
    翻译得真烂,还是好多年前的,这种三手文章还是别看了。

    TLS 最高支持 1.2,1.3 还没加入。

    就算是 ssh,当你第一次连接 ssh 服务器时,由于你不知道服务器的公钥,所以也没法确定你连上的服务器是真的,如果是假的服务器,而你又用密码验证的话,那你的密码也会泄露,所以请使用证书验证。

    但问题是中间人攻击多麻烦啊,被中间人攻击了说明从你家到服务器间的网络至少有一处被攻破了,你觉得是运营商的网络被攻破的可能性大,还是你家或者公网的机器被攻破的可能性大?与其想着中间人攻击,倒不如加强公网机器的防范措施
    willamtang
        6
    willamtang  
       2021-03-31 13:43:20 +08:00
    bitvise ?给 rdp 套上 ssh
    hronro
        7
    hronro  
       2021-03-31 14:01:07 +08:00
    @opentrade 才 100 多 stars,不敢用啊
    Acoffice
        8
    Acoffice  
       2021-03-31 14:14:50 +08:00
    @opentrade #3 速度很快啊,它这个是什么原理?也是服务器中转吗?
    wevsty
        9
    wevsty  
       2021-03-31 14:15:55 +08:00   ❤️ 2
    RDP 的安全性我个人觉得是没有什么问题的。

    传输安全方面,RDP 允许强制要求 TLS 。
    虽然组策略中写的是 SSL,但是实际上只要操作系统支持那就是 TLS 1.2
    MS 的文档中有详细的说明:
    https://docs.microsoft.com/en-us/troubleshoot/windows-server/remote/incorrect-tls-use-rdp-with-ssl-encryption

    协议本身如果已经安装了最新的补丁(系统更新)那么目前是没有已知 0day 可以突破的,只要勤做系统更新服务本身的安全性也是可以保证的。剩下的无非就是要设定强密码,建议更改默认端口等辅助手段了,只要做好这些我认为是没有什么安全方面的问题。

    当然,如果使用 Bitvise 或者 SSH 包裹之类的方法增强安全性也不是不行,这个看自己的取舍了。
    lithiumii
        10
    lithiumii  
       2021-03-31 14:28:00 +08:00
    RDP 的不安全主要是用法不安全,公网默认端口开放搭配常见用户名和弱密码,不被攻破都难。
    就算是强密码,由于自动爆破脚本太多,收一堆登录失败的日志也很烦。
    所以关键就是不该开端口( VPN 、虚拟内网、端口转发等等随便你),至少改掉默认端口。
    Eytoyes
        11
    Eytoyes  
       2021-03-31 14:34:09 +08:00
    默认端口肯定是要改的,补丁打到最新没啥问题
    opentrade
        12
    opentrade  
       2021-03-31 15:11:46 +08:00
    @hronro 才开源 2 天,star 得慢慢攒
    opentrade
        13
    opentrade  
       2021-03-31 15:15:14 +08:00
    @Acoffice 大部分情况是 TCP 打洞直连,取决于双方网关类型。打不通,就只能中转,那就慢了,它在国内没有中转服务器。
    opentrade
        14
    opentrade  
       2021-03-31 15:19:06 +08:00
    @lithiumii 对,端口转发工具很多,AnyDesk/Teamviewer 都可以轻松实现。[RustDesk]( https://github.com/rustdesk/rustdesk)的 RDP 连接也是基于端口转发的。
    opentrade
        15
    opentrade  
       2021-03-31 15:21:23 +08:00
    @Jat001 基本都会有 nonce 防范中间人攻击。
    dbpe
        16
    dbpe  
       2021-03-31 15:21:36 +08:00
    @opentrade 这玩意和 anydesk 优势是什么
    opentrade
        17
    opentrade  
       2021-03-31 15:24:13 +08:00
    @dbpe 可以自己搭中心服务器
    swulling
        18
    swulling  
       2021-03-31 15:24:25 +08:00
    安全原则第一条: 再安全的内部服务(比如 SSH,包括 RDP )绝对不直接暴露在公网上。

    标准做法是使用 VPN,VPN 可以上双因素认证等方法。
    realpg
        19
    realpg  
       2021-03-31 15:24:51 +08:00
    2002 年时候,那时候我还用 WINDOWS,就知道给 RDP 协议改端口并套一个 windows 自带的 IPSEC
    Acoffice
        20
    Acoffice  
       2021-03-31 15:47:39 +08:00
    @opentrade #17 自己搭中心服务器这个玩法,没看到文档介绍啊
    opentrade
        21
    opentrade  
       2021-03-31 15:49:55 +08:00
    @Acoffice 官方网站 rustdesk.com 有,但中心服务器软件不再免费提供了
    Tumblr
        22
    Tumblr  
       2021-03-31 16:07:09 +08:00
    哪里看到的 RDP 最高支持 TLS 1.0 啊?
    我记得好几年前就支持 TLS 1.2 了,并且还针对 Windows 7 SP1/Windows Server 2008 R2 推出补丁,并且目前 Windows 10/Windows Server 2016/2019 默认就是支持 TLS 1.2 的。
    Acoffice
        23
    Acoffice  
       2021-03-31 16:20:15 +08:00
    @opentrade #21 你的文档,放了三个平台,GitHub/你的官网 /掘金|||割裂感太强~
    villivateur
        24
    villivateur  
       2021-03-31 16:20:31 +08:00 via Android   ❤️ 1
    最好的方法是,连 vpn 进内网,再连 RDP
    letitbesqzr
        25
    letitbesqzr  
       2021-03-31 16:31:13 +08:00
    frp stcp 走 tls
    opentrade
        26
    opentrade  
       2021-03-31 16:31:56 +08:00
    @Acoffice 确实,我改一下
    wlh
        27
    wlh  
       2021-03-31 16:39:30 +08:00
    我是套了一层 zerotier,顺便内网穿透也搞定了
    wslzy007
        28
    wslzy007  
       2021-03-31 16:52:20 +08:00
    rdp 安全问题主要是使用内网穿透时暴露端口到公网了。
    推荐通过 sg 工具使用“内网”到“内网”穿透进行 rdp 访问
    github.com/lazy-luo/smarGate
    Jat001
        29
    Jat001  
       2021-03-31 17:14:07 +08:00 via iPhone
    @opentrade 只拦截到某一请求不叫中间人,叫缘分,nonce 是用来防重放的,防不了中间人,中间人能监听、拦截、修改、伪造所有请求,加 nonce 有啥用
    Jat001
        30
    Jat001  
       2021-03-31 17:45:42 +08:00
    @opentrade #14 其实我一直在找一个能在局域网内远程操控的工具,要求低延迟、低占用、支持 4K,但我尝试了包括 VNC 、RDP 、Parsec 、NewTek NDI 在内的各种解决方案,没有一个可以做到,不知道 RustDesk 能不能做到?

    VNC 和 RDP 不支持 GPU 加速,画面变化大的情况下跟看幻灯片似的; Parsec 支持 GPU 加速,但占用太高,2080 编码、2060 解码,跑不动 4K,1080P 倒是没问题;唯一能做到低延迟、低占用又支持 4K 的只有 NewTek NDI,但又不支持操控,另外它能做到低延迟、低占用的原理是直接传输几乎未经压缩的视频信号,带宽占用很高,至少要保证 400Mbps 才能稳定传输 4K 画面,虽然局域网都是千兆的了,但中国的家用宽带上行速率普遍捉急,不适合远程使用。

    目前的解决方案是 barrier + 多显示器,没延迟、没占用、支持 4K 、自由切换,缺点就是浪费一个显示器。
    SZP1206
        31
    SZP1206  
       2021-03-31 19:36:34 +08:00 via iPhone
    请问能推荐下 VPN 吗?
    littlewing
        32
    littlewing  
       2021-03-31 19:42:01 +08:00   ❤️ 1
    @SZP1206 ikev2 目前看到这个在安全性和速度方面都不错,然而我配置完后 mac/ios 8 分钟掉线,一直没找到原因
    littlewing
        33
    littlewing  
       2021-03-31 19:42:48 +08:00   ❤️ 1
    @SZP1206 现在用 Cisco Anyconnect
    ysc3839
        34
    ysc3839  
       2021-03-31 20:16:15 +08:00 via Android
    @Jat001 没记错的话大多数 VNC 客户端和 Windows 内置的 RDP 都支持 GPU 加速。
    大多数 VNC 客户端都是用屏幕录像实现的,本来就是获取显存中已渲染好的数据,自然不会不支持 GPU 加速。
    而 RDP 是使用 Indirect Display Driver 框架,本身设计就是给那些没有 GPU 的、仅能输出的显卡 (如 USB 显卡) 用的,也是会使用 GPU 渲染。
    至于“画面变化大的情况下跟看幻灯片似的”,我个人感觉还是网络问题。
    opentrade
        35
    opentrade  
       2021-03-31 20:27:36 +08:00 via Android
    @Jat001 要做 4K 高清无延迟,的确做不到,网络条件不允许,可能要等下一代 av1 硬件编解码出来吧
    opentrade
        36
    opentrade  
       2021-03-31 20:33:35 +08:00 via Android
    @Jat001 不知道 nonce,即使有了公匙和秘钥,也没发解密加密。
    hronro
        37
    hronro  
       2021-03-31 20:50:56 +08:00
    @opentrade #12
    才开源两天的项目你就知道了,你是项目作者吗?
    opentrade
        38
    opentrade  
       2021-03-31 20:57:16 +08:00 via Android   ❤️ 1
    @hronro :)
    hronro
        39
    hronro  
       2021-03-31 21:07:09 +08:00
    @opentrade #35
    另外问下现在你们在 rustdesk 里面的视频编码是怎么做的呢? h.264 or hevc ?是用 CPU 编码还是会用到 NVENC 之类的硬件编码?
    naoh1000
        40
    naoh1000  
    OP
       2021-03-31 21:15:43 +08:00 via iPhone
    @opentrade #3 Rust 项目我喜欢!但是这么敏感的项目怎么也要有个 10 年以上历史我才敢用
    opentrade
        41
    opentrade  
       2021-03-31 21:18:33 +08:00 via Android
    @naoh1000 那恐怕选择不多了,anydesk 也没到 10 年
    opentrade
        42
    opentrade  
       2021-03-31 21:20:41 +08:00 via Android
    opentrade
        43
    opentrade  
       2021-03-31 21:21:06 +08:00 via Android
    @naoh1000 谨慎是对的
    yanzhiling2001
        44
    yanzhiling2001  
       2021-03-31 21:37:07 +08:00
    @hronro 他当然是
    hronro
        45
    hronro  
       2021-03-31 21:52:59 +08:00
    @opentrade #42
    原来你们用的是 libvpx 来做编码,应该是纯 CPU 编码的,感觉对资源负担还是有点大。老实说 NVENC 从第 6 代开始,性能已经非常不错了,我自己测试的可以流畅 HEVC + 2 pass 编码,甚至可以在现有国内网络环境下满足 4K 60FPS 传输的要求。
    网上搜了下,似乎有个 Rust 的 NVENC 的 binding ( https://github.com/rust-av/nvidia-video-codec-rs ),不过作者似乎已经弃坑很久了。
    opentrade
        46
    opentrade  
       2021-03-31 22:09:43 +08:00 via Android
    @hronro 调研过 但是跨平台还是太麻烦了
    hronro
        47
    hronro  
       2021-03-31 22:13:42 +08:00
    @opentrade #46 可以只在 Windows 下启用吧
    BeautifulSoap
        48
    BeautifulSoap  
       2021-03-31 22:29:56 +08:00
    @Jat001 我寻思,你这需求,4K,局域网,高清,低延迟,不就是在指名道姓游戏串流吗

    可以试试直接用 steam 、moonlight 等等这些串流软件,否则的话单纯靠远程桌面是真的没有符合你需求的
    opentrade
        49
    opentrade  
       2021-04-01 00:30:14 +08:00 via Android
    @hronro 有空了可以考虑一下
    vibbow
        50
    vibbow  
       2021-04-01 00:35:38 +08:00
    我是在路由器上设置了默认拒绝国外 IP 连接
    jim9606
        51
    jim9606  
       2021-04-01 07:31:33 +08:00
    你要不嫌麻烦能套 VPN 就套 VPN 。
    反正我私人机子也不是默认端口的就懒得弄了,直接内网穿透 RDP 。
    Linux 主机我都懒得改默认端口,反正关了密码登录。
    我知道 VPN 更好,但我要的是随时随地连接,给所有可能用到的机子部署 vpn 客户端略麻烦。
    Jat001
        52
    Jat001  
       2021-04-01 07:59:29 +08:00
    @ysc3839 #34 千兆局域网,不是网络问题,我用 iperf 做过双向测速。vnc 和 rdp 都是以图片形式传输的,不是视频流,其实就相当于在检测到画面变化后截图然后发送,因为这两个协议本来就不是设计来传输不断变化的画面的。然后还要对图片压缩,这部分是用 CPU 完成的,虽然支持以不压缩的形式传输,但以图片形式传输视频内容的效率还是太低了。

    @BeautifulSoap #48 我当然尝试过为游戏串流设计的软件,比如 Parsec 就是,但这些软件本身占用跟一个大型游戏差不多,还能干别的吗,所以我上面还写了低占用。 我现在用的 2080,换 3090 估计就没问题了……

    @opentrade #36 你对非对称加密有什么错误理解吗,公钥都能打错,我觉得你是没有研究过相关问题,就算被中间人攻击了,私钥也是绝不可能泄露的,因为根本不会以任何形式传输私钥。如果私钥都泄露了,那说明都不是中间人攻击而是服务器被攻破了,这时候有没有 nonce 有什么区别。

    如果中间人只是监听内容,那么确实没办法解密连接建立之后的内容,因为所有内容都通过公钥加密,只能通过对应的私钥解密,但协商阶段的数据是明文的,在不知道服务器公钥的情况下,你是无法验证服务器发送过来的公钥是原来的还是被中间人修改后的。

    如果没有 nonce 或者 nonce 是固定的,那中间人就能把截取到的内容原封不动得发送到另一台服务器,所以 nonce 是用来防重放的,不是用来防解密的。
    opentrade
        53
    opentrade  
       2021-04-01 08:10:02 +08:00 via Android
    @Jat001 你是最棒的
    opentrade
        54
    opentrade  
       2021-04-01 08:17:09 +08:00 via Android
    @Jat001 的确是代码写完后,忘得也差不多了
    opentrade
        55
    opentrade  
       2021-04-01 08:24:06 +08:00 via Android
    Jat001
        56
    Jat001  
       2021-04-01 08:27:03 +08:00
    @opentrade #55 我一直在强调 nonce 是用来防重放的,你给的链接里也是这么讲的,还要争辩什么?
    opentrade
        57
    opentrade  
       2021-04-01 08:32:52 +08:00 via Android
    @Jat001 请看去哪玩
    opentrade
        58
    opentrade  
       2021-04-01 08:33:05 +08:00 via Android
    @Jat001 请看全文
    Jat001
        59
    Jat001  
       2021-04-01 08:39:48 +08:00
    @opentrade #58 我看了全文,根本没提到解密的事情,你想反驳什么直接说好吗,不想争辩就别回了
    LiYanHong
        60
    LiYanHong  
       2021-04-01 09:11:42 +08:00
    启用 Duo 的两步验证
    RecursiveG
        61
    RecursiveG  
       2021-04-01 10:25:24 +08:00
    @littlewing 8 分钟掉线是个老 bug 了,建议升级 strongswan 版本。
    wiki.strongswan.org/projects/strongswan/wiki/AppleClients#IKEv2-on-iOS-9-and-iOS-10
    libook
        62
    libook  
       2021-04-01 10:46:19 +08:00
    理论来说,用 TLS 只要用对算法就有一定的安全保障,参考这个 https://en.wikipedia.org/wiki/Transport_Layer_Security#cipher-table
    尽可能用 TLS1.2 和 TLS1.3 。

    但微软的东西我是一直都不大感在非安全区域用的,毕竟目标大,保不齐有啥 0day 漏洞被发掘利用。

    很多网络协议搞加密比较麻烦,特别是内网申请证书还要设置一堆域名,自签证书用着也很反人类。

    我家里是用的华硕的路由器,直接开启了自带的 OpenVPN 和 DDNS,然后所有流量都走 VPN,用了一年多了没啥问题。你要知道 VPN 是专门干这个用的,安全性和可用性都是经过验证的。
    123zsr123
        63
    123zsr123  
       2021-04-01 11:19:43 +08:00
    @Jat001
    RDP 可以 4K 硬件加速啊
    我连公司电脑 4K 看视频都不怎么卡 任务管理器可以看到 video encode 有大概 30%左右的使用率
    家里电脑 video decode 也有使用率
    littlewing
        64
    littlewing  
       2021-04-01 11:47:31 +08:00 via iPhone
    @RecursiveG 我用的 ros 的 ikev2……
    JoeoooLAI
        65
    JoeoooLAI  
       2021-04-01 11:52:05 +08:00
    前一年身边看着有两个公司 3389 端口中招。。。。
    nannanziyu
        66
    nannanziyu  
       2021-04-01 11:54:27 +08:00
    中招的都是 3389 admin/admin
    Kunmona
        67
    Kunmona  
       2021-04-01 11:59:24 +08:00 via Android
    中招一般都是默认端口+弱密码
    Kunmona
        68
    Kunmona  
       2021-04-01 12:15:49 +08:00 via Android
    由于强迫症也把自签的证书换了,然后用域名,被中间人了也会提示不安全
    Jat001
        69
    Jat001  
       2021-04-01 12:39:42 +08:00
    @123zsr123 #63 我之前用的 xorgxrdp 做服务端(没有两台 win,一台 win,一台 linux ),看来是它的问题,刚才又用 win 做服务端,freerdp 客户端,确实效果好很多,特效全开也基本没有延迟,带宽占用最高才 50Mbps,GPU 占用最高也是 30%,看视频是够了,对于游戏来说还是太高了,但已经比那些所谓的游戏串流软件要好多了
    aaa5838769
        70
    aaa5838769  
       2021-04-01 18:06:00 +08:00
    防火墙配置源 IP 访问,是最方便的
    freecloud
        71
    freecloud  
       2021-04-02 10:37:17 +08:00
    连接白名单+改远程端口。
    uadw
        72
    uadw  
       2021-04-07 09:43:55 +08:00
    一般把防火墙开启, 远程端口修改了
    相对都是比较安全的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3325 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 13:22 · PVG 21:22 · LAX 06:22 · JFK 09:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.