So schützen Sie SQL Server vor Hackern

9

Ich habe ein Problem und konnte nicht herausfinden, wie ich damit umgehen soll. Ich habe einen SQL Server auf einem Windows 2008 R2-Server. Dieser SQL Server 2005 wird verwendet, um DB-Abonnements von einem anderen SQL Server zu empfangen, der sich an einer anderen Stelle im Internet befindet. Ich habe den SQL Server-Port über die Firewall geöffnet, habe jedoch im Bereich die IP des anderen SQL Servers eingegeben. Dabei hoffte ich, dass Verbindungsanforderungen über diesen Port den SQL Server nur erreichen, wenn die Anforderungen vom anderen SQL Server stammen (dessen IP im Bereich der Firewall-Regel aufgeführt ist). Aber wenn ich das Protokoll sehe, gibt es Hunderte von Einträgen "Login fehlgeschlagener Benutzer sa" (und sie kommen jede Sekunde). Es scheint, dass ein Hacker Brute Force versucht, das Passwort eines Benutzers zu erraten. Aber die Frage ist: Warum lässt Windows diese Anforderung den SQL Server erreichen, obwohl sie nicht von der IP-Adresse stammen, die im Firewall-Bereich aufgeführt ist? Was ist der richtige Weg, um diesen SQL Server zu schützen? Keine andere IP als die IP des anderen SQL Servers muss eine Verbindung zu diesem SQL Server herstellen.

EDIT - Weitere Infos:

Ich habe Telnet auf dem SQL Server-Port von verschiedenen Computern aus ausgeführt. Telnet schlägt fehl, es sei denn, es wird von dem Computer ausgeführt, der im Firewall-Bereich ausdrücklich erwähnt wird. Es scheint also, dass die Firewall den SQL Server-Port blockiert. Aber warum werden dann diese fehlgeschlagenen Anmeldeanforderungen an den Benutzer "sa" von verschiedenen IP-Adressen im SQL Server-Protokoll angezeigt? Ist es möglich, dass der Hacker über Port 80 in den Computer eindringt und dann irgendwie versucht, eine Verbindung zum SQL Server herzustellen? Port 80 und 443 stehen allen offen. Alle anderen Ports mit Ausnahme des SQL Server-Ports sind geschlossen (und dieser ist nur für eine bestimmte IP geöffnet). Auf dem Webserver an Port 80 wird nichts ausgeführt, was einen Besucher zum SQL Server führen könnte. Tatsächlich gibt es auf dem Webserver nur eine index.html-Datei (reines HTML ohne Verbindung zu SQL). Dies ist nur ein Testserver, der für die zukünftige Verwendung eingerichtet wird. Testen Sie nur Daten in SQL Server.

BEARBEITEN:

Ich habe die Firewall-Ablaufverfolgung aktiviert, um sowohl Drop- als auch Erfolgsverbindungen einzuschließen. Es verfolgt jetzt alles. Dann gehe ich zum SQL Server-Protokoll, wo ich diese fehlgeschlagenen Anmeldeversuche von verschiedenen IP-Adressen in China sehe. Es gibt jedoch keine Einträge für diese IP-Adressen im Firewall-Protokoll. Wie ist das möglich? Können sie unter vollständiger Umgehung der Firewall zum SQL Server gelangen? Wenn angenommen wird, dass ein Firewall-Port geöffnet ist, über den sie eintreten können, sollte im Firewall-Protokoll ein Eintrag für diese IP-Adresse angezeigt werden. Ich bin völlig ratlos.

Allen King
quelle
Wie wäre es mit Logon Trigger ? Außerdem sollte SQL Server nicht dem Internet ausgesetzt sein (öffentlich zugänglich). Sie können auch Programmregeln in der Windows-Firewall verwenden, um den Bereich der IP-Adressen zu begrenzen.
Kin Shah
Ja, ich könnte, aber im Grunde geht es hier nicht wirklich um SQL Server. Ich versuche herauszufinden, warum die Windows-Firewall nicht das tut, was sie tun soll, dh diese Anforderungen nicht durchzulassen, da sie nicht von der einzig zulässigen IP-Adresse stammen.
1
Ja, es klingt so, als ob Ihre Windows-Firewall falsch konfiguriert ist. Möglicherweise haben Sie eine andere allgemeinere Regel, die Port 1433 zulässt (oder alles zulässt), oder die Windows-Firewall ist auf der mit dem Internet verbundenen Netzwerkkarte deaktiviert. Es ist schwer zu sagen, ohne die Konfiguration zu sehen. Aber das ist wirklich eher eine Frage für ServerFault, wie Max sagt. Meinten Sie übrigens Windows 2008 R2? 'RC' ist Release Candidate, eine Pre-Release-Software zum Testen.
James L
1
Verwenden Sie wirklich ein altes Betriebssystem für Release-Kandidaten ?! Beheben Sie das zuerst.
Michael Hampton

