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 / server / Perguntas / 1096156
Accepted
dlanod
dlanod
Asked: 2022-03-15 21:11:51 +0800 CST2022-03-15 21:11:51 +0800 CST 2022-03-15 21:11:51 +0800 CST

Por que uma opção MS GPO quebra compartilhamentos SMB que usam um arquivo de hosts para o nome da máquina?

  • 772

Definimos " Servidor de rede Microsoft: nível de validação de nome de destino SPN do servidor " como "Obrigatório do cliente" em nosso GPO de teste.

Nossos sistemas de teste têm alguns aliases de máquina personalizados em seus arquivos de hosts, mas uma vez que a opção é ativada, não podemos mais acessar compartilhamentos SMB usando o alias de máquina.

Eu lutei para encontrar informações sobre essa interação, então esperava que alguém pudesse explicar a interação aqui e se há uma maneira de remediar isso?

windows group-policy security active-directory server-message-block
  • 1 1 respostas
  • 671 Views

1 respostas

  • Voted
  1. Best Answer
    user1686
    2022-03-15T23:00:32+08:002022-03-15T23:00:32+08:00

    Não se trata do arquivo 'hosts' - ele quebra os compartilhamentos acessados ​​por meio de um nome de host diferente do nome "real" do servidor. Seu resultado é normal, pois esse é literalmente todo o propósito do GPO.

    O GPO em questão é muito parecido com a aplicação TLS SNI encontrada em alguns servidores web: o cliente informa "Estou aqui para falar com o servidor SRV01.EXAMPLE.COM" e se o servidor não reconhecer esse nome como um dos vhosts serve, rejeita completamente o cliente. Então aqui se o cliente declara que quer falar com um de seus aliases /etc/hosts, mas o servidor não está ciente do alias, ele rejeita o cliente.

    O Kerberos já tem uma aplicação interna semelhante (é por isso que você precisa registrar SPNs para aliases usando setspn), mas o GPO o torna mais rigoroso e também estende a mesma proteção ao NTLM.

    (Como já mencionado na página Docs, isso deve impedir ataques de retransmissão NTLM, onde um servidor malicioso A aceita autenticação NTLM e encaminha exatamente os mesmos pacotes NTLM para um servidor real B - o ataque seria evitado porque o servidor B veria " Eu quero falar com o servidor A" do cliente.)

    Ainda é possível usar aliases de host, mas requer uma quantidade cada vez maior de botões de registro. O método oficial é usar netdom computername REALHOST /add:THEALIAScomo nesta postagem do TechNet , e encontrei postagens de blog alegando que é suficiente tornar os aliases utilizáveis ​​mesmo com validação estrita de SPN, mas realmente parece que não é suficiente - há pelo menos um se não dois valores de registro que ele esquece de tocar.

    1. O NETDOM registra SPNs do Kerberos para o alias no AD, permitindo que os tíquetes do Kerberos sejam obtidos para eles, semelhante à emissão manual desses dois comandos:

      setspn -S HOST/THEALIAS REALHOST$
      setspn -S HOST/thealias.example.com REALHOST$
      

      Isso é necessário para o Kerberos e não há desculpa para não usar o Kerberos em um ambiente AD, portanto, se você optar por usar NETDOM ou fazê-lo manualmente, registre os SPNs de alias de qualquer maneira.

      (Tecnicamente, o SMB usa os principais "cifs/", mas no AD eles estão implicitamente presentes sempre que o SPN "host/" é registrado.)

    2. Em seguida, o NETDOM adiciona o alias em dois lugares no registro do servidor, fazendo com que o servidor registre seus nomes adicionais no AD DNS, bem como os anuncie via NetBIOS Browser:

      • Caminho: HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
        Nome: AlternateComputerNames
        Tipo: REG_MULTI_SZ
        Dados: { thealias.example.com}

      • Caminho: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
        Nome: OptionalNames
        Tipo: REG_MULTI_SZ
        Dados: { THEALIAS}

      Eles não parecem ter nenhum efeito na autenticação (nem mesmo Kerberos), então acredito que ambos são completamente opcionais se você usar /etc/hosts ou criar registros CNAME manuais no DNS.

    3. Um parâmetro adicional que o NETDOM não cria, mas que considero necessário para acessar os aliases de dentro do próprio servidor, é:

      • Caminho: HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
        Nome: BackConnectionHostNames
        Tipo: REG_MULTI_SZ
        Dados: { thealias.example.com}

      Este é necessário apenas para conexões de "loopback", então talvez não seja estritamente necessário em geral, mas pelo menos no meu caso o servidor precisava se conectar ao seu próprio alias para que a configuração fosse necessária.

    4. Por fim, descobri que o recurso "validação de nome de destino SPN" tem sua própria lista de nomes permitidos que devem ser atualizados manualmente - caso contrário, os aliases seriam rejeitados devido à validação estrita do SPN, mesmo com todas as configurações acima presentes:

      • Caminho: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
        Nome: Tipo: REG_MULTI_SZ Dados: { , }SrvAllowedServerNames

        THEALIASthealias.example.com

      Você vai querer listar os nomes curtos e os FQDNs de cada alias – de meus experimentos, listar um não implica automaticamente o outro.

    Com os SPNs do Kerberos registrados e o SrvAllowedServerNamesvalor do registro definido, os aliases devem finalmente funcionar corretamente, mesmo com validação de destino estrita.

    • 8

relate perguntas

Sidebar

Stats

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

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

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