AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 283977
Accepted
Mike
Mike
Asked: 2021-01-26 21:02:31 +0800 CST2021-01-26 21:02:31 +0800 CST 2021-01-26 21:02:31 +0800 CST

SQL Server - Como evitar conexões públicas?

  • 772

Hoje descobrimos que dois de nossos SQL Servers (ambos 2017 CU21) estão aceitando conexões de qualquer conta de domínio aleatório, mesmo aqueles que definitivamente não têm login direto ou acesso via associação ao grupo AD.

Em cada servidor há um banco de dados de usuários que permite que essas contas de domínio aleatórias se conectem.

Com base na configuração que vemos, esperamos que qualquer conta de domínio aleatório (ou seja, qualquer conta que não tenha um login na instância) tenha uma falha de login e, além disso, também seja bloqueada para se conectar ao banco de dados do usuário.

Para esses bancos de dados, a conta de convidado está desabilitada, mas para uma boa medida, executamos:

REVOKE CONNECT FROM guest

Isso não fez diferença.

Então duas perguntas:

  1. Como podemos desligar/impedir que essas conexões públicas sejam bem-sucedidas?
  2. Que instrução TSQL poderia nos mostrar a configuração problemática?

Coisas que vimos até agora:

  • A função de servidor 'público' parece ter a configuração padrão, igual a todos os nossos outros servidores onde isso não é um problema
  • O usuário convidado definitivamente aparece como desabilitado em todos os bancos de dados e servidores
  • A função de banco de dados 'pública' tem apenas as permissões padrão que esperamos ver
  • É apenas 1 banco de dados de usuário (mais master & msdb & tempdb) em cada servidor que é acessível a essas contas aleatórias -- todos os outros bancos de dados se comportam normalmente, ou seja, a conta não pode se conectar a eles.
  • A configuração do tipo de contenção do banco de dados é 'Nenhum' para todos os casos.
  • Não há login presente em nenhum dos servidores que abranja todos os usuários do domínio

Algum contexto: os dois servidores estão relacionados -- eles são os servidores DEV e PROD para o mesmo aplicativo. É muito provável que essa configuração tenha sido feita deliberadamente por algum motivo histórico - mas ninguém que trabalha aqui agora sabe o porquê, então gostaríamos de desabilitar esse acesso público.

sql-server
  • 4 4 respostas
  • 876 Views

4 respostas

  • Voted
  1. Tibor Karaszi
    2021-01-27T01:20:31+08:002021-01-27T01:20:31+08:00

    De acordo com sua descrição, parece-me que as permissões CONNECT SQL (ou talvez CONNECT) foram atribuídas à função de servidor público.

    • 4
  2. sepupic
    2021-01-27T00:40:45+08:002021-01-27T00:40:45+08:00

    Que instrução TSQL poderia nos mostrar a configuração problemática?

    Qualquer login se conecta ao servidor graças ao CONNECT SQLconcedido a ele diretamente ou a ele role/ windows groupno nível do servidor. Você deve examinar essas funções/grupos e, para isso, você deve representar seu login suspeito executando este código:

    execute as login = 'your_suspected_login';
    
    select *
    from sys.login_token; -- shows all groups/server roles
    
    select *
    from sys.login_token t
         join sys.server_permissions p
            on t.principal_id = p.grantee_principal_id 
               and p.permission_name = 'CONNECT SQL' -- shows what grants him CONNECT SQL
    
    revert;
    

    A primeira parte do código mostra todas as funções/grupos dos quais o login é membro, a segunda mostra qual função/grupo possui CONNECT SQL. Portanto, até que seu login seja membro deste último grupo/função, ele se conectará ao seu servidor.

    • 3
  3. sudocoffee
    2021-01-27T02:08:11+08:002021-01-27T02:08:11+08:00

    Há um script T-SQL em outro post aqui que irá retirar todas as suas permissões database_role.

    Também vale a pena notar que CONNECT SQLe VIEW DATABASEsão concedidos à função de servidor público por padrão.

    • 1
  4. Best Answer
    Dan Guzman
    2021-01-28T18:34:38+08:002021-01-28T18:34:38+08:00

    As contas do Windows herdam permissões por meio da associação ao grupo do Windows. Mesmo que não exista um login para a conta de usuário, a conta ainda pode se conectar se um membro do grupo tiver permissão para fazê-lo.

    Execute xp_logininfo , especificando a conta do Windows com problema junto com `all' para listar todos os caminhos de permissão (ou seja, conta e/ou grupo(s)) que fornecem acesso.

    EXEC xp_logininfo 'YourDomain\YourUser', 'all';
    
    • 1

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve