IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Bloquer les IP qui essayent des mots de passe


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut Bloquer les IP qui essayent des mots de passe
    Bonjour

    Est il possible sous SQL Server de bloquer les IP qui essayent (3 fois par exemple) un mot de passe et se trompe.

    Vous aurez compris que j'ai des Ko de pages de log qui essayent de se connecter sur mon serveur.
    Pour l'instant ils n'y arrive pas, m'enfin on ne sais jamais.

    Je sais qu'il y a la solution de les bloquer au niveau du firewall, mais cela va m'obliger a lire les logs tous les jours pour extraire le paquets de hackers qui essaie, puis entrer a la main les ip dans le firewall.

    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Avec un trigger sur la connection (http://msdn.microsoft.com/en-us/library/bb326598.aspx), tu dois pouvoir tester l'adresse IP de la connection avec par exemple une table de blacklist.
    Sinon es tu obligé d'exposer ta base de données vers l'exterieur ?
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Merci de ta réponse, mais j'espérais plutot qu'il existe une fonction native dans sql serveur.

    Tans pis je vais essayer de la coder.

    Oui je suis obligé de l'exposer sur l'extérieur.

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    Une des solutions serait de ne pas laisser le serveur SQL accessible depuis internet.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    j'ai retrouvé ce lien dans mes archives: http://www.sqlservercentral.com/arti...ecurity/66151/. C'est un article de Brian Kelly, paru sur SQLserverCentral, dont le titre est "Blocking Users by IP"

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    sevyc64
    c'est gentil d'essayer de m'aider
    Comme je l'ai dit juste au dessus, je suis obligé de le laisser exposer sur l'extérieur.

    J'ai trouvé ce code sur le net mais il plante sur l'instruction select.

    11/27/2012 18:30:04,spid55,Inconnu,Erreur*: 229<c/> Gravité*: 14<c/> État*: 5.
    11/27/2012 18:30:04,spid55,Inconnu,L'autorisation SELECT a été refusée sur l'objet 'IPBLock'<c/> base de données 'master'<c/> schéma 'dbo'.
    Pour la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE master.dbo.IPBLock (ipaddress VARCHAR(15))
    Pour le trigger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATE TRIGGER block_ipaddress
    ON ALL SERVER
    FOR LOGON
    AS
    BEGIN
                DECLARE @capturedip NVARCHAR(15);
                SET @capturedip = (SELECT EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'NVARCHAR(15)'));
                IF EXISTS(SELECT ipaddress FROM master.dbo.IPBLock WHERE ipaddress = @capturedip)
                BEGIN
                            Print 'Your IP Address is blocked, Contact Administrator'
                            ROLLBACK
                END
                ELSE
                BEGIN
                            DECLARE @IPRange VARCHAR(15)
                            SELECT @IPRange= SUBSTRING(@capturedip,1,LEN(@capturedip)-CHARINDEX('.',REVERSE(@capturedip)))+'.*'
                            IF EXISTS(SELECT ipaddress FROM master.dbo.IPBLock WHERE ipaddress = @IPRange)
                            BEGIN
                                Print 'Your IP Address Range is blocked, Contact Administrator'
                                ROLLBACK
                            END
                END
    END
    GO
    Quelqu'un aurait il une idée d'ou provient l'erreur?
    En fait tout le monde est refusé maintenant, c'est plus sécuritaire, mais moins fonctionnel

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Merci de ton lien michelatoutfox

    c'est un peu basé sur le meme principe que le code que j'ai trouvé, sauf que lui met une table d'autorisation d'acces.

    Je ne peux pas faire ca, car je dois pouvoir me connecter a la base avec mon téléphone portable qui change d'Ip souvent

  8. #8
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonsoir,

    Je crois que tu ne prends pas le problème par le bon bout. Pour un hacker il est très facile de changer d'ip.

    Quelle est la surface d'attaque de ton serveur SQL ? Est-il visible depuis internet ? Est-ce que les connexions se font sur le port par défaut ? Est-ce que tu peux nous en dire plus sur ton environnement ?

    Vous aurez compris que j'ai des Ko de pages de log qui essayent de se connecter sur mon serveur.
    Pour l'instant ils n'y arrive pas, m'enfin on ne sais jamais.
    Si tu ne récupères que les tentatives en échec (par défaut) tu ne peux pas être certain qu'un intrus ne soit pas entré. En effet, si ce dernier a trouvé le mot de passe tu n'auras plus les événements liés aux tentatives de ce genre dans le journal SQL ...

    ++

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Merci mikedavem de te pencher sur mon soucis

    Quelle est la surface d'attaque de ton serveur SQL ?
    Qu'appelles tu la surface d'attaque?

    Est-il visible depuis internet ?
    Oui car j'ai besoin d'y acceder depuis l'extérieur avec un portable qui change d'ip a chaque connexion.

    Est-ce que les connexions se font sur le port par défaut ?
    Oui
    Changer le port ne va pas (a mon avis résoudre le probleme) car j'ai aussi un serveur NAS qui passe son temps a blacklister les ip qui essayent de se connecter (je blacklist sur 3 essais raté sur une duré de 15mn)

    Pour te donner une idée aujourd'hui j'ai un Hongrois qui a essayé pendant 1 heure a raison de 4 essai seconde de se connecter.
    Cela veut dire qu'il a mis un robot pour essayer une liste de mot de passe sur le compte "sa"

    Que veux tu savoir sur mon environnement?
    Pour l'instant 1 pc avec sql server
    Un Nas avec un web serveur qui contient les fichiers php qui font des actions sur sql serveur.

    A terme tout devrait etre sur le NAS sqlserver et le serveur web.

    Ce que j'aimerai faire

    Une table d' IP autorisé
    Une Table d'IP bloqué

    Dans un Trigger
    Si IP est dans la table IP bloqué alors acces interdit
    Si l'IP est dans la table Autorisé alors autant d'essai que l'on veut
    Si erreur de mot de passe alors ajout dans la table IP bloqué

    Toutes les IP variable (IP des portables) ne se trompe pas de mot de passe car il est en dur dans le prog

  10. #10
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Qu'appelles tu la surface d'attaque?
    En d'autres termes quels sont les points d'entrée de ton serveur ? Ouverture depuis internet ? Serveur derrière un firewall ou autre ou directement exposé ?

    Changer le port ne va pas (a mon avis résoudre le probleme) car j'ai aussi un serveur NAS qui passe son temps a blacklister les ip qui essayent de se connecter (je blacklist sur 3 essais raté sur une duré de 15mn)
    Tu as raison cela ne va pas éliminer des tentatives d'intrusion mais cela va te permettre d'en éliminer un certain nombre.

    Pour te donner une idée aujourd'hui j'ai un Hongrois qui a essayé pendant 1 heure a raison de 4 essai seconde de se connecter.
    Cela veut dire qu'il a mis un robot pour essayer une liste de mot de passe sur le compte "sa"
    Je pense qu'en changeant le port d'écoute tu pourrais minimiser les personnes utilisant des robots qui tentent la connexion sur le port 1433. Bien entendu il faudra tester et tirer les conclusions après analyse des logs à postériori.

    Toutes les IP variable (IP des portables) ne se trompe pas de mot de passe car il est en dur dans le prog
    Dans l'absolu pas forcément même si les chances que quelqu'un tente de regarder dans l'application les informations d'identification sont minces :-)

    Ce que j'aimerai faire

    Une table d' IP autorisé
    Une Table d'IP bloqué

    Dans un Trigger
    Si IP est dans la table IP bloqué alors acces interdit
    Si l'IP est dans la table Autorisé alors autant d'essai que l'on veut
    Si erreur de mot de passe alors ajout dans la table IP bloqué
    Pourquoi pas mais je pense que tu risques de te retrouver avec un certain nombre d'entrées dans ta table. Il faudra faire attention aux performances dans le temps. Les connexions risquent d'être le goulet d'étranglement de ton serveur.

    Je ne peux que te conseiller de passer sur des éléments de sécurité comme un VPN ou autre.

    ++

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    J'ai un firewall avant le serveur.

    Je pense qu'en changeant le port d'écoute tu pourrais minimiser les personnes utilisant des robots qui tentent la connexion sur le port 1433. Bien entendu il faudra tester et tirer les conclusions après analyse des logs à postériori.
    Oui et non, s'ils sniff les ports ouvert ils vont le trouver. D'un autre coté, je suis d'accord avec toi qu'ils ne savent pas ce qu'il y a derrière, donc, ca devrait limiter les attaques.

    Oui la table risque de grossir vite par contre si le mec se fait bloquer au deuxieme essai il ne va pas essayer 1 heure, s'il est pas trop c.. il va voir qu'il est blacklisté et va arreter (donc me libérer les connexions)
    Rien ne m’empêche de vider la table tous les mois s'il elle devient trop grosse.
    ce genre de hacker ne reviens pas le mois suivant s'il n'a pas réussi a entrer, d'autant qu'il n'aura qu'un seul essai de mot de pass avant de retourner dans la blackliste.


    Par contre peux tu me donner l'instruction qui permet de récuperer le résultat de la tentative de connexion.
    Parce que pour l'instant le script du trigger travaille en amont de la connexion, et il me faut alimenter la table IPbloqué sur un echec de connexion.

    Ca fait 2 heure que je cherche et je n'ai rien trouvé.

    Merci

  12. #12
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    Citation Envoyé par gilles_906 Voir le message
    par contre si le mec se fait bloquer au deuxieme essai il ne va pas essayer 1 heure, s'il est pas trop c.. il va voir qu'il est blacklisté et va arreter (donc me libérer les connexions)
    Rien ne m’empêche de vider la table tous les mois s'il elle devient trop grosse.
    ce genre de hacker ne reviens pas le mois suivant s'il n'a pas réussi a entrer, d'autant qu'il n'aura qu'un seul essai de mot de pass avant de retourner dans la blackliste.
    Là tu rêve.

    D'abords c'est pas un mec, mais une armée de robots logiciels, et ils n'abandonne pas comme ça.
    J'ai subit de telles attaques sur un serveur FTP dans une ancienne boite. Le(s) robot(s) changeai(en)t d'ip 3 fois par seconde, donc impossible à blacklister à la main, et de toute façon ça servait à rien puisqu'une ip blacklistée était immédiatement remplacée. Notre seule solution : Arrêter le serveur pendant quelques heures avant qu'il ne s'écroule tout seul.
    Mais même après 2 jours d’arrêt complet, il ne fallait généralement pas plus de 3h après la remise en ligne pour se reprendre des attaques.

    Faut pas croire que derrière tes attaques tu as un type qui tape chaque mot de passe. En réalité tu as une armé de pc zombies répartis dans le monde entier, infectés par de quelconques virus sous le contrôle d'un serveur central. C'est eux qui font les attaques automatiquement. Par contre si une attaque est fructueuse, là, oui tu as un type, ou un robot plus évolué qui reprend la main pour voir ce qu'il y a à l’intérieur.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Oui c'est vrai, d'ailleurs 4 tentatives par seconde, ca fait beaucoup pour un type derrière son pc
    Mais en regardant mes log ils essayent pendant 1 heure, puis c'est une autre ip un peu plus tard.
    J'ai bien envie d'essayer comme ca on verra a l'usage, ca leur fait un barrage de plus.

    Changer le port du serveur en fera aussi un autre.


    Pour l'instruction qui me retourne si la connexion a échouer (car mauvais mot de passe) tu l'as connais ou pas?

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Je crois que j'ai fais une grosse boulette et que je vais avoir besoin d'aide.

    Aprés nos discutions j'ai changé mon fusil d'épaule et j'ai décidé de n'autoriser que certaine ip.

    j'ai donc fais ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TRIGGER [block_ipaddress]
    ON ALL SERVER
    FOR LOGON
    AS
    BEGIN
                DECLARE @capturedip NVARCHAR(15);
                SET @capturedip = (SELECT EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'NVARCHAR(15)'));
    			IF NOT EXISTS(select ipadresse FROM master.dbo.IPOK WHERE ipadresse = @capturedip)
     
    			ROLLBACK
    END
    Avant j'ai mis mon ip dans la table master.dbo.IPOK

    Je crois que mon erreur est d'avoir oublié le begin et le end autour du rollback, parce que maintenant je ne peux plus me connecter a ma base.
    Quelqu'un peu me confirmer l'erreur?

    Quelqu'un aurait il une solution a mon probleme? autre que de réinstaller sql server et perdre la base.

    Pour info:
    l'utilisateur sa est désactivé

    Merci

    EDIT: c'est bon j'ai pu le droper avec sqlcmd

    EDIT2: pour info mon ip c'est <local machine> j'ai cherché un moment avant de la trouver

  15. #15
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Tu as une sauvegarde de la base ?
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Bonjour
    Oui mais c'est pas tant les données car pour l'instant je suis toujours entrain de programmer les script et elle n'est pas opérationnel.
    C'était plutot pour les procedures, fonctions, trigger et la structure de toutes les tables.
    Mais comme je l'ai dit dans EDIT au dessus tout est rentré dans l'ordre maintenant.

Discussions similaires

  1. Comment fonctionne l'enregistrement des mots de passe dans les navigateurs ?
    Par monstroplante dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 26/08/2011, 15h28
  2. [traduction] les sites qui utilisent des traducteurs automatiques
    Par straasha dans le forum La taverne du Club : Humour et divers
    Réponses: 8
    Dernier message: 25/08/2008, 14h08
  3. Réponses: 5
    Dernier message: 07/05/2007, 08h16
  4. supprimer les fichiers qui ont des mêmes noms
    Par manaboko dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2006, 09h09
  5. Les images qui ouvre des popup....
    Par Sagytarus dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/12/2004, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo