1086 字
5 分钟
配置失败登录尝试限制
为了增强Windows远程桌面通过FRP和Nginx配置的安全性,限制失败登录尝试是非常重要的一环。我将介绍多个层面上的失败登录限制配置方法。
1. Nginx层面的失败登录限制
使用Nginx限流模块
在Nginx配置中添加限流规则,可以有效防止暴力破解尝试:
# 在nginx.conf的http部分添加http { # 定义限制区域 limit_req_zone $binary_remote_addr zone=rdp_login:10m rate=5r/m;
# 其他配置...}
# 在rdp.conf的server部分添加server { # ...其他配置
# 对RDP登录页面应用限流 location /rdp/ { limit_req zone=rdp_login burst=10 nodelay; # 其他proxy_pass配置... }}使用fail2ban监控Nginx日志
安装并配置fail2ban来监控Nginx日志并自动封禁可疑IP:
- 安装fail2ban:
apt install fail2ban -y- 创建自定义过滤器,例如
/etc/fail2ban/filter.d/nginx-rdp.conf:
[Definition]failregex = ^<HOST> - .* "POST /rdp/api/tokens HTTP/1\.1" 401ignoreregex =- 在fail2ban配置中添加监控规则,修改
/etc/fail2ban/jail.local:
[nginx-rdp]enabled = trueport = http,httpsfilter = nginx-rdplogpath = /var/log/nginx/access.logmaxretry = 5bantime = 3600 # 封禁1小时findtime = 300 # 5分钟内- 重启fail2ban:
systemctl restart fail2ban2. Windows RDP层面的失败登录限制
账户锁定策略
在Windows系统上配置账户锁定策略:
- 打开本地安全策略(secpol.msc)
- 转到”账户策略” > “账户锁定策略”
- 配置以下选项:
- 账户锁定阈值:5次(尝试失败5次后锁定账户)
- 账户锁定时间:30分钟
- 重置账户锁定计数器:30分钟
# 或者通过PowerShell设置(管理员权限)net accounts /lockoutthreshold:5net accounts /lockoutduration:30net accounts /lockoutwindow:30使用Windows高级防火墙
配置Windows高级防火墙来限制连接尝试:
- 打开Windows高级防火墙(wf.msc)
- 创建新的入站规则
- 选择”自定义规则” > “所有程序”
- 协议类型选择TCP,本地端口为3389
- 在”范围”选项卡中,添加允许连接的IP地址范围
- 在”操作”选项卡中,选择”允许连接”
3. 使用RDP Wrapper配置额外的安全设置
如果您使用RDP Wrapper,可以启用其内置的安全选项:
- 打开RDP Wrapper配置
- 启用”Disable Multimon”(禁用多显示器)
- 启用”Network Level Authentication”(网络级别身份验证)
- 通过编辑
rdpwrap.ini文件添加IP过滤规则
4. 服务器层面的安全措施
安装和配置DenyHosts或Fail2ban
# 安装Fail2ban(如果还没安装)apt install fail2ban -y
# 配置RDP保护,编辑/etc/fail2ban/jail.local[rdp]enabled = trueport = 3389filter = rdplogpath = /var/log/auth.logmaxretry = 3bantime = 86400 # 24小时使用iptables设置连接限制
# 限制每分钟最多接受5个新连接iptables -A INPUT -p tcp --dport 3389 -m state --state NEW -m limit --limit 5/minute --limit-burst 5 -j ACCEPTiptables -A INPUT -p tcp --dport 3389 -m state --state NEW -j DROP
# 限制每个IP最大同时连接数iptables -A INPUT -p tcp --dport 3389 -m connlimit --connlimit-above 3 -j REJECT5. FRP层面的限制
修改frps.toml配置来添加连接限制:
# 添加到frps.tomlmaxPortsPerClient = 5authentication.method = "token"webServer.authMethod = "password"
# 添加黑白名单allowPorts = [3389, 7001, 7002, 7500, 80, 443]
# 限制连接transport.maxPoolCount = 5transport.maxPoolSize = 1006. 实施多因素认证(MFA)
配置Windows Hello或智能卡认证
- 通过组策略启用智能卡认证需求
- 配置本地安全策略,要求网络级别身份验证
使用第三方MFA解决方案
考虑安装和配置以下解决方案:
- DUO Security的Windows RDP插件
- Microsoft的Azure MFA服务
- WiKID强认证系统
7. 监控和审计
配置Windows事件日志监控
# 启用详细的RDP登录日志wevtutil sl "Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational" /e:true
# 配置事件转发以集中日志wecutil qc /q设置登录通知
创建登录通知脚本,在检测到失败登录尝试时发送电子邮件或其他通知:
# 创建监控脚本$query = '*[System[(EventID=4625)]]' # 失败登录事件ID$subscription = Register-WmiEvent -Query $query -SourceIdentifier "LoginFailureAlert" -Action { # 发送电子邮件或其他通知 Send-MailMessage -From "alert@yourdomain.com" -To "admin@yourdomain.com" -Subject "RDP Login Failure" -Body "Failed login attempt detected"}通过以上多层防护措施的组合实施,可以有效限制失败登录尝试并大大提高远程桌面环境的安全性。这种深度防御策略能够在不同层面拦截和记录可疑活动,保护您的Windows远程桌面免受未授权访问的风险。
最后更新于 2025-06-08,距今已过 188 天
部分内容可能已过时