
A consciência de que eu tinha entrado em um processo de substituição de importações não veio de imediato. Somente quando as novas remessas de PCs começaram a chegar de forma estável com o distribuidor "Alt Linux" a bordo, eu desconfiei que algo estava errado.
No entanto, durante o processo de aceitação do inevitável, eu acabei me envolvendo e até comecei a desfrutar um pouco do processo. Em determinado momento, pensei que, com esse ritmo, cedo ou tarde eu teria que me despedir das soluções de organização do serviço de diretórios da Microsoft e me mover em direção a algo mais exótico. Portanto, para me preparar para o inevitável e, sempre que possível, identificar os obstáculos, foi decidido estabelecer um ambiente de teste que incluísse:
- DC1 — Windows Server 2012R2
- DC2 — Alt Server 8.2
- File Server — Windows Server 2012R2
- PC1 — Windows 7
- PC2 — Alt Workstation 8.2
Tarefas do ambiente:
- Estabelecer um domínio baseado em w2k12r2. Criar um conjunto mínimo de políticas de grupo (semelhante às usadas na infraestrutura de trabalho), incluindo a política de migração das pastas de trabalho dos usuários (Downloads/Documentos/Área de Trabalho). Ao final, o objetivo é que, ao trocar de ambiente de trabalho de Windows para Linux e vice-versa, o usuário tenha acesso confortável aos seus documentos de trabalho.
- Introduzir Samba DC como segundo controlador. Verificar a replicação do serviço de diretório e DNS.
- Configurar clientes Linux para trabalhar com pastas móveis.
Implementação:
- Instalação e introdução do novo controlador.Com a instalação do MS Windows 2012R2, tudo é simples e mais ou menos claro. Na internet, existem 1001 manuais para estabelecer um domínio no Windows, tanto por meio do GUI quanto utilizando ferramentas do Powershell, portanto, não vou repetir desnecessariamente, deixarei apenas na documentação oficial, para os curiosos e aqueles que queiram refrescar a memória.
No entanto, há um ponto importante neste item. Atualmente, o Samba não consegue trabalhar com esquemas de diretório superiores a 2008R2.
Título do spoiler Na verdade, os desenvolvedores declararam esse suporte como experimental. Mas, na prática, a tentativa de inserir o Samba como segundo DC em um domínio Windows existente com o esquema 69 encontrará o seguinte erro
DsAddEntry falhou com o status WERR_ACCESS_DENIED info (8567, ‘WERR_DS_INCOMPATIBLE_VERSION’)
O problema é que o Windows 2012 e 2012R2 usam ferramentas WMI para trabalhar com domínios e florestas, cujo suporte estável foi anunciado apenas para a versão Samba 4.11, que deve ser lançada até o final deste ano.
Portanto, a única opção para integrar a Samba ao domínio AD implantado em um servidor 2012R2 é rebaixar o esquema de 69 para 47. Naturalmente, em uma infraestrutura de produção, isso não deve ser feito sem boas razões, mas como temos um ambiente de teste, por que não?Instalamos o Alt Server 8.2. Durante a instalação, escolhemos o perfil "Servidor Samba-DC (controlador AD)". No servidor implantado, realizamos uma atualização completa do sistema e instalamos o pacote task-samba-dc, que trará tudo o que é necessário.
# apt-get install task-samba-dcCaso o task-samba-dc, contrariamente às alegações da documentação da Alta, se recuse a instalar tudo o que é necessário.
# apt-get install python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-common-libs libpytalloc-develEm seguida, passamos para a configuração do Kerberos e obtenção do ticket. Abrimos o arquivo krb5.conf, vamos à seção [libdefaults] e o modificamos para o seguinte formato:
# vim /etc/krb5.confdns_lookup_kdc = true dns_lookup_realm = true default_realm = TEST.LOCALSolicitamos um ticket
# kinit administrator Password for administrator@TEST.LOCAL:Verificamos a lista de tickets Kerberos obtidos
# klist Ticket cache: KEYRING:persistent:0:0 Default principal: administrator@TEST.LOCAL Valid starting Expires Service principal 16.05.2019 11:51:38 16.05.2019 21:51:38 krbtgt/TEST.LOCAL@TEST.LOCAL renew until 23.05.2019 11:51:35Agora removemos ou renomeamos a configuração existente da Samba.
# mv smb.conf smb.conf.bak1E, finalmente, fazemos a entrada no domínio AD como um segundo controlador:
# samba-tool domain join test.local DC -U"TESTadministrator"A entrada bem-sucedida será acompanhada pelo seguinte log
Encontrando um DC gravável para o domínio 'test.local' DC encontrado DC1.TEST.LOCAL Senha para [TESTadministrator]: Reconectando ao mestre de nomenclatura e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL O nome DNS do novo mestre de nomenclatura é DC1.TEST.LOCAL O grupo de trabalho é TEST O reino é TEST.LOCAL Adicionando CN=DC2,OU=Controladores de Domínio,DC=TEST,DC=LOCAL Adicionando CN=DC2,CN=Servidores,CN=Nome-Primeiro-Site-Padrão,CN=Sites,CN=Configuração,DC=TEST,DC=LOCAL Adicionando CN=Configurações NTDS,CN=DC2,CN=Servidores,CN=Nome-Primeiro-Site-Padrão,CN=Sites,CN=Configuração,DC=TEST,DC=LOCAL Adicionando SPNs a CN=DC2,OU=Controladores de Domínio,DC=TEST,DC=LOCAL Definindo a senha da conta para DC2$ Ativando a conta Chamando provisionamento básico Buscando endereços IPv4 Buscando endereços IPv6 Nenhum endereço IPv6 será atribuído Configurando share.ldb Configurando secrets.ldb Configurando o registro Configurando o banco de dados de privilégios Configurando banco de dados de idmap Configurando banco de dados SAM Configurando partições e configurações do sam.ldb Configurando o rootDSE do sam.ldb Carregando o esquema Samba 4 e AD Uma configuração Kerberos adequada para Samba AD foi gerada em /var/lib/samba/private/krb5.conf Provisionamento OK para o DN do domínio DC=TEST,DC=LOCAL Iniciando replicação Schema-DN[CN=Esquema,CN=Configuração,DC=TEST,DC=LOCAL] objetos[402/1426] valores_vinculados[0/0] Schema-DN[CN=Esquema,CN=Configuração,DC=TEST,DC=LOCAL] objetos[804/1426] valores_vinculados[0/0] Schema-DN[CN=Esquema,CN=Configuração,DC=TEST,DC=LOCAL] objetos[1206/1426] valores_vinculados[0/0] Schema-DN[CN=Esquema,CN=Configuração,DC=TEST,DC=LOCAL] objetos[1608/1426] valores_vinculados[0/0] Schema-DN[CN=Esquema,CN=Configuração,DC=TEST,DC=LOCAL] objetos[1743/1426] valores_vinculados[0/0] Analisando e aplicando objetos de esquema Partição[CN=Configuração,DC=TEST,DC=LOCAL] objetos[402/2240] valores_vinculados[0/24] Partição[CN=Configuração,DC=TEST,DC=LOCAL] objetos[804/2240] valores_vinculados[0/24] Partição[CN=Configuração,DC=TEST,DC=LOCAL] objetos[1206/2240] valores_vinculados[0/24] Partição[CN=Configuração,DC=TEST,DC=LOCAL] objetos[1608/2240] valores_vinculados[0/24] Partição[CN=Configuração,DC=TEST,DC=LOCAL] objetos[1772/2240] valores_vinculados[24/24] Replicando objetos críticos do DN base do domínio Partição[DC=TEST,DC=LOCAL] objetos[109/110] valores_vinculados[26/29] Partição[DC=TEST,DC=LOCAL] objetos[394/5008] valores_vinculados[29/29] Concluído com NC sempre replicado (base, configuração, esquema) Replicando DC=DomainDnsZones,DC=TEST,DC=LOCAL Partição[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objetos[42/42] valores_vinculados[0/0] Replicando DC=ForestDnsZones,DC=TEST,DC=LOCAL Partição[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objetos[20/20] valores_vinculados[0/0] Exop em[CN=Gerente RID$,CN=System,DC=TEST,DC=LOCAL] objetos[3] valores_vinculados[0] Confirmando banco de dados SAM Adicionando 1 registro DNS remoto para DC2.TEST.LOCAL Adicionando registro DNS A DC2.TEST.LOCAL para IPv4 IP: 192.168.90.201 Adicionando registro DNS CNAME 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL para DC2.TEST.LOCAL Todos os outros registros DNS (como registros SRV _ldap) serão criados samba_dnsupdate na primeira inicialização Replicando novos registros DNS em DC=DomainDnsZones,DC=TEST,DC=LOCAL Partição[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objetos[1/42] valores_vinculados[0/0] Replicando novos registros DNS em DC=ForestDnsZones,DC=TEST,DC=LOCAL Partição[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objetos[1/20] valores_vinculados[0/0] Enviando DsReplicaUpdateRefs para todas as partes replicadas Definindo isSynchronized e dsServiceName Configurando o banco de dados de segredos Entrou no domínio TEST (SID S-1-5-21-3959064270-1572045903-2556826204) como um DCNo console ADUC deve aparecer uma entrada para o novo DC no domínio TEST.LOCAL, e no gerenciador DNS — um novo registro A correspondente ao DC2.
- Replicação entre controladoresPara começar, vamos verificar o funcionamento do serviço de replicação de diretórios (DRS)
# samba-tool drs showreplTodas as tentativas de replicação na saída devem ser bem-sucedidas. Na lista de objetos KCC, dentro de 15 minutos após a entrada, nosso DC1 no Windows deve aparecer.
Nome do Site Padrão-Primeiro-DC2 Opções DSA: 0x00000001 GUID do objeto DSA: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf ID de invocação DSA: 017997b5-d718-41d7-a3f3-e57ab5151b5c ==== VIZINHOS DE ENTRADA ==== DC=ForestDnsZones,DC=test,DC=local Nome do Site Padrão-Primeiro-DC1 via RPC GUID do objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Última tentativa em seg, 27 de maio 12:56:31 2019 MSK foi bem-sucedida 0 falha(s) consecutiva(s). Último sucesso em seg, 27 de maio 12:56:31 2019 MSK DC=DomainDnsZones,DC=test,DC=local Nome do Site Padrão-Primeiro-DC1 via RPC GUID do objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Última tentativa em seg, 27 de maio 12:56:32 2019 MSK foi bem-sucedida 0 falha(s) consecutiva(s). Último sucesso em seg, 27 de maio 12:56:32 2019 MSK CN=Schema,CN=Configuration,DC=test,DC=local Nome do Site Padrão-Primeiro-DC1 via RPC GUID do objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Última tentativa em seg, 27 de maio 12:56:32 2019 MSK foi bem-sucedida 0 falha(s) consecutiva(s). Último sucesso em seg, 27 de maio 12:56:32 2019 MSK DC=test,DC=local Nome do Site Padrão-Primeiro-DC1 via RPC GUID do objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Última tentativa em seg, 27 de maio 12:56:32 2019 MSK foi bem-sucedida 0 falha(s) consecutiva(s). Último sucesso em seg, 27 de maio 12:56:32 2019 MSK CN=Configuration,DC=test,DC=local Nome do Site Padrão-Primeiro-DC1 via RPC GUID do objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Última tentativa em seg, 27 de maio 12:56:33 2019 MSK foi bem-sucedida 0 falha(s) consecutiva(s). Último sucesso em seg, 27 de maio 12:56:33 2019 MSK ==== VIZINHOS DE SAÍDA ==== DC=ForestDnsZones,DC=test,DC=local Nome do Site Padrão-Primeiro-DC1 via RPC GUID do objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Última tentativa em qui, 23 de maio 16:40:03 2019 MSK foi bem-sucedida 0 falha(s) consecutiva(s). Último sucesso em qui, 23 de maio 16:40:03 2019 MSK DC=DomainDnsZones,DC=test,DC=local Nome do Site Padrão-Primeiro-DC1 via RPC GUID do objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Última tentativa em qui, 23 de maio 16:40:03 2019 MSK foi bem-sucedida 0 falha(s) consecutiva(s). Último sucesso em qui, 23 de maio 16:40:03 2019 MSK CN=Schema,CN=Configuration,DC=test,DC=local Nome do Site Padrão-Primeiro-DC1 via RPC GUID do objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Última tentativa em qui, 23 de maio 16:40:08 2019 MSK foi bem-sucedida 0 falha(s) consecutiva(s). Último sucesso em qui, 23 de maio 16:40:08 2019 MSK DC=test,DC=local Nome do Site Padrão-Primeiro-DC1 via RPC GUID do objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Última tentativa em qui, 23 de maio 16:40:08 2019 MSK foi bem-sucedida 0 falha(s) consecutiva(s). Último sucesso em qui, 23 de maio 16:40:08 2019 MSK CN=Configuration,DC=test,DC=local Nome do Site Padrão-Primeiro-DC1 via RPC GUID do objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Última tentativa em seg, 27 de maio 12:12:17 2019 MSK foi bem-sucedida 0 falha(s) consecutiva(s). Último sucesso em seg, 27 de maio 12:12:17 2019 MSK ==== OBJETOS DE CONEXÃO KCC ==== Conexão -- Nome da conexão: 6d2652b3-e723-4af7-a19f-1ee48915753c Habilitado : VERDADEIRO Nome DNS do servidor : DC1.test.local Nome DN do servidor : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Nome do Site Padrão-Primeiro,CN=Sites,CN=Configuration,DC=test,DC=local Tipo de transporte: RPC opções: 0x00000001 Aviso: Sem NC replicado para a Conexão!Aviso «Sem NC replicado para a Conexão!» pode ser ignorado sem problemas. Ele aparece porque, ao registrar um novo DC Samba, algumas flags de replicação são configuradas incorretamente.
Seria bom também verificar a replicação do LDAP.
# samba-tool ldapcmp ldap://dc1.test.local ldap://dc2.test.local -UadministratorO comando mencionado acima irá comparar os valores dos atributos dos objetos em todo o diretório no DC1 e DC2.
Exemplo de replicação bem-sucedida
* Comparando o contexto [DOMAIN]... * Objetos a serem comparados: 249 * Resultado para [DOMAIN]: SUCESSO * Comparando o contexto [CONFIGURATION]... * Objetos a serem comparados: 1750 * Resultado para [CONFIGURATION]: SUCESSO * Comparando o contexto [SCHEMA]... * Objetos a serem comparados: 1739 * Resultado para [SCHEMA]: SUCESSO * Comparando o contexto [DNSDOMAIN]... * Objetos a serem comparados: 42 * Resultado para [DNSDOMAIN]: SUCESSO * Comparando o contexto [DNSFOREST]... * Objetos a serem comparados: 20 * Resultado para [DNSFOREST]: SUCESSOEm alguns casos, os atributos dos objetos em diferentes controladores podem diferir, e a saída do comando irá alertar sobre isso. Mas nem sempre isso será um sinal de problema com a replicação.
A próxima etapa é configurar manualmente a replicação estável do diretório SysVol.
A questão é que o Samba ainda não suporta DFS-R, assim como não suportava o FRS anterior. Portanto, a única solução viável até hoje para a replicação entre DC Samba e Windows é a replicação unidirecional usando a ferramenta Robocopy do kit .Os desenvolvedores do Samba, para evitar problemas de compatibilidade, recomendam primeiro instalar o pacote de utilitários em uma estação de trabalho comum e, em seguida, copiar o Robocopy para o controlador na pasta "C:Program Files (x86)Windows Resource KitsTools"
Após a instalação, no Agendador de Tarefas no controlador com Windows, criamos uma tarefa para executar a replicação com os seguintes parâmetros:
— Executar para todos os usuários
— Disparador para executar diariamente a cada 5 minutos durante o dia
— Nas ações, informamos o caminho para o utilitário robocopy, e como argumentos indicamos:DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /secNo caso específico, copiamos o conteúdo do diretório SysVol de DC1 para DC2.
- Pastas móveis de usuários usando a configuração pam_mountExperiencialmente, encontrei duas opções viáveis para resolver essa tarefa com isso.
- Montagem completa da pasta de perfil da rede na seção /home. Uma opção simples. Funciona bem se os nomes das pastas Documentos, Downloads e Área de Trabalho corresponderem em ambos os sistemas operacionais. Presume-se que o PC com Linux já esteja inserido no domínio e que os usuários façam login com suas contas de domínio, utilizando o sssd como mecanismo de autenticação e autorização.
# vim /etc/security/pam_mount.conf.xml<volume uid="100000000-2000000000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)" mountpoint="~" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>onde:
- uid=«100000000-2000000000» — intervalo de UID atribuído a usuários de domínio pelo SSSD
- server=«dfs» — nome do servidor de arquivos
- path=«Profile_Users/%(USER)» — recurso no servidor de arquivos onde o perfil do usuário está localizado
- mountpoint=»~» — caminho de montagem na pasta inicial do usuário
O login do usuário é passado para a macro «%(USER)», utilizada pelo pam_mount para conectar nosso recurso de rede, na forma em que foi inserido no gerenciador de exibição. Portanto, é importante que no DM o login seja inserido sem especificar explicitamente o nome do domínio.
Em sssd.conf, isso é resolvido comentando ou definindo o valor False na opção use_fully_qualified_names, que ativa o modo de nomes completos (incluindo domínio) para usuários e grupos.
- O segundo método é menos direto e mais rudimentar, e, na minha opinião, é mais conveniente e preferível. A única diferença em relação ao primeiro é a configuração do pam_mount.
# vim /etc/security/pam_mount.conf.xmlOu seja, montamos separadamente cada uma de nossas pastas no diretório correspondente.
- Montagem completa da pasta de perfil da rede na seção /home. Uma opção simples. Funciona bem se os nomes das pastas Documentos, Downloads e Área de Trabalho corresponderem em ambos os sistemas operacionais. Presume-se que o PC com Linux já esteja inserido no domínio e que os usuários façam login com suas contas de domínio, utilizando o sssd como mecanismo de autenticação e autorização.
Como resultado, obtemos um serviço de "monitoramento como serviço", automatizado na linha de produção de integração contínua. O desenvolvedor ou testador precisa apenas definir a lista de métricas em um arquivo JSON, e tudo o mais acontece automaticamente. Obtemos um controle de qualidade transparente dos lançamentos: todas as notificações sobre desempenho, consumo de recursos ou regressões arquitetônicas.
Em meio mês de trabalho na bancada de testes, esta configuração sobreviveu a várias quedas longas e curtas de ambos os controladores, praticamente sem consequências para os clientes (uma vez, um cliente no Windows7 perdeu a confiança).
No geral, fiquei com impressões bastante agradáveis ao trabalhar com este produto, apesar de todos os detalhes que enfrentei tanto no artigo quanto "nos bastidores".
Existem muitos obstáculos a serem superados durante o trabalho com Samba, e você terá que lidar com uma grande quantidade deles. No entanto, atualmente não existem outras soluções que permitam organizar um ambiente híbrido, utilizando um serviço de diretórios sem depender do Windows.
Fonte: habr.com
