V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cy18
V2EX  ›  信息安全

端口映射 3389 到 5 位端口,一直在被爆破,怎么防护可以兼顾安全性跟便捷性?

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

    日志管理看了下,24 小时大概有 3 万多条记录。大部分记录都在试 Administrator ,但显然我已经把 Administrator 禁用了。

    之所以发现这个问题,是因为中午出去吃个饭,回来就发现账户被锁定无法登陆了。Windows 本地安全策略里面的锁定时间跟尝试次数已经改成 1 分钟 18 次了。虽然可以改大,但感觉改大之后只会让他们提高爆破强度...

    有装 Zerotier ,但是有时候 Zerotier 会挂,所以还是保留了公网的端口。

    现在的问题有两个,一个是会遇到账户被锁定,等一段时间才能登陆。第二个问题是虽然密码被破的概率不高,但是一直在被爆,总感觉不爽。由于 Windows 密码经常需要手动输入,不可能像一般网站密码搞得那么复杂。密码复杂程度一高,便捷性也就受影响了。万一密码出现在某个字典里,那麻烦就大了。

    有没有什么办法可以兼顾安全性跟便捷性?

    104 条回复    2023-10-13 18:53:50 +08:00
    1  2  
    crab
        1
    crab  
       303 天前
    ipsec 设置白名单 IP
    TerranceL
        2
    TerranceL  
       303 天前
    ban2fail
    黑名单
    随机生成密码
    txj
        3
    txj  
       303 天前   ❤️ 2
    cloudfare tunnel
    需要连接的时候
    cloudflared access rdp --hostname domain.com --url localhost:3000
    BH1SMB
        4
    BH1SMB  
       303 天前
    我上次被爆破到无法登陆,然后不用的时候就关掉映射了。。。
    yagamil
        5
    yagamil  
       303 天前
    换了端口还这么多人爆破? 是有人专门要黑你这个服务器吧。。。
    那种脚本小子的,一般都扫下默认,没有就下一个的,一般没必要耗死在一台机子上的。

    或者你看看 ip ,是不是固定的一个访问的,直接 ban 掉就好了。
    amorphobia
        6
    amorphobia  
       303 天前
    影射到了 X3389 端口?
    kav2007
        7
    kav2007  
       303 天前
    把 RDP 公网的端口映射关了。通过 ssh 隧道、端口映射,增加一层防护。
    找一台 linux ,开启 ssh pub key 登录,禁用 ssh 密码登录,修改 ssh 默认端口。安装 fail2ban ,开启 ssh 防护。
    需要访问 RDP 的时候,本地执行 ssh 端口映射。
    acbot
        8
    acbot  
       303 天前
    系统或者是网关上加上 IP 段白名单
    PHPer233
        9
    PHPer233  
       303 天前   ❤️ 1
    建议换个端口。你这个端口已经在扫描器的识别范围内,换个毫无规律的随机端口,应该就安静了。。。
    gtheone1
        10
    gtheone1  
       303 天前
    我想问,不映射 3389 到外网直接访问,而是用 Zerotier 组网后再用 3389 ,这样更安全吧?
    opengps
        11
    opengps  
       303 天前
    我教你个办法,你转发出去的端口只在需要时候开启公网
    l4ever
        12
    l4ever  
       303 天前
    买个堡垒机呗
    amlee
        13
    amlee  
       303 天前
    @txj 使用 cloudflare tunnel 的话,客户端得使用 cloudflare warp 吧?不太方便
    yinmin
        14
    yinmin  
       303 天前
    remote desktop 不能暴露在公网上。你可以试一下在服务器和客户机上都安装 stunnel ,然后启用双向证书认证,通过 stunnel 将服务器的 rdp 端口映射到客户机的 127.0.0.1:13389

    stunnel 的 linux 版本和 windows 版本都可以用在生产环境,稳定性好,几乎不会出现软件挂掉的情况。

    具体配置方式可以问 chatgpt 。
    lisxour
        15
    lisxour  
       303 天前
    @yagamil 你把脚本的成本想高了。
    cy18
        16
    cy18  
    OP
       303 天前
    @yagamil #5 对方不是固定 IP ,也不是啥特殊的服务器,就是个普通的电脑...
    zmcity
        17
    zmcity  
       303 天前
    找个支持云管理的路由器,有需要的时候再开端口。
    githmb
        18
    githmb  
       303 天前
    用我的 tcp2ws: https://github.com/develon2015/tcp2ws

    这样可以用 nginx 把 3389 代理成 websocket
    Leexiaobu
        19
    Leexiaobu  
       303 天前
    后台在挂一个 ToDesk,zerotier 断了的时候,上 ToDesk 去解决
    yhvictor
        20
    yhvictor  
       303 天前
    我记得 rdp 不是安全协议 不建议跑在公网。
    套个 ssh 吧。
    windows 自己好像也支持 ssh server 了,但我还没试。
    Portalv
        21
    Portalv  
       303 天前
    不要暴露到公网,server 上弄个 vpn ,通过 vpn 来访问服务。
    newmlp
        22
    newmlp  
       303 天前
    vpn 连到内网再远程控制
    mohumohu
        23
    mohumohu  
       303 天前
    Zerotier 会挂的可以自建 zerotier 。
    zhouu
        24
    zhouu  
       303 天前
    我是家里运行 ss server ,通过 clash/surge 通过规则配置走 ss ,安不安全不好说,但还没遇到暴力破解访问的
    luckyv2
        25
    luckyv2  
       303 天前
    自建 tailscale+ rustdesk
    主要通过 tailscale+rdp
    出问题就 rustdesk

    还有一个内网备选的 nps 一直运行,上面都不行然后 nps 使用 tcp 进去内网然后 rdp 在调试
    leefor2020
        26
    leefor2020  
       303 天前
    我是路由器上起一个 IPSec 的服务,这些服务都不暴露到公网
    peasant
        27
    peasant  
       303 天前
    看到这个贴子想起来我的远程端口也在开着,打开事件查看器看了下,昨天中午到现在,登录失败的记录有 31000 条
    wowpaladin
        28
    wowpaladin  
       303 天前
    ipsec vpn 或者 ssl vpn
    GoodRui
        29
    GoodRui  
       303 天前 via Android
    @yagamil 早就不是这样了,N 多服务器,不管什么服务,只要映射到公网,不几天就全是各种爆破。都无语了。服务器业务端口全都是 4 5 万以上的,基本无一幸免。现在就靠强密码或者密钥来硬抗。什么 IP 白名单都没法弄,因为可能要多人访问,来源也不固定。
    hahiru
        30
    hahiru  
       303 天前
    zerotier+tailscale ,双重保障。
    cy18
        31
    cy18  
    OP
       303 天前
    @GoodRui #29 他们手上的这些肉鸡 IP 估计就是这么扫出来的。肉鸡生肉鸡,肉鸡何其多。
    txj
        32
    txj  
       303 天前
    @amlee 装一个 cloudflared 就行了
    huahsiung
        33
    huahsiung  
       303 天前
    我是加 vpn

    但是还有其他两种简单方法

    一个是微软的 rdp 协议强行验证信任的远程桌面证书,win10/server2012 以上都是 rdp over tls ,只是没有验证证书而已,第一次连接时候都要问你信不信任这个证书,强行验证这个可能要加域,不在域里面的无法连接,我没有试过。

    还有一个,让扫描器扫描不到 rdp 服务就行了,一般扫描不到就不会爆破。传出的数据 xor 变化一下就行,实在不会加个 kcp-tunnel 也可以。会减少 99%的爆破
    eudemonwind
        34
    eudemonwind  
       303 天前 via Android
    理论上没事,win 系统只要一直跟着升级,开自动更新,在闹个 50 位的复杂密码,基本上爆不出来。
    我一台 virjp 的小鸡 dd 了 win ,rdp 改了端口,在那放了一年,爆破日志十几个 G ,都没一点问题。还用的是默认 administrator 用户。实在不放心可以闹个火绒,管理下防火墙和出站连接,win 自带防火墙玩的溜的可以直接用自带防火墙替代火绒,搞个规则就行了。
    paranoiagu
        35
    paranoiagu  
       303 天前 via Android
    都 5 位数了,还一直被爆,这确实有点奇怪
    PrinceofInj
        36
    PrinceofInj  
       303 天前
    映射成 22 试试看
    callmebigfaceman
        37
    callmebigfaceman  
       303 天前
    @paranoiagu 几位数都不行,我自己的也开了 5 位数端口。爆破从来没停止过,我用了笨方法,强密验证+登录短信告警。。目前还正常。🤣
    jianyang
        38
    jianyang  
       303 天前
    设置个简单的密码方便自己、防火墙设置入站 IP 拒绝小黑子
    tivizi
        39
    tivizi  
       303 天前
    我服务器目前都用的是 TCP over HTTP 的代理端口通过 HTTPS 映射到本地访问,很舒服。或者稍微复杂点上 WireGuard 之类的 VPN
    lovelylain
        40
    lovelylain  
       303 天前 via Android   ❤️ 1
    运行 frps 和 frpc ,通过 stcp
    feaul
        41
    feaul  
       303 天前
    用 vpn ,WireGuard 最近用的不错,设置只允许 WireGuard 的客户端的地址可以访问。
    fox0001
        42
    fox0001  
       303 天前 via Android
    使用 ssh 作为安全网关。要远程桌面时,使用 ssh 登录并代理 3389 端口。
    dode
        43
    dode  
       303 天前
    1. RDP 开启白名单,只允许固定 IP 连进来
    2. 电脑安装 WireGuard 套起来保护 RDP
    3. win10 以上电脑安装 sshd 服务,设置好仅密钥登录,套起来保护 RDP
    leloext
        44
    leloext  
       303 天前
    vpn 到内网再连,不要在公网上暴露。
    BTW:映射到 5 位端口了还被爆破,是不是有点异常?
    yagamil
        45
    yagamil  
       303 天前
    爆就爆呀,换端口,用个奇异的用户名+定期改密码。这样也会锁定吗?
    Xbol
        46
    Xbol  
       303 天前   ❤️ 1
    之前搞了一个脚本,同一个 ip rdp 登陆几次失败就加防火墙 ip 黑名单。。每天看着黑名单 ip 越来越多有股成就感
    germain
        47
    germain  
       303 天前 via iPhone
    3389 有很多 vulnerability 绝对不要放公网
    mingl0280
        48
    mingl0280  
       302 天前 via Android
    被映射的端口用 iptables 在网关或防火墙上加规则,只允许五分钟内尝试三次,否则就拉永久黑名单。非常有效。
    Timk
        49
    Timk  
       302 天前
    vpn 连回家最稳了
    liansishen
        50
    liansishen  
       302 天前
    我一开始也是被爆破的没法正常登录,后来直接开启了白名单
    客户端 IP 变动了就 rustdesk 连上去加一下白名单,基本上加一次能用好几天,也不算太麻烦了
    ChenSino
        51
    ChenSino  
       302 天前
    把外网的那个服务器的端口限制指定 ip 登录
    openbsd
        52
    openbsd  
       302 天前
    遇到同样的问题,虽然密码不怕被爆,但是日志看着难受
    有条件的话,关掉端口,前面挡个防火墙开 VPN
    改端口没啥用,动态 IP+63726 这种随机端口都每天几万条日志,触目惊心
    fbichijing
        53
    fbichijing  
       302 天前
    如果能够设置密钥+密码登录的话,我觉得很难暴力进去吧。

    或者你可以配置防火墙加一个 IP 白名单,只是动态 IP 的原因你得不时去更新配置,比较麻烦。当然,你可以通过许多方式去改善这个行为。
    yqlian
        54
    yqlian  
       302 天前   ❤️ 2
    实测:系统内使用一个特殊的用户名(非 Administrator )+一个简单的密码(短至 6 位)+非标准端口,就足矣了。放在公网上几年都没有出过问题。反而同网一台使用 Administrator 用户+复杂密码+标准端口,被黑客撞击进来了。网络专家说用工具扫描一台机器的几万个端口也就几秒钟。可见端口并不是最有效的阻挡因素,第一步,非 Administrator 的特殊用户名才是最有效的。
    ALLENi
        55
    ALLENi  
       302 天前
    我 frp 用非管理员的用户名 加 5 位端口 加 大小写数字符号的密码 稳定一年多 爆破我就不知道了 不会看日志。
    huangzhe8263
        56
    huangzhe8263  
       302 天前
    knock 敲门
    额外开一个端口,接受指定 uuid, 若是符合,则记录 ip ,并为该 ip 开启需要端口的权限
    设定一个超时时间,超时后关闭该权限

    每次访问前先手动访问额外端口,后再进行 rdp 连接
    cy18
        57
    cy18  
    OP
       302 天前
    @huangzhe8263 #56 敲门感觉比较方便,有啥推荐的工具么?
    hermanarturo
        58
    hermanarturo  
       302 天前
    先把内网 3389 映射到公网高位端口。 然后设置主路由一旦收到公网 3389 端口扫描,就把对方 ip 拉黑。
    5200
        59
    5200  
       302 天前
    @hermanarturo #58 拉不完的,之前试过,都拉黑了上百个 IP 。后面放弃了使用 VPN
    hermanarturo
        60
    hermanarturo  
       302 天前
    @5200 ip ban 一天就够了,目的不是拉黑,是让他们扫描到普通低位端口的时候就 ban 了他们,这样大概率不会发现高位的 3389 ? 我的 blacklist 基本上就是一两百的长度
    realpg
        61
    realpg  
       302 天前
    一般远程我都限制本市 IP 本运营商 IP 访问
    基本三大运营商正规宽带的 IP 段很固定
    ihciah
        62
    ihciah  
       302 天前 via iPhone
    我这边的 shadow-tls v3 也可以拿来搞这个。
    服务端对客户端的 client hello 有鉴权,通过后转发至配置的后端 A ,否则转发至后端 B 。
    ghjexxka
        63
    ghjexxka  
       302 天前 via iPhone
    zerotier 都能接受的话,那用 v2ray 套一层加密后再转发应该也行
    ghjexxka
        64
    ghjexxka  
       302 天前 via iPhone
    zerotier 都能接受的话,那用 v2 ,ray 套一层加密后再转发应该也行
    nightwitch
        65
    nightwitch  
       302 天前 via Android
    不建议暴露 rdp 到公网,历史上多次出现鉴权和远程代码执行这种严重安全漏洞
    yuchenr
        66
    yuchenr  
       302 天前
    ```
    Import-Module NetSecurity

    $startTime = Get-Date
    $startTimeStr = $startTime.AddMinutes(-5).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.FFFZ")
    $failedAttemptsThreshold = 3

    $Query = [xml]@"
    <QueryList>
    <Query Id="0" Path="Security">
    <Select Path="Security">*[System[(EventID=4625) and TimeCreated[@SystemTime&gt;='$startTimeStr']]]</Select>
    </Query>
    </QueryList>
    "@

    function Get-IPAddresses {
    param (
    [xml]$query,
    [int]$maxEvents
    )

    $events = Get-WinEvent -FilterXml $query -MaxEvents $maxEvents
    if (-not $events) {
    Write-Host "未获取到任何日志。脚本将退出。"
    return
    }

    $events | ForEach-Object {
    $_.Properties[19].Value
    }
    }

    $failedIPs = Get-IPAddresses -query $Query -maxEvents 100 | Group-Object | Where-Object {
    $_.Count -gt $failedAttemptsThreshold
    } | Select-Object -ExpandProperty Name -Unique
    $uniqueIPs = Get-IPAddresses -query $Query -maxEvents 100 | Select-Object -Unique

    $filteredFailedIPs = $failedIPs | Where-Object {
    $_ -notmatch '^192\.168\.' -and $_ -notmatch '^10\.' -and $_ -notmatch '^172\.(1[6-9]|2[0-9]|3[0-1])\.'
    }

    # 定义要过滤的特定 IP 地址列表
    $specificIPs = @("192.168.1.100", "10.0.0.5")

    # 过滤掉特定 IP 地址
    $filteredFailedIPs = $filteredFailedIPs | Where-Object {
    $_ -notin $specificIPs
    }

    $ruleName = "BlockIPs"
    $filteredFailedIPs = $filteredFailedIPs | Sort-Object

    # 获取现有的防火墙规则
    $existingRule = Get-NetFirewallRule -DisplayName $ruleName

    if ($existingRule) {
    # 获取现有的远程地址过滤器
    $existingAddressFilters = Get-NetFirewallAddressFilter -AssociatedNetFirewallRule $existingRule

    # 获取现有的远程地址
    $existingRemoteAddresses = $existingAddressFilters | Select-Object -ExpandProperty RemoteAddress
    $existingRemoteAddresses = @($existingRemoteAddresses)
    $existingAddressFilters = @($existingAddressFilters)
    # 添加新的地址
    $newRemoteAddresses = $existingRemoteAddresses + $filteredFailedIPs | Select-Object -Unique

    # 更新远程地址过滤器
    $existingAddressFilters | Set-NetFirewallAddressFilter -RemoteAddress $newRemoteAddresses
    }
    else {
    Write-Host "规则 $ruleName 不存在。"
    New-NetFirewallRule -DisplayName $ruleName -Direction Inbound -Action Block -Protocol Any -RemoteAddress $filteredFailedIPs -RemoteAddressType "IP"
    }
    ```
    playboy0
        67
    playboy0  
       302 天前
    可以把国外 ip 都封了
    lx0758
        68
    lx0758  
       302 天前
    我去, 刚刚看了下我的, 也是一堆审核失败..........我也换了端口的
    Jxnujason
        69
    Jxnujason  
       302 天前
    端口限 ip ?我也被爆破过,后来用的时候就上后台开放一下 IP ,用的是 frps
    zhj9709
        70
    zhj9709  
       302 天前
    @hahiru 我 zerotier+tailscale 一起用明显不如用单个的,不知道是不是一起用有干扰,ping 丢包率都高点。
    hahiru
        71
    hahiru  
       302 天前
    @zhj9709 #70 没办法,有的时候这个连通,有时候那个连通。双重保险。不过我暂时没发现干扰。
    asuraa
        72
    asuraa  
       302 天前
    加入域环境 用证书登陆
    iphoneXr
        73
    iphoneXr  
       302 天前
    企业都是上 vpn 和堡垒机 ,任选其一不就行了。
    Arthur2e5
        74
    Arthur2e5  
       302 天前
    @yinmin RDP 一样有 TLS 加密,再套一层 TLS… duh 。也不是不行。

    就,一样是让爆破哥难受,fail2ban 等效功能也有啊 https://github.com/DigitalRuby/IPBan 。或者说,爆破哥真的是什么大问题吗?

    @yhvictor Windows XP SP3 就有 Network Level Authentication ,你在喝什么老酒啊? TLS 强制也有注册表配置

    https://serverfault.com/a/128943

    连接时候点一个自签名证书信任,和 ssh 信任 host key 是一个道理。
    fyfy560
        75
    fyfy560  
       302 天前
    可以试试 IPBan ,设置成服务,自启动
    snsqq
        76
    snsqq  
       302 天前 via iPhone
    用系统自带的防火墙 限制特定 ip 访问
    documentzhangx66
        77
    documentzhangx66  
       302 天前   ❤️ 1
    先给当地 IP 段做个白名单,直接避免 99.9999% 的攻击。

    再来个 wail2ban 。

    无敌。
    yankebupt
        78
    yankebupt  
       302 天前
    @cy18 以段为单位,出现 4 次非法登录的直接 ban C 段,出现 32 次非法登录的直接 ban B 段……
    看他有多少个 ip 吧.
    cy18
        79
    cy18  
    OP
       302 天前
    @yankebupt #78 自动封 IP 有啥推荐的工具不?

    封 IP 有一个局限,我另外还有一台没有公网 IP 通过 frp 转发的电脑,最近也被攻击了。frp 进来连接全是中继服务器的 IP ,没法封。
    至于其他各种加密、转发、VPN 之类的,都需要额外装工具啥的,丧失了便捷性。
    f0rger
        80
    f0rger  
       302 天前 via iPhone
    一直以为没事情,看前面说的,我也看了一下我的日志,现在还有尝试登录的。我是没启用超管,用的另外的账号和密码
    nicevar
        81
    nicevar  
       302 天前
    @paranoiagu 换 5 位数有啥用,对扫描程序来说几秒钟的事,意义不大
    someonedeng
        82
    someonedeng  
       302 天前
    白名单吧,爆破还好,就怕漏洞精准打击
    angryfish
        83
    angryfish  
       301 天前
    设置防火墙,只允许固定 ip 访问。比如家里 ip 会变动,就允许一段 /24 的 ip 访问,公司的直接固定 ip 。基本可以了
    yy306525121
        84
    yy306525121  
       301 天前
    我是防火墙设置了只允许国内 IP 访问之后就好了, 因为之前被扫的时候发现全是国外的 IP 。
    cy18
        85
    cy18  
    OP
       301 天前
    @yy306525121 #84 我看了下日志,都是国内的 IP
    cy18
        86
    cy18  
    OP
       301 天前
    @someonedeng #82 这个确实,有点吓人
    summersun2021
        87
    summersun2021  
       301 天前
    @leloext vpn 到内网是不是也得至少开一个端口,因为家宽 ip 都是不固定的,需要用 ddns 来获取更新,那就必须要一个域名+开放端口。
    ZeroDu
        88
    ZeroDu  
       301 天前
    求问怎么查看登录记录,那个
    photon006
        89
    photon006  
       301 天前
    @cy18

    试用 IPBan 确实不行,搭配 frp 失效,只适用公网 ip 端口转发的情况,我的 frpc 运行在 openwrt ,IPBan 获取的 ip 就是路由器内网 ip ,不属于公网 ip ,忽略不做任何操作

    2023-06-01 13:26:57.8466|INFO|IPBan|Ignoring failed login for internal ip address 192.168.2.1 because ProcessInternalIPAddresses is false
    photon006
        90
    photon006  
       301 天前
    我平常的习惯不用 Administrator ,用自定义用户,这能避免不少攻击,相当于双层密码。
    leloext
        91
    leloext  
       301 天前
    @summersun2021 对的,ddns 算是(我自己的)常规操作了,用 vpn 来保护远程桌面,但要需确保 vpn 已知的漏洞得到修复。
    cdswyda
        92
    cdswyda  
       301 天前
    想个办法,外网映射在自己用的时候才开,不要一直开着。
    EvineDeng
        93
    EvineDeng  
       301 天前
    我在路由器上防火墙限制了 RDP 端口仅限本省电信 IP 访问,RDP 的连接记录中一年多来,在事件查看器中只有自己连接的记录。
    cy18
        94
    cy18  
    OP
       301 天前
    @EvineDeng #93 请教下,用的哪家路由器?我现在的路由器功能比较弱,基本没啥配置功能。
    EvineDeng
        95
    EvineDeng  
       301 天前
    @cy18 #94 自己买的硬件装的爱快软路由。
    ddd270700
        96
    ddd270700  
       301 天前 via Android
    @huangzhe8263
    大佬,有相关的文章链接么?
    AIyunfangyu
        97
    AIyunfangyu  
       272 天前
    可以了解下我们的防御 合作交流 V:with--tea
    wslzy007
        98
    wslzy007  
       250 天前
    @cy18
    如果远程桌面只是希望自己私有访问,那就不要发不到公网。推荐尝试 SG ,P2P 模式带着手机就行:github.com/lazy-luo/smarGate
    asdgsdg98
        99
    asdgsdg98  
       244 天前
    基本都是国外 ip 打来的,白名单加自己省份的 ip
    anciusone
        100
    anciusone  
       241 天前
    我用了 RDPGuard 保护 RDP 和 FTP 端口,自动封 IP 。找不到资源的话,踢我。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1017 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:24 · PVG 03:24 · LAX 12:24 · JFK 15:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.