Wie stoppe ich Brute-Force-Angriffe auf Terminal Server (Win2008R2)?

23

Ich kenne mich eher mit Linux-Tools aus, um Brute-Force-Angriffe zu stoppen. Daher habe ich Probleme, geeignete Tools für Windows zu finden. Ich verwende einen Windows Server 2008 R2 mit Terminal Server und möchte nach wiederholten Anmeldeversuchen über RDP eine IP-Adresse blockieren. Irgendwelche Hinweise?

onik
quelle
3
Müssen Sie das wirklich auf Ihrem Windows-Server erledigen? Haben Sie darüber nachgedacht, die Geschwindigkeit auf Ihrem Edge-Gerät (Firewall / Router) zu begrenzen?
Zoredache
2
Die Windows-Box ist ein VPS, das von einem Hosting-Unternehmen ausgeführt wird, sodass ich keinen Zugriff auf die Netzwerkgeräte habe.
Onik
Sie können ein Task Schedule-Ereignis für fehlgeschlagene Anmeldungen einrichten, um ein PS-Skript auszulösen. Das PS-Skript müsste zählen, wie oft eine IP versucht wurde, und sie dann mit einer Firewall-Regel blockieren. Ich habe kein solches Skript, aber es wäre möglich, es zu erstellen.
Chris S
@Chris S: Das ist mehr oder weniger das, was mein ts_block-Skript macht, außer dass es als Ereignisprotokoll "sink" ausgeführt wird und jedes Mal einen Rückruf erhält, wenn neue Ereignisse protokolliert werden. Als solches läuft es mehr oder weniger in Echtzeit.
Evan Anderson
Verwenden Sie VPN - installieren Sie zB. OpenVPN auf dem Router. Stellen Sie Windows Box niemals direkt ins Internet - es ist gefährlich.
IntegratorIT

Antworten:

5

um rdp-login-versuche zu stoppen, benötigen sie, wie bereits erwähnt, die kontrolle ihrer firewall, um eine bestimmte ip zu isolieren. Sie können einige Einstellungen in den Verwaltungstools -> Terminaldienstemanager vornehmen, aber nichts tun, um eine IP auf diese Weise zu stoppen. Möglicherweise müssen Sie ein Stapelskript in Betracht ziehen, um die Fehler des RDP-Ports zu überwachen und die Anmeldung zu kontrollieren. Wenn also mehrere Versuche (Sie wählen die Nummer ...) mit derselben IP-Adresse durchgeführt würden, könnte dies für einen bekannten Zeitraum kein anderer Versuch sein Sein. Ich bin nicht sicher, ob es möglich ist, aber es könnte ein Weg sein ...

Nicola Boccardi
quelle
1
Ok, so wie ich es mir vorgestellt habe. Ich muss die Ereignisanzeige studieren, um zu sehen, ob ich die IP-Adressen in eine Datei für die Stapelverarbeitung exportieren kann. Zur Zeit müssen sie von manuell generierten .csv-Dumps
onik
5
Ändern Sie den Port, auf den RDP reagiert.
JohnThePro
Das Lustige ist, dass ich IPs einschränken möchte, aber der Anmeldefehler meldet nicht die IP-Adresse
Csaba Toth
Das Ändern des Ports ist nur unübersichtlich. Sie finden den neuen Port mit intelligenter Port-Scan-Software.
TheLegendaryCopyCoder
@CsabaToth Das Ereignisprotokoll zeichnet standardmäßig keine nützlichen Informationen auf. Sie können die ausführliche Protokollierung im Anmeldedienst von einem Domänencontroller oder Computer aus aktivieren, der die RDP-Anforderungen für einige zusätzliche Informationen empfängt. Sie können die Windows-Firewall-Protokollierung aktivieren, um die IP-Adresse zu ermitteln.
Michael Steele
25

Sie sollten diese Versuche an Ihrer Edge-Firewall wirklich blockieren, wenn auch nur mit Ratenbegrenzung. Wenn Sie dazu nicht in der Lage sind, lesen Sie weiter.

Wenn Sie die Edge-Firewall nicht blockieren können und RDP nur für eine Teilmenge des Internets öffnen müssen, können Sie eingehende Verbindungen mithilfe der integrierten Windows-Firewall-Funktionen sperren.

