如何停止对终端服务器(Win2008R2)的暴力攻击?


23

我更熟悉用于阻止暴力攻击的Linux工具,因此我很难找到适用于Windows的工具。我正在运行带有终端服务器的Windows Server 2008 R2,并且在反复尝试通过RDP登录后,我想阻止IP。有什么提示吗?


3
您真的需要在Windows服务器上处理此问题吗?您是否考虑过对边缘设备(防火墙/路由器)进行速率限制?
Zoredache

2
Windows盒是由托管公司运行的VPS,因此我无法访问网络设备。
onik 2011年

您可以在登录失败时设置任务计划事件,以触发PS脚本。PS Svript必须计算IP尝试的次数,然后使用防火墙规则将其阻止。我没有这样的脚本,但是可以创建。
克里斯·S

@Chris S:这与我的ts_block脚本差不多,除了它作为事件日志“接收器”运行并在每次记录新事件时接收到回调。这样,它或多或少地实时运行。
埃文·安德森

使用VPN-安装例如 路由器上的OpenVPN。切勿将Windows Box直接放置到互联网上-这很危险。
integratorIT

Answers:


5

如前所述,要停止rdp登录尝试,您需要控制防火墙以隔离特定的IP。您可以在管理工具->终端服务管理器中进行一些设置,但是无法以这种方式停止一个IP。也许您必须考虑使用批处理脚本来侦听rdp端口并控制登录失败,因此,如果同一IP尝试进行多次尝试(您选择数字...),那么在已知的时间跨度内无法进行其他尝试是。我不确定是否可以,但是可能是...


1
好的,就是我想的那样。我必须研究事件查看器,以查看是否可以将IP地址导出到文件以进行批处理。暂且必须从手动生成的.csv转储的grep他们
onik

5
更改端口RDP响应。
JohnThePro 2012年

有趣的是,我要限制IP地址,但登录失败不报告的IP地址
乔鲍·托特

只能更改端口。他们将使用智能端口扫描软件找到新端口。
TheLegendaryCopyCoder

@CsabaToth默认情况下,事件日志不记录有用的信息。您可以从接收到RDP请求的某些其他信息的域控制器或计算机上,在netlogon服务中启用详细日志记录。您可以启用Windows防火墙日志记录来确定IP地址。
Michael Steele

25

如果仅使用速率限制,则实际上应该在边缘防火墙处阻止这些尝试。如果您没有能力继续阅读。

如果您不能在边缘防火墙处阻塞并且只需要对一部分Internet开放RDP,请使用内置的Windows防火墙功能来锁定传入的连接。

最后,如果你真的必须有RDP开放给整个Intenet的,你可能有一个看的修改版本我的SSH蛮力拦截程序适用于Windows,我在一个GitHub的仓库。此脚本ts_block阻止Windows Server 2003、2008和2008 R2上的蛮力终端服务登录尝试。不幸的是,由于将TLS / SSL安全层用于RDP时Windows记录的事件发生了变化,因此该脚本变得越来越无效。(为什么Microsoft选择忽略尝试进行身份验证的主机的IP地址超出了我的范围。看起来这样登录非常重要,是吗?)


1
在这里使用ts_block 页面,这太神奇了!我的Windows Server(2008 R2)曾经在无数次蛮力攻击下变慢了,但现在不再了!TS_BLOCK用vbscript编写-可以/应该作为Windows服务安装-但不要使用MSI版本,只需编辑.vbs代码并使用nssm util进行安装。您不需要注册表项,因为.vbs代码具有默认的硬编码。<p>我已经编辑了代码,它立即阻止了所有失败的登录-作为我自己的Web服务器,应该没有失败的登录尝试。因此脚本

埃文,这真是太好了。我有半个心思在C#中重新实现它,因此您可以将其作为本机Windows服务运行,而不是使用srvany之类的东西。如果有的话,我会把它扔到Github上。
Ryan Bolger

1
@RyanBolger:我对VBScript和一般解释型语言情有独钟。我发现使用“不吸吮服务管理器”使运行VBScript程序作为服务的体验相当轻松。
埃文·安德森

ts_block令人惊讶,这正是我在寻找的“谢谢Evan Anderson”。当我在一天之内将第一台Terminal虚拟服务器直接投入网络使用时,我有10,000多次失败的登录。有空时,我可能会修改它并根据以前的块数添加永久性块。例如:IP在一天之内被禁止4次。(除非它已经创建)

基于ts_block脚本这里是一个解决方案,它fail2ban在网关阻止攻击者:wqweto.wordpress.com/2013/12/10/...
wqw

3

我有一个C#程序可以做到这一点。我在Server 2008 R2上遇到了一个问题,即事件日志并不总是列出用户的IP地址(如果他们是从较新的远程桌面客户端连接的)。某些服务实现了自己的凭据检查提供程序,该提供程序没有提供您想要的所有信息。

http://cyberarms.net/security-insights/security-lab/remote-desktop-logging-of-ip-address-%28security-event-log-4625%29.aspx

但是,对于远程桌面,我发现进入“远程桌面会话主机配置”并更改RDP-TCP连接以使安全层为“ RDP安全层”,而不是“协商”或“ SSL(TLS 1.0)”, IP地址。

是否真的要执行此操作是另一个问题,“如果选择RDP安全层,则不能使用网络级身份验证。”

我发现http://www.windowsecurity.com/articles/logon-types.html会有所帮助。我使用了EventLogWatcher并将其绑定到“ * [System / EventID = 4625或System / EventID = 4624]”,因此,如果用户确实只是输入了错误的密码,那么我可以为成功重置一个错误的计数。我也将::: 1、0.0.0.0、127.0.0.1和“-”列入了白名单。您可能希望也可能不希望将LAN /管理IP列入白名单。

我使用Forefront TMG,所以我使用API​​那样向一组IP中添加了错误的IP地址,并且我已经要求思科为他们的一个SMB路由器添加API访问权限(他们向我保证了,他们可能会这样做!)

如果要使用本机Windows防火墙阻止它们,请查看该API(“ netsh advfirewall”)。

在禁止之前,我允许尝试x次,成功将重置计数。


2

您是否要防止入侵或日志混乱?如果您尝试防止入侵,Windows提供了一种内置方法来阻止尝试登录。计算机配置->策略-> Windows设置->安全设置->中有一个帐户锁定阈值组策略设置。帐户策略->帐户锁定策略。

攻击者将使用常见的用户名,如Administrator,他们肯定会将这些用户名锁定。您需要一个单独的帐户来进行实际管理,无论如何建议这样做。

在防火墙级别自动阻止将需要一些脚本化日志读取,并自动更新防火墙规则。您应该可以通过这种方式基于IP地址添加规则。基本上,这是iptables在Linux系统中所做的。

可能有点明显,但是您是否还考虑过在非标准端口上运行远程桌面服务?这对于我阻止闯入非常有效。


在防火墙处阻止重复的连接尝试是一种很好的做法,但是假设暴力攻击不会在“防火墙之后”发生并不是一个很好的假设。在我看来,基于主机的暴力破解是一个相当不错的主意。使用帐户锁定绝对是个好主意,但我也喜欢抑制蛮力尝试以保持日志整洁的想法。
埃文·安德森

1
我已经在nonstd端口上运行,并且我更担心的是实际上由于大量的登录尝试,我的服务器实际上已脱机。
boomhauer 2012年

一种选择是完全禁用通过防火墙对远程桌面的访问,但是在服务器上运行的服务会重新配置防火墙以允许RDP通信通过,该服务受密码保护,并且可能仅允许从“受信任” IP源进行访问(例如手机的IP范围或您的办公室)。它带来了麻烦,但是有效。

1

如果您要使用基于GUI的解决方案,并针对不同的事件创建不同的规则集,那么还有其他一些解决方案。最简单的一个是RDPGuard(hxxp://www.rdpguard.com),但是在公司环境中,您可能需要更多报告,例如攻击的来源(国家/地区,来源)以及使用的用户名,以便您快速判断这是您自己的用户之一,还是无意中阻止了自己或尝试从您不知道的地方登录。

我个人比较喜欢Syspeace(hxxp://www.syspeace.com),它可以为我们完成所有这些工作,但我认为无论如何我都会提到它们



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.