V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vzextreme
V2EX  ›  程序员

使用 frp 将 Windows 远程桌面暴露到公网上,貌似被爆破了,怎么破

  •  
  •   vzextreme · 2021-03-19 18:57:23 +08:00 · 9683 次点击
    这是一个创建于 1105 天前的主题,其中的信息可能已经有所发展或是发生改变。

    起因是发现 frp dashboard 远程桌面端口流量非常大,然后查看远程桌面主机的事件查看器,非常密集的账户登录失败事件,大概每秒 3-5 次。下面是事件信息。 ps:暴露端口不是 3389,密码也是强密码

    帐户登录失败。
    
    使用者:
    	安全 ID:		NULL SID
    	帐户名:		-
    	帐户域:		-
    	登录 ID:		0x0
    
    登录类型:			3
    
    登录失败的帐户:
    	安全 ID:		NULL SID
    	帐户名:		xxxxxxx
    	帐户域:		DESKTOP
    
    失败信息:
    	失败原因:		未知用户名或密码错误。
    	状态:			0xC000006D
    	子状态:		0xC000006A
    
    进程信息:
    	调用方进程 ID:	0x0
    	调用方进程名:	-
    
    网络信息:
    	工作站名:	-
    	源网络地址:	127.0.0.1
    	源端口:		0
    
    详细身份验证信息:
    	登录进程:		NtLmSsp 
    	身份验证数据包:	NTLM
    	传递服务:	-
    	数据包名(仅限 NTLM):	-
    	密钥长度:		0
    
    登录请求失败时在尝试访问的计算机上生成此事件。
    
    “使用者”字段指明本地系统上请求登录的帐户。这通常是一个服务(例如 Server 服务)或本地进程(例如 Winlogon.exe 或 Services.exe)。
    
    “登录类型”字段指明发生的登录的种类。最常见的类型是 2 (交互式)和 3 (网络)。
    
    “进程信息”字段表明系统上的哪个帐户和进程请求了登录。
    
    “网络信息”字段指明远程登录请求来自哪里。“工作站名”并非总是可用,而且在某些情况下可能会留为空白。
    
    “身份验证信息”字段提供关于此特定登录请求的详细信息。
    	-“传递服务”指明哪些直接服务参与了此登录请求。
    	-“数据包名”指明在 NTLM 协议之间使用了哪些子协议。
    
    57 条回复    2021-03-25 16:04:09 +08:00
    yeqizhang
        1
    yeqizhang  
       2021-03-19 19:04:55 +08:00 via Android
    Windows 这么弱的?
    selca
        2
    selca  
       2021-03-19 19:14:10 +08:00
    你不说我没发现,我也看了一样我的 Windows 日志,也是一样的情况,改个端口看看呢
    selca
        3
    selca  
       2021-03-19 19:16:07 +08:00
    @selca 我这边是默认端口,看账户名全都是用的 ADMINISTRATOR
    Navee
        4
    Navee  
       2021-03-19 19:22:49 +08:00
    frp 可以设置密钥
    m2276699
        5
    m2276699  
       2021-03-19 19:28:01 +08:00
    frp stcp
    hanxiV2EX
        6
    hanxiV2EX  
       2021-03-19 19:29:50 +08:00 via Android
    这个日志在哪里看的?
    hand515
        7
    hand515  
       2021-03-19 19:39:48 +08:00 via Android
    用 stcp,若直接暴露到公网,被暴破也正常
    hand515
        8
    hand515  
       2021-03-19 19:40:58 +08:00 via Android   ❤️ 2
    @yeqizhang 这哪里能看出 windows 弱?
    SenLief
        9
    SenLief  
       2021-03-19 19:54:57 +08:00
    换个域名。或者换个 ip
    Ayahuasec
        10
    Ayahuasec  
       2021-03-19 19:58:30 +08:00
    我是在 frp 服务器用 iptables 做一下屏蔽,设置了只放行我所在城市的 IP 段,之后就清净了好多。
    BeautifulSoap
        11
    BeautifulSoap  
       2021-03-19 20:02:33 +08:00
    @yeqizhang 注意看帖,lz 是被爆了,没有破
    Osk
        12
    Osk  
       2021-03-19 20:10:05 +08:00 via Android
    欢迎来到公网,vps 上看一下 sshd 的日志吧,特别是开 22 端口的,只能说彼此彼此。

    ps:开到公网后请及时更新 windows 的安全补丁哦!
    jousca
        13
    jousca  
       2021-03-19 20:14:11 +08:00
    @Osk SSH 那个才比较猛。我用了个脚本,密码 5 次错误封 IP 。结果半个月之后看了下 LIST,估计有几万个 IP
    zhengfan2016
        14
    zhengfan2016  
       2021-03-19 20:16:40 +08:00 via iPad   ❤️ 1
    frp 绑定域名套 cloudflare,如果仅自用的话,cloudflare 防火墙加规则禁止非中国 ip 访问
    ik
        15
    ik  
       2021-03-19 20:23:10 +08:00 via iPhone   ❤️ 1
    使用频率低的话,端口不暴露,ssh 映射到本地再连接。
    使用频率高的话用 vpn 组网
    yeqizhang
        16
    yeqizhang  
       2021-03-19 20:35:39 +08:00 via Android
    @hand515
    @BeautifulSoap 没看清,以为破了……噗……
    暴露在公网的东西,被攻击很正常吧……我的 ssh 一天几百到几千字被试密码,不是弱密码让他们玩去……
    楼主如果用的路由器的 frp,可以用 frpc 的页面管理,需要用的时候再反代到 Windows 机器上
    yeqizhang
        17
    yeqizhang  
       2021-03-19 20:37:30 +08:00 via Android
    @Ayahuasec 城市的 IP 段怎么获取到的?
    iBugOne
        18
    iBugOne  
       2021-03-19 20:43:01 +08:00
    我的做法是用 iptables,默认屏蔽 RDP 的端口( reset 所有新 TCP 连接),然后给 VPS 上自己的用户写了个 ~/.ssh/rc 文件,给自己的登录 IP 放通 10 分钟的 RDP 端口,这样我每次 SSH 登录成功后 10 分钟内我的 IP 可以连接 RDP 端口,剩下就是本地写个脚本 SSH 连一下 VPS,这样每次我只要双击运行一下 SSH 脚本,就可以马上双击旁边的 .rdp 配置文件,并且不用担心被人扫描的情况
    123abcdf11345
        19
    123abcdf11345  
       2021-03-19 21:22:34 +08:00
    一律 shutdown 解决
    mmdsun
        20
    mmdsun  
       2021-03-19 21:25:27 +08:00 via Android
    @hanxiV2EX win 的日志都在事件查看器里面
    yyyb
        21
    yyyb  
       2021-03-19 21:34:46 +08:00
    iptables 自己的 ip 白名单,动态 ip 也不怕,ddns 个免费域名,10 分钟更新一下
    ThirdFlame
        22
    ThirdFlame  
       2021-03-19 21:44:32 +08:00
    nps 的私密代理 可以了解一下。
    Maskeney
        23
    Maskeney  
       2021-03-19 23:09:06 +08:00
    这是正常现象啊,有什么值得单独拿出来说的吗?公网就是个黑暗森林啊
    mingl0280
        24
    mingl0280  
       2021-03-20 01:08:21 +08:00
    frp 是 linux 上安装的吗?
    如果是的话你可以开个 Fail2Ban 规则,配合 iptables 就可以干掉大部分请求了。
    seakingii
        25
    seakingii  
       2021-03-20 01:15:48 +08:00
    我是要用远程的时候上服务器打开端口,不用的时候关闭。
    LeeReamond
        26
    LeeReamond  
       2021-03-20 03:16:45 +08:00
    说句题外话,请问 windows 上有类似 fai2ban 的工具吗?
    mingl0280
        27
    mingl0280  
       2021-03-20 07:33:10 +08:00 via Android
    @LeeReamond 我以前自己写过一个挺生草的东西,就是读登录请求然后多于五次失败的拉黑名单,不过比较不稳定……
    其实你可以在 Windows 上开个 WSL 装 f2b 过滤。
    LeeReamond
        28
    LeeReamond  
       2021-03-20 08:27:57 +08:00
    @mingl0280 f2b 这东西得接入日志吧,咋接 windows 日志不会啊。至于自己写,怕是写完以后因为运行占用太多 CPU 资源导致以为被攻击┓( ´∀` )┏
    ciaoly
        29
    ciaoly  
       2021-03-20 08:33:01 +08:00 via Android
    可以把 FRP 换成 mesh VPN,Windows 上只允许 VPN 流量进入。而且 mesh VPN 成功打洞后直连还挺快的
    zjsxwc
        30
    zjsxwc  
       2021-03-20 08:53:59 +08:00
    买个域名吧,frp 可以限制域名连接端口,你买个又长又乱码的域名指向你的 frp server,然后 frp 绑定端口到这个域名就行,直接用 ip 风险确实大。
    lqw3030
        31
    lqw3030  
       2021-03-20 08:56:16 +08:00 via iPhone
    要不要尝试下我的方案,带 ip 名单,时间限制的:

    [-]( https://www.v2ex.com/t/729271#reply10)
    mingl0280
        32
    mingl0280  
       2021-03-20 09:01:27 +08:00
    @LeeReamond C#直接接入 eventlog 就行了,有事件发生会通知线程的。主要是你要知道你要监听的事件的 ID 什么的,挺简单。
    yanzhiling2001
        33
    yanzhiling2001  
       2021-03-20 09:14:33 +08:00
    @zjsxwc 大佬,frp 怎么绑定域名访问端口
    yanzhiling2001
        34
    yanzhiling2001  
       2021-03-20 09:15:58 +08:00
    用 frp 的 stcp 模式可以避免直接暴漏端口在公网上的风险

    https://www.linuxprobe.com/frp-security.html
    zjsxwc
        35
    zjsxwc  
       2021-03-20 09:26:41 +08:00
    @yanzhiling2001 我看错了,只有 http 服务才能 custom domain

    你直接 tcp,只能用 stcp 了
    https://github.com/fatedier/frp#expose-your-service-privately
    rund11
        36
    rund11  
       2021-03-20 09:32:53 +08:00 via Android
    1 换个端口,2 启用密钥没得问题
    Blessing1
        37
    Blessing1  
       2021-03-20 10:36:28 +08:00
    换个端口 然后设置好 只有你指定的 IP 或者 IP 域可以访问
    v2tudnew
        38
    v2tudnew  
       2021-03-20 11:45:34 +08:00
    最不担心的就是爆破了,穷举出来了我马上去买彩票。
    129tyc
        39
    129tyc  
       2021-03-20 11:53:36 +08:00 via Android
    可以使用 v2ray 做反代,比直接用 frp 更加安全
    taylor007
        40
    taylor007  
       2021-03-20 13:08:34 +08:00
    一键关机解决 (开玩笑的,不过如果用密钥的话要好吧
    wzw
        41
    wzw  
       2021-03-20 13:18:26 +08:00 via iPhone   ❤️ 2
    你们都用 frp,我用 nps,感觉配置更灵活,客户端不用配置
    v2tudnew
        42
    v2tudnew  
       2021-03-20 14:13:17 +08:00
    其实还有个办法,RDP 被登陆时邮件提醒。虽然不能防御,但可以亡羊补牢。
    ReferenceE
        43
    ReferenceE  
       2021-03-20 14:24:20 +08:00 via Android
    换端口试试?
    EVJohn
        44
    EVJohn  
       2021-03-20 15:10:19 +08:00
    用 tinc 把,或者是 zerotier
    Huelse
        45
    Huelse  
       2021-03-20 16:20:41 +08:00
    NSAgold
        46
    NSAgold  
       2021-03-20 16:22:29 +08:00 via Android
    @zhengfan2016 #14 审题啊 他是 3389 的 tcp 连接,cf 防不了
    NSAgold
        47
    NSAgold  
       2021-03-20 16:23:17 +08:00 via Android
    @NSAgold #46 更正一下“是 RDP 的 tcp 连接”
    kruskal
        48
    kruskal  
       2021-03-20 20:00:38 +08:00
    ScotGu
        49
    ScotGu  
       2021-03-20 22:37:38 +08:00
    /t/740532
    早年间发现 frp 这个特性,但是没有找到什么好的办法处理。
    所以现在转 zerotier 了。
    bjdgyc
        50
    bjdgyc  
       2021-03-20 22:46:27 +08:00
    可以试试用 vpn 的方式解决
    https://github.com/bjdgyc/anylink
    no1xsyzy
        51
    no1xsyzy  
       2021-03-20 23:09:19 +08:00
    如果不是暴露给别人用,那就不要把端口暴露到公网,要可识别来源的 VPN 类方案。
    PUBG98k
        52
    PUBG98k  
       2021-03-20 23:09:45 +08:00
    可以试试 ToDesk
    wevsty
        53
    wevsty  
       2021-03-21 01:38:36 +08:00
    针对楼主的问题,还是用 FRP 自带的 STCP 比较好。

    @LeeReamond

    推广一下: https://github.com/wevsty/RDPBlocker
    逃。
    realpg
        54
    realpg  
       2021-03-21 11:27:01 +08:00
    @selca #2
    基本啥端口过一阵子都会挨扫
    laqow
        55
    laqow  
       2021-03-21 21:19:40 +08:00 via Android
    目前是 frp 开放一个机场的服务端端口,通过飞机代理连内网再连 RDP,这样开放到外网只是一个没有特征的机场的端口。暂时没发现有攻击。
    zlowly
        56
    zlowly  
       2021-03-22 00:59:05 +08:00
    提醒一下,安全防护方面不要寄希望于简单的服务端口就能躲过端口扫描,即使普通的 nmap 之类的工具都可以通过端口的指纹识别判断服务甚至版本。
    Ansen
        57
    Ansen  
       2021-03-25 16:04:09 +08:00
    我的也是,在 github 上找到了这个项目, 根据实际情况 block 一些国家的 IP 就好了,我是 block 的是 俄罗斯

    https://github.com/iiiiiii1/Block-IPs-from-countries
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1193 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:23 · PVG 02:23 · LAX 11:23 · JFK 14:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.