Wenn Sie RDP wirklich für das gesamte Internet geöffnet haben müssen, schauen Sie sich möglicherweise die modifizierte Version meines SSH-Programms für den Brute-Force-Blocker für Windows an , die sich in einem Github-Repository befindet . Dieses Skript, ts_block, blockiert Anmeldeversuche für Terminaldienste unter Windows Server 2003, 2008 und 2008 R2. Leider wird dieses Skript aufgrund von Änderungen an den von Windows protokollierten Ereignissen bei Verwendung der TLS / SSL-Sicherheitsschicht für RDP zunehmend ineffektiv . (Warum Microsoft die IP-Adresse des Hosts weggelassen hat, der versucht, sich zu authentifizieren, ist mir ein Rätsel. Scheint, als wäre das eine ziemlich wichtige Sache, die protokolliert werden muss, nicht wahr?)

Evan Anderson
quelle
1
Ich benutze ts_block Seite hier und es ist erstaunlich! Mein Windows-Server (2008 R2) hat sich unter zahlreichen Brute-Force-Angriffen verlangsamt, aber nicht mehr! TS_BLOCK Ist in vbscript geschrieben und kann / sollte als Windows-Dienst installiert werden. Verwenden Sie jedoch nicht die MSI-Version. Bearbeiten Sie einfach den .vbs-Code und installieren Sie sich mit dem Dienstprogramm nssm util. Sie brauchen die Registrierungseinträge nicht, da der .vbs-Code die Standardeinstellungen fest codiert hat. <P> Ich habe den Code bearbeitet und er blockiert JEDE fehlgeschlagene Anmeldung sofort - da ich mein eigener Webserver bin, sollte es KEINE fehlgeschlagenen Anmeldeversuche geben. Also das Drehbuch
Das ist ziemlich süß, Evan. Ich habe die halbe Lust, es in C # erneut zu implementieren, damit Sie es als systemeigenen Windows-Dienst ausführen können, anstatt mit srvany und dergleichen herumzuhacken. Wenn ich das jemals tue, werfe ich es auch auf Github oder so.
Ryan Bolger
1
@ RyanBolger: Ich habe eine Schwäche für VBScript und interpretierte Sprachen im Allgemeinen. Ich stelle fest, dass die Verwendung von "Non-Sucking Service Manager" das Ausführen von VBScript-Programmen als Dienste ziemlich schmerzlos macht.
Evan Anderson
ts_block ist erstaunlich, genau das, wonach ich gesucht habe. "Vielen Dank, Evan Anderson" Als ich meinen ersten virtuellen Terminal-Server innerhalb eines Tages live im Internet stellte, hatte ich über 10.000 fehlgeschlagene Anmeldungen. Wenn ich Zeit habe, kann ich es ändern und dauerhafte Blockierungen basierend auf der Anzahl der vorherigen Blöcke hinzufügen. zB: IP wird 4 mal an einem Tag gebannt. (Es sei denn, es wurde bereits erstellt)
Basierend auf dem ts_blockSkript hier ist eine Lösung, die fail2banauf dem Gateway verwendet wird, um Angreifer zu blockieren: wqweto.wordpress.com/2013/12/10/…
wqw
3

Ich habe ein C # -Programm, das genau das tut. Ich hatte ein Problem mit Server 2008 R2, bei dem im Ereignisprotokoll nicht immer die IP-Adressen des Benutzers aufgeführt waren (wenn eine Verbindung über die neueren Remotedesktopclients hergestellt wurde). Einige Dienste implementieren einen eigenen Anbieter für die Prüfung von Anmeldeinformationen, der nicht alle gewünschten Informationen bereitstellt.

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

Bei Remotedesktop stellte ich jedoch fest, dass beim Aufrufen der Option "Konfiguration des Remotedesktop-Sitzungshosts" und Ändern der RDP-TCP-Verbindung die Sicherheitsebene "RDP-Sicherheitsebene" anstelle von "Aushandeln" oder "SSL (TLS 1.0)" wiederhergestellt wurde IP-Adressen.

Ob Sie dies wirklich tun möchten, ist eine andere Frage für Sie: "Wenn Sie RDP Security Layer auswählen, können Sie die Authentifizierung auf Netzwerkebene nicht verwenden."

Ich habe http://www.windowsecurity.com/articles/logon-types.html gefunden hilfreich. Ich habe EventLogWatcher verwendet und an "* [System / EventID = 4625 oder System / EventID = 4624]" gebunden, damit ich bei Erfolg eine schlechte Zählung zurücksetzen kann, wenn der Benutzer wirklich nur sein falsches Passwort hat. Außerdem habe ich :: 1, 0.0.0.0, 127.0.0.1 und "-" auf die Whitelist gesetzt. Möglicherweise möchten Sie LAN- / Management-IPs auf eine Whitelist setzen oder nicht.