Antworten:

12

Klingt so, als ob Ihre Firewall nicht richtig konfiguriert ist. Dies ist der erste Schritt.

Normalerweise würde ich ein Buch, das ich geschrieben habe, nicht pimpen, aber in diesem Fall mache ich eine Ausnahme. Es heißt Securing SQL Server und bietet Ihnen einen guten Start.

mrdenny
quelle
Nun, Ihr Buch passt genau zu dieser Frage :-)
mfinni
Cool! Verfügt es über Richtlinien zur Verwendung von Zertifikaten anstelle der lokalen / Windows-Authentifizierung für Server mit Internetverbindung? ;-)
Greg Askew
Siehe meine Änderungen. Die Firewall scheint in Ordnung zu sein. Es ist ein anderer Trick, den diese chinesischen Hacker spielen, um zum SQL Server zu gelangen.
Allen King
1
Wenn jemand von einer öffentlichen IP-Adresse aus eine Verbindung zum SQL-Port herstellt, ist die Firewall nicht richtig konfiguriert. Wenn sie von einer internen IP stammen, haben Sie ein anderes Problem. SQL selbst unterstützt keine Zertifikate. Sie müssen dies über AD- und Zertifikatzuordnungen tun.
Mrdenny
Zurück zur Zeichnung für die Firewall. Ich würde den SQL Server aus dem Internet ziehen, bis Sie Ihre Firewall-Situation gelöst haben. Auf diese Weise können Sie relativ einfach ganze IP-Adressbereiche per IP verbieten.
Techie Joe
4

Einfach gesagt - Sie nicht. Ich würde keine Afirewall usw. verwenden - ein SQL Server hat kein Recht, im Internet zu sein. Sehr sehr wenige Ausnahmen.

Richten Sie für die Replikation ein geeignetes VPN ein.

TomTom
quelle
Ich bin ein bisschen verwirrt. Wie erreicht ein Web App-Backend-Server den DB-Server, wenn sich der DB-Server nicht im Internet befindet?
Allen King
Über das interne Netzwerk. Grundeinstellung. Die Web-App befindet sich in beiden Netzwerken.
TomTom
3

Neben der ordnungsgemäßen Konfiguration der Firewall finden Sie hier einige allgemeine Empfehlungen, um SQL Server vor Brute-Force-Angriffen zu schützen:

  • Deaktivieren Sie das 'sa'-Konto. Wenn Sie den genauen Anmeldenamen kennen, werden Angriffe einfacher

    ALTER LOGIN sa DISABLE
    

Eine andere Möglichkeit besteht darin, das 'sa'-Konto in einen weniger offensichtlichen Namen umzubenennen

ALTER LOGIN sa WITH NAME = SimonXZY
  • Verwenden Sie die Windows-Authentifizierung anstelle der Authentifizierung im gemischten Modus. Die Windows-Authentifizierung erzwingt die Windows-Kennwortrichtlinie und sperrt die Anmeldung bei aufeinanderfolgenden fehlgeschlagenen Anmeldeversuchen
  • Audit fehlgeschlagene Anmeldungen. Der einfachste Weg, dies zu tun, besteht darin, die Option Anmeldeüberwachung in den Servereigenschaften, Registerkarte Sicherheit auf Nur fehlgeschlagene Anmeldungen oder Sowohl fehlgeschlagene als auch erfolgreiche Anmeldungen festzulegen. Dies hilft Ihnen nicht, sich vor Brute-Force-Angriffen zu schützen, sondern hilft Ihnen, sich der Angriffe bewusst zu werden

Weitere nützliche Empfehlungen hier: Verhindern eines Brute Force- oder Wörterbuchangriffs: So halten Sie die Brutes von Ihrer Beute fern

Milena Petrovic
quelle