J'ai un problème et je n'ai pas pu comprendre comment le gérer. J'ai un serveur SQL sur un serveur Windows 2008 R2. Ce SQL Server 2005 est utilisé pour recevoir des abonnements à des bases de données d'un autre SQL Server situé ailleurs sur Internet. J'ai le port du serveur SQL ouvert via le pare-feu, mais dans la portée, j'ai entré l'IP de l'autre SQL Server. Ce faisant, j'espérais que les demandes de connexion via ce port n'atteindraient pas SQL Server à moins que les demandes proviennent de l'autre SQL Server (dont l'IP est répertoriée dans la portée de la règle de pare-feu). Mais, quand je vois le journal, il y a des centaines d'entrées "login failed user sa" (et elles arrivent chaque seconde qui passe). Il semble qu'un pirate essaie par force brute de deviner le mot de passe de l'utilisateur. Mais la question est, pourquoi Windows laisse ces requêtes atteindre le serveur SQL même si elles ne proviennent pas de l'adresse IP répertoriée dans la portée du pare-feu? Quelle est la bonne façon de protéger ce SQL Server. Aucune autre IP que l'IP de l'autre SQL Server n'a besoin de se connecter à ce serveur SQL.
EDIT - Plus d'informations:
J'ai exécuté telnet sur le port du serveur SQL à partir de différentes machines. Telnet échoue sauf lorsqu'il est exécuté à partir de la machine spécifiquement mentionnée dans la portée du pare-feu. Il semble donc que le pare-feu bloque correctement le port du serveur SQL. Mais alors pourquoi je vois ces demandes de connexion échouées à l'utilisateur "sa" de différentes adresses IP dans le journal SQL Server? Est-il possible que le pirate pénètre dans la machine via le port 80 et essaie en quelque sorte de se connecter au serveur SQL? Les ports 80 et 443 sont ouverts à tous. Tous les autres ports sont fermés à l'exception du port du serveur SQL (et qui n'est ouvert que pour une adresse IP spécifique). Il n'y a rien en cours d'exécution sur le serveur Web au port 80 qui peut conduire un visiteur vers le serveur SQL. En fait, il n'y a qu'un seul fichier index.html (HTML pur sans connexion SQL) sur le serveur Web. Il s'agit simplement d'un serveur de test en cours de configuration pour une utilisation future. Tester uniquement les données dans SQL Server.
ÉDITER:
J'ai activé le suivi du pare-feu pour inclure à la fois les connexions d'abandon et de réussite. Il retrace désormais tout. Ensuite, je vais dans le journal SQL Server où je vois ces tentatives de connexion échouées à partir de différentes adresses IP en Chine. Mais il n'y a aucune entrée pour ces adresses IP dans le journal du pare-feu. Comment est-ce possible? Peuvent-ils accéder au serveur SQL en contournant complètement le pare-feu? Si vous supposez qu'un port de pare-feu était ouvert par lequel ils pouvaient entrer, le journal du pare-feu devrait afficher une entrée pour cette adresse IP. Je suis complètement perdu.
la source
Réponses:
On dirait que votre pare-feu n'est pas configuré correctement. C'est le premier pas.
Normalement, je ne soutirerais pas un livre que j'ai écrit, mais dans ce cas, je ferai une exception. Cela s'appelle Sécuriser SQL Server et cela vous donnera un bon départ.
la source
Simplement dit - vous ne le faites pas. Je n'utiliserais pas de pare-feu, etc. - un serveur SQL n'a pas le droit d'être sur Internet. TRÈS TRÈS peu d'exceptions.
Pour la réplication, configurez un VPN approprié.
la source
Outre la configuration correcte du pare-feu, voici quelques recommandations générales pour protéger SQL Server des attaques par force brute:
Désactivez le compte «sa». La connaissance du nom de connexion exact facilitera les attaques
Une autre option consiste à renommer le compte «sa» en un nom moins évident
Plus de recommandations utiles ici: Prévenir une force brutale ou une attaque par dictionnaire: Comment éloigner les brutes de votre butin
la source