阿里云服务器远程桌面RDP被爆破解决办法


被爆破后提示“为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多。请稍候片刻再重试,或与系统管理员或技术支持联系”。
3389端口换了之后过几天依旧被爆破。
我的解决方法就是利用阿里云OpenAPI修改ECS实例安全组规则,只允许本机IP连接。

    # 阿里云OpenAPI配置
    access_key_id = "" 
    access_key_secret =""
    # 安全组配置
    region_id='cn-heyuan' # 安全组所属地域ID
    security_group_id='' # 安全组ID
    security_group_rule_id='' # 安全组规则ID
    port_range='3389/3389' # 允许放行的端口
  1. 进入实例安全组规则新增安全组入方向规则,描述写“Python脚本API调用规则”,其他默认即可。
  2. 查询安全组规则ID,
    进入OpenAPI调试,发起调用获取刚刚新建规则的具体ID。

    根据刚刚的描述Description找到同一个字典中的SecurityGroupRuleId,该字符串就是规则IDsgr-f8z10hsv1dcip5k2hv3l
  3. 下载工程文件安装依赖。

    解压在目录下运行python setup.py install安装SDK依赖。
    image
  4. 访问RAM访问控制获取阿里云 API 的密钥 AccessKey ID 和 AccessKey Secret 。
  5. 修改并运行以下Python代码修改安全组规则。
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys
import requests
from typing import List

from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_ecs20140526 import models as ecs_20140526_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_console.client import Client as ConsoleClient
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> Ecs20140526Client:
        """
        使用AK&SK初始化账号Client
        @return: Client
        @throws Exception
        """
        # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
        config = open_api_models.Config(
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
            access_key_id=access_key_id,
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
            access_key_secret=access_key_secret
        )
        # Endpoint 请参考 https://api.aliyun.com/product/Ecs
        config.endpoint = f'ecs.cn-heyuan.aliyuncs.com'
        return Ecs20140526Client(config)

    @staticmethod
    def main(
        ip,
    ) -> None:
        client = Sample.create_client()
        modify_security_group_egress_rule_request = ecs_20140526_models.ModifySecurityGroupEgressRuleRequest(
            region_id=region_id,
            security_group_id=security_group_id,
            ip_protocol='TCP',
            security_group_rule_id=security_group_rule_id,
            port_range=port_range,
            source_cidr_ip=ip
        )
        runtime = util_models.RuntimeOptions()
        try:
            resp = client.modify_security_group_egress_rule_with_options(modify_security_group_egress_rule_request, runtime)
            ConsoleClient.log(UtilClient.to_jsonstring(resp))
        except Exception as error:
            # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            # 错误 message
            print(error.message)
            # 诊断地址
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    ip = requests.get("https://4.ipw.cn/").text
    # 阿里云配置
    access_key_id = ""
    access_key_secret =""
    # 安全组配置
    region_id='cn-heyuan' # 安全组所属地域ID
    security_group_id='' # 安全组ID
    security_group_rule_id='' # 安全组规则ID
    port_range='3389/3389' # 允许放行的端口
    Sample.main(ip)

运行后刷新网页的安全组规则就可以看到之前新建的规则被修改了。


远程桌面前需要先运行一次加入修改IP,记得把之前放行全部IP的规则删掉。

20 个赞

佬这方法高大上,但更多人还是习惯去安全组里鼠标点点点 :rofl:

3 个赞

加个白名单是否能解决问题?:disguised_face:

2 个赞

这个不就是白名单吗,但是个人IP会变的啊。

2 个赞

好吧没太注意原文,不过像rdp没有像fail2ban的软件吗,直接逮着所有人全封了:face_with_monocle:

2 个赞

找到一个守护神,但是收费。火绒也支持,但是服务器内存太小,再挂个火绒没必要了。

3 个赞

这么麻烦吗

太强了,大佬

太强了,大佬

搞个强密码, 把自动锁定关了, 让他暴破吧

整个frps比较简单,弄完后面不用每次去改什么,直接连就好了

不太懂,为什么不直接改用户名呢,我把用户名改了现在还好好的

2 个赞

其实大厂主流的方法是部署VPN/堡垒机到VPC……但是对于个人来说太贵了

1 个赞

佬,其实你可以把默认的账户给禁用了,创建一个自己比较习惯的用户名,附个管理员权限,只要不是常见用户名,基本上爆破不进来

1 个赞

个人还是觉得fail2ban的处理更好。win可以用wail2ban

1 个赞

如果认为自己的密码足够强,直接进 gpedit.msc → Computer Configuration → Windows Settings → Security Settings → Account Policies → Account Lockout Policy → Account lockout threshold 改为 0 然后 Apply policies 就好了,这样做被扫一亿次账户也不会被 Windows 锁定,但是 Remote Desktop Services 可能会假死。

直接网络安全组里配置进站出站ip不可以吗

1 个赞

自建vpn 堡垒机啊,也就一台服务器费用

一般都避免用3389端口,要不就是关了远程桌面。

好办法,想过。