none
Suspeita de invasão. RRS feed

  • Pergunta

  • Bom dia, 

    Tenho um banco aberto para IP público (meus clientes não possuem ip fixo). No SQL PROFILER eu recebo a todo segundo os eventos Audit Login e Audit Logout. A porta não é a padrão. No log do eventvwr a situação abaixo a todo segundo. O servidor esta operando com lentidão.

    Perguntas: 

    Isso é um ataque de deny of service ou uma falha no servidor ou no sql server???

    Pensei em mudar a porta porém tenho uns 70 clientes que usam esse servidor. Tem como deixar o sql recebendo conexao de 2 portas. Ai depois que eu mudar a string de todos os clientes eu desativo a porta antiga?


    LOG EVENTVIEWER

    [Error] CredentialManagementOtherExceptionThrown: Login failed for user 'NT Service\SQLIaaSExtension'.

    Login failed for user 'NT Service\SQLIaaSExtension'. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]

    [Information] ServerConfigurationsManagementConnectionStatusErrored: Unable to connect to SQL Server

    


    Concatenado

    sexta-feira, 21 de julho de 2017 14:46

Respostas

  • Bom dia Thiago, Moura

    Trago uma outra possibilidade  , não sou especialista em segurança mas acredito que isso possa também te ajudar 

    esse script recupera as spids das conexões abertas 

    -- Funciona no SQL 2000 e versões superiores
    SELECT  A.spid ,
            SUBSTRING(A.nt_username, 1, 20) AS Nt_UserName ,
            A.blocked ,
            CASE WHEN A.blocked = 0
                      AND ( ISNULL(C.Qt_Block_By, 0) > 0 ) THEN 'Blocker'
                 WHEN A.blocked = 0
                      AND ( ISNULL(C.Qt_Block_By, 0) <= 0 ) THEN 'None'
                 WHEN A.blocked = A.spid THEN 'Itself'
                 ELSE 'Blk by other'
            END Type_block ,
            A.waittime / 1000 [WaitTime(s)] ,
            D.name DataBaseName ,
            SUBSTRING(A.program_name, 1, 20) AS Programa ,
            Qt_Blocked = ISNULL(B.Qt_Blocked, 0) ,
            Qt_Block_By = ISNULL(C.Qt_Block_By, 0)
    FROM    sys.sysprocesses A
            JOIN sys.sysdatabases D ON A.dbid = D.dbid
            LEFT JOIN ( SELECT  spid ,
                                COUNT(*) Qt_Blocked
                        FROM    sys.sysprocesses
                        WHERE   ( blocked <> 0 )
                                AND ( blocked <> spid )
                        GROUP BY spid
                      ) B ON A.spid = B.spid
            LEFT JOIN ( SELECT  blocked ,
                                COUNT(*) Qt_Block_By
                        FROM    sys.sysprocesses
                        GROUP BY blocked
                      ) C ON A.spid = C.blocked
                             AND A.blocked <> A.spid
    WHERE   A.spid >= 50      --  Conexões de usuário
    ORDER BY CASE WHEN A.blocked = 0
                       AND ( ISNULL(C.Qt_Block_By, 0) > 0 ) THEN 'Blocker'
                  WHEN A.blocked = 0
                       AND ( ISNULL(C.Qt_Block_By, 0) <= 0 ) THEN 'None'
                  WHEN A.blocked = A.spid THEN 'Itself'
                  ELSE 'Blk by other'
             END ,
            Qt_Blocked ,
            Qt_Block_By ,
            A.waittime DESC;
    						 

    Assim vc consegue  saber a query gerada pela conexão com a query abaixo

    DBCC INPUTBUFFER(@NumeroDaSpid)


    Wesley Neves - Brasilia-DF

     
    wesley.si.neves@gmail.com
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"




    Wesley Neves

    terça-feira, 25 de julho de 2017 11:55

Todas as Respostas

  • Thiago,

    Teoricamente existe alguma tentativa de acesso que esta sendo disparada para o seu servidor.

    Através do bloco de código abaixo você vai conseguir identificar todas as conexões ativas no seu servidor através do endereço de IP:

    SELECT  ec.client_net_address, 
                  es.[program_name],
                  es.[host_name], 
                  es.login_name,
                  COUNT(ec.session_id) AS [connection count]
    FROM sys.dm_exec_sessions AS es INNER JOIN sys.dm_exec_connections AS ec
                                                               ON es.session_id = ec.session_id
    GROUP BY ec.client_net_address, 
                      es.[program_name],
                      es.[host_name], 
                      es.login_name
    ORDER BY ec.client_net_address,  es.[program_name];

    Verifique se existe alguma conexão ativa que possa ser desconhecida para você.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 21 de julho de 2017 23:26
    Moderador
  • Bom dia Thiago, Moura

    Trago uma outra possibilidade  , não sou especialista em segurança mas acredito que isso possa também te ajudar 

    esse script recupera as spids das conexões abertas 

    -- Funciona no SQL 2000 e versões superiores
    SELECT  A.spid ,
            SUBSTRING(A.nt_username, 1, 20) AS Nt_UserName ,
            A.blocked ,
            CASE WHEN A.blocked = 0
                      AND ( ISNULL(C.Qt_Block_By, 0) > 0 ) THEN 'Blocker'
                 WHEN A.blocked = 0
                      AND ( ISNULL(C.Qt_Block_By, 0) <= 0 ) THEN 'None'
                 WHEN A.blocked = A.spid THEN 'Itself'
                 ELSE 'Blk by other'
            END Type_block ,
            A.waittime / 1000 [WaitTime(s)] ,
            D.name DataBaseName ,
            SUBSTRING(A.program_name, 1, 20) AS Programa ,
            Qt_Blocked = ISNULL(B.Qt_Blocked, 0) ,
            Qt_Block_By = ISNULL(C.Qt_Block_By, 0)
    FROM    sys.sysprocesses A
            JOIN sys.sysdatabases D ON A.dbid = D.dbid
            LEFT JOIN ( SELECT  spid ,
                                COUNT(*) Qt_Blocked
                        FROM    sys.sysprocesses
                        WHERE   ( blocked <> 0 )
                                AND ( blocked <> spid )
                        GROUP BY spid
                      ) B ON A.spid = B.spid
            LEFT JOIN ( SELECT  blocked ,
                                COUNT(*) Qt_Block_By
                        FROM    sys.sysprocesses
                        GROUP BY blocked
                      ) C ON A.spid = C.blocked
                             AND A.blocked <> A.spid
    WHERE   A.spid >= 50      --  Conexões de usuário
    ORDER BY CASE WHEN A.blocked = 0
                       AND ( ISNULL(C.Qt_Block_By, 0) > 0 ) THEN 'Blocker'
                  WHEN A.blocked = 0
                       AND ( ISNULL(C.Qt_Block_By, 0) <= 0 ) THEN 'None'
                  WHEN A.blocked = A.spid THEN 'Itself'
                  ELSE 'Blk by other'
             END ,
            Qt_Blocked ,
            Qt_Block_By ,
            A.waittime DESC;
    						 

    Assim vc consegue  saber a query gerada pela conexão com a query abaixo

    DBCC INPUTBUFFER(@NumeroDaSpid)


    Wesley Neves - Brasilia-DF

     
    wesley.si.neves@gmail.com
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"




    Wesley Neves

    terça-feira, 25 de julho de 2017 11:55