Ich verwende Forefront TMG, also habe ich die API verwendet, um einer Gruppe von IP-Adressen auf diese Weise ungültige IP-Adressen hinzuzufügen, und ich habe Cisco gebeten, einem ihrer SMB-Router API-Zugriff hinzuzufügen (was sie mir zugesichert haben, dass sie dies einfach tun könnten!).

Wenn Sie die native Windows-Firewall verwenden möchten, um sie zu blockieren, sehen Sie sich die API dafür an ("netsh advfirewall").

Ich erlaube x Versuche, bevor ich verbiete und ein Erfolg setzt die Zählung zurück.

Matthew1471
quelle
2

Versuchen Sie, Einbrüche oder überfüllte Protokolle zu verhindern? Wenn Sie versuchen, Einbrüche zu verhindern, verfügt Windows über eine integrierte Methode zum Blockieren von Anmeldeversuchen. In der Computerkonfiguration -> Richtlinien -> Windows-Einstellungen -> Sicherheitseinstellungen -> gibt es eine Gruppenrichtlinieneinstellung für den Kontosperrungsschwellenwert Kontorichtlinie -> Kontosperrungsrichtlinie.

Angreifer verwenden gebräuchliche Benutzernamen wie Administrator und sperren diese mit Sicherheit aus. Sie benötigen ein separates Konto für die eigentliche Administration, was wahrscheinlich trotzdem ratsam ist.

Das automatische Blockieren auf Firewall-Ebene erfordert das Lesen von Skriptprotokollen mit automatischer Aktualisierung der Firewall-Regeln. Auf diese Weise sollten Sie Regeln basierend auf der IP-Adresse hinzufügen können. Dies ist im Grunde das, was iptables in einem Linux-System macht.

Es mag ein bisschen offensichtlich sein, aber haben Sie auch darüber nachgedacht, Remotedesktopdienste auf einem nicht standardmäßigen Port auszuführen ? Dies war für mich sehr effektiv, um Einbrüche zu verhindern.

Joel E Salas
quelle
Das Blockieren wiederholter Verbindungsversuche an der Firewall ist eine gute Praxis, aber die Annahme, dass keine Brute-Force-Angriffe "hinter der Firewall" stattfinden, ist keine sehr gute Annahme. Ein Host-basiertes Brute for Block ist meiner Meinung nach eine ziemlich gute Idee. Die Verwendung der Kontosperrung ist auf jeden Fall eine gute Idee, aber ich mag auch die Idee, die Brute-Force-Versuche zu unterdrücken, um die Protokolle auch sauberer zu halten.
Evan Anderson
1
Ich bin bereits auf einem Nicht-Standard-Port und meine größere Sorge ist, dass mein Server aufgrund der großen Anzahl von Anmeldeversuchen effektiv offline geschaltet wird.
Boomhauer
Eine Möglichkeit besteht darin, den Zugriff auf Remotedesktop über die Firewall vollständig zu deaktivieren. Auf dem Server wird jedoch ein Dienst ausgeführt, der die Firewall so konfiguriert, dass RDP-Datenverkehr zugelassen wird. Dieser Dienst ist kennwortgeschützt und ermöglicht möglicherweise nur den Zugriff von einer "vertrauenswürdigen" IP-Quelle ( IP-Bereich eines Mobiltelefons oder Ihres Büros). Es bringt Ärger mit sich, funktioniert aber.
Dai
1

Es gibt auch einige andere Lösungen, wenn Sie stattdessen eine GUI-basierte Lösung verwenden und unterschiedliche Regelsätze für verschiedene Ereignisse erstellen möchten. Am einfachsten wäre RDPGuard (hxxp: //www.rdpguard.com), aber in einer Unternehmensumgebung möchten Sie wahrscheinlich mehr Berichte, z. B. von wo der Angriff kam (Land, Herkunft) und welchen Benutzernamen Sie verwendet haben, damit Sie schnell zugreifen können Entscheiden Sie, ob einer Ihrer eigenen Benutzer sich versehentlich selbst blockiert oder versucht, sich dort anzumelden, wo Sie wissen, dass dies nicht der Fall ist.

Persönlich mag ich Syspeace (hxxp: //www.syspeace.com), das all diese Dinge für uns erledigt, aber ich dachte, ich würde sie trotzdem beide erwähnen

Juha Jurvanen
quelle