PAM, NIS, LDAP, Kerberos, DS e Samba 4 AD-DC - Redes SMB

Índice geral da série: Redes de computadores para PMEs: introdução

Olá amigos e amigos!

Com este artigo me despeço da Comunidade DesdeLinux. Uma despedida especial para uma Comunidade Especial. A partir de agora estarei no meu projeto pessoal que você pode ver em http://www.gigainside.com.

O objetivo principal do post é oferecer um «Big Picture»Sobre os Serviços de Autenticação com Software Livre de que dispomos. Pelo menos essa é a nossa intenção. Portanto, será longo, apesar de sabermos que é contra as regras gerais de redação de artigos. Esperamos que os administradores do sistema apreciem isso.

Queremos salientar que o protocolo comum a muitos dos sistemas de autenticação modernos é o LDAP, e que não é inútil estudá-lo cuidadosamente, a partir do material de estudo que encontraremos no site oficial http://www.openldap.org/.

Não daremos definições detalhadas -ou links- sobre os aspectos tratados em artigos anteriores, ou sobre aqueles cuja descrição pode ser facilmente acessível na Wikipedia ou em outros sites ou artigos da Internet, para não perder a objetividade da mensagem que queremos transmitir. Também usaremos uma combinação válida de nomes em inglês e espanhol, pois consideramos que a maioria dos sistemas nasceu com nomes em inglês e é muito benéfico para um administrador de sistema assimilá-los em seu idioma original.

  • PAM: Módulo de autenticação plugável.
  • NIS: Rede_Informações_Serviço.
  • LDAP: protocolo de acesso a diretório leve.
  • Kerberos: Protocolo de segurança para autenticar usuários, computadores e serviços centralmente em uma rede, verificando suas credenciais em relação às entradas existentes no banco de dados Kerberos.
  • DS: Servidor de diretório ou serviço de diretório
  • AD–DC: Active Directory - Controlador de Domínio

PAM

Dedicamos uma pequena série a este tipo de autenticação local, que você verá na prática diária que é amplamente utilizada quando, por exemplo, associamos uma estação de trabalho a um Controlador de Domínio ou Active Directory; para mapear usuários armazenados em bancos de dados LDAP externos como se fossem usuários locais; para mapear usuários armazenados no controlador de domínio de um Active Directory como se fossem usuários locais e assim por diante.

NIS

De Wikipedia:

  • Network Information System (conhecido pela sigla NIS, que em espanhol significa Network Information System), é o nome de um protocolo de serviços de diretório cliente-servidor desenvolvido pela Sun Microsystems para o envio de dados de configuração em sistemas distribuídos como nomes de usuários e hosts entre computadores em uma rede.O NIS é baseado no ONC RPC e consiste em um servidor, uma biblioteca do lado do cliente e várias ferramentas de administração.

    O NIS foi originalmente chamado de Yellow Pages, ou YP, que ainda é usado para se referir a ele. Infelizmente, esse nome é uma marca comercial da British Telecom, o que exigiu que a Sun o abandonasse. No entanto, YP permanece um prefixo nos nomes da maioria dos comandos relacionados ao NIS, como ypserv e ypbind.

    O DNS atende a uma gama limitada de informações, sendo a mais importante a correspondência entre o nome do nó e o endereço IP. Para outros tipos de informação, não existe esse serviço especializado. Por outro lado, se você estiver gerenciando apenas uma pequena LAN sem conectividade com a Internet, não parece valer a pena configurar o DNS. É por isso que a Sun desenvolveu o Network Information System (NIS). O NIS fornece recursos genéricos de acesso ao banco de dados que podem ser usados ​​para distribuir, por exemplo, as informações contidas nos arquivos passwd e groups para todos os nós da rede. Isso faz com que a rede pareça um único sistema, com as mesmas contas em todos os nós. Da mesma forma, o NIS pode ser usado para distribuir as informações do nome do nó contidas em / etc / hosts para todas as máquinas da rede.

    Hoje o NIS está disponível em praticamente todas as distribuições Unix, e há até implementações gratuitas. O BSD Net-2 publicou um que foi derivado de uma implementação de referência de domínio público doada pela Sun. O código da biblioteca para a parte cliente desta versão existe no GNU / Linux libc há muito tempo, e os programas de administração foram portados para o GNU / Linux por Swen Thümmler. No entanto, um servidor NIS está ausente na implementação de referência.

    Peter Eriksson desenvolveu uma nova implementação chamada NYS. Ele suporta NIS básico e a versão aprimorada do Sun NIS +. [1] O NYS não apenas fornece várias ferramentas NIS e um servidor, mas também adiciona um novo conjunto de funções de biblioteca que você precisa compilar em sua libc se quiser usá-las. Isso inclui um novo esquema de configuração para resolução de nome de nó que substitui o esquema atual usado pelo arquivo "host.conf".

    O GNU libc, conhecido como libc6 na comunidade GNU / Linux, inclui uma versão atualizada do suporte NIS tradicional desenvolvido por Thorsten Kukuk. Ele oferece suporte a todas as funções de biblioteca fornecidas pelo NYS e também usa o esquema de configuração avançado do NYS. As ferramentas e o servidor ainda são necessários, mas usar o GNU libc economiza o trabalho de corrigir e recompilar a biblioteca

    .

Nome do computador e domínio, interface de rede e resolvedor

  • Começamos com uma instalação limpa -sem interface gráfica- de um Debian 8 "Jessie". O domínio swl.fan significa "Fãs de Software Livre". Que nome melhor do que este?.
root @ master: ~ # hostname
dominar
root @ master: ~ # hostname -f
mestre.swl.fan

root @ master: ~ # ip addr 1: lo: mtu 65536 qdisc noqueue state DESCONHECIDO grupo padrão link / loopback 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00 inet 127.0.0.1/8 escopo host lo valid_lft forever preferred_lft forever inet6 :: 1/128 host de escopo valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast estado UP grupo padrão qlen 1000 link / éter 00: 0c: 29: 4c: 76: d9 brd ff: ff: ff: ff: ff: ff inet 192.168.10.5/24 brd 192.168.10.255 escopo global eth0 valid_lft para sempre preferido_lft para sempre inet6 fe80 :: 20c: 29ff: fe4c: 76d9 / 64 link de escopo valid_lft para sempre preferred_lft para sempre

root @ master: ~ # cat /etc/resolv.conf 
search swl.fan nameserver 127.0.0.1

Instalação de bind9, isc-dhcp-server e ntp

vincular9

root @ master: ~ # aptitude install bind9 bind9-doc nmap
root @ master: ~ # systemctl status bind9

root @ master: ~ # nano /etc/bind/named.conf
incluem "/etc/bind/named.conf.options"; incluem "/etc/bind/named.conf.local"; incluir "/etc/bind/named.conf.default-zones";

root @ master: ~ # cp /etc/bind/named.conf.options \ /etc/bind/named.conf.options.original

root @ master: ~ # nano /etc/bind/named.conf.options
opções {diretório "/ var / cache / bind"; // Se houver um firewall entre você e os servidores de nomes com os quais deseja // falar, pode ser necessário consertar o firewall para permitir // portas múltiplas para falar. Vejo http://www.kb.cert.org/vuls/id/800113

        // Se o seu ISP forneceu um ou mais endereços IP para servidores de // nomes estáveis, você provavelmente deseja usá-los como encaminhadores. // Remova o comentário do bloco a seguir e insira os endereços substituindo // o marcador de posição all-0. // encaminhadores {// 0.0.0.0; //}; // ===================================================== ======================= $ // Se o BIND registrar mensagens de erro sobre a expiração da chave raiz, // você precisará atualizar suas chaves. Vejo https://www.isc.org/bind-keys
        // ====================================================== ====================== $ // Não queremos DNSSEC
        não habilitar dnssec;
        // dnssec-validation auto; auth-nxdomain no; # em conformidade com RFC1035 listen-on-v6 {any; }; // Para verificações de localhost e sysadmin // por meio de dig swl.fan axfr // Não temos DNS Slave ... até agora
        allow-transfer {localhost; 192.168.10.1; };
}; root @ master: ~ # named-checkconf

root @ master: ~ # nano /etc/bind/zones.rfcFreeBSD
// Espaço de endereçamento compartilhado (RFC 6598)
zone "64.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "65.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "66.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "67.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "68.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "69.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "70.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "71.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "72.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "73.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "74.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "75.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "76.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "77.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "78.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "79.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "80.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "81.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "82.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "83.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "84.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "85.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "86.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "87.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "88.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "89.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "90.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "91.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "92.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "93.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "94.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "95.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "96.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "97.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "98.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "99.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "100.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "101.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "102.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "103.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "104.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "105.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "106.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "107.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "108.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "109.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "110.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "111.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "112.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "113.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "114.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "115.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "116.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "117.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "118.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "119.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "120.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "121.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "122.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "123.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "124.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "125.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "126.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "127.100.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };

// Link-local / APIPA (RFCs 3927, 5735 e 6303)
zona "254.169.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; };

// Atribuições de protocolo IETF (RFCs 5735 e 5736)
zona "0.0.192.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; };

// TEST-NET- [1-3] para documentação (RFCs 5735, 5737 e 6303)
zona "2.0.192.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "100.51.198.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "113.0.203.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; };

// Intervalo de exemplo de IPv6 para documentação (RFCs 3849 e 6303)
zona "8.bd0.1.0.0.2.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; };

// Nomes de domínio para documentação e teste (BCP 32)
zona "teste" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "exemplo" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "inválida" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "exemplo.com" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "exemplo.net" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "example.org" {type master; arquivo "/etc/bind/db.empty"; };

// Teste de benchmark de roteador (RFCs 2544 e 5735)
zona "18.198.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "19.198.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; };

// IANA Reservada - Old Class E Space (RFC 5735)
zona "240.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "241.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "242.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "243.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "244.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "245.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "246.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "247.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "248.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "249.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "250.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "251.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "252.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "253.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "254.in-addr.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; };

// Endereços IPv6 não atribuídos (RFC 4291)
zona "1.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "3.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "4.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "5.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "6.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "7.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "8.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "9.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "a.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "b.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "c.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "d.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "e.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "0.f.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "1.f.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "2.f.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "3.f.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "4.f.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "5.f.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "6.f.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "7.f.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "8.f.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "9.f.ip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "afip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "bfip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "0.efip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "1.efip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "2.efip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "3.efip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "4.efip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "5.efip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "6.efip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "7.efip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; };

// ULA IPv6 (RFCs 4193 e 6303)
zona "cfip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "dfip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; };

// Link local IPv6 (RFCs 4291 e 6303)
zona "8.efip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "9.efip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "aefip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "befip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; };

// Endereços locais de site descontinuados IPv6 (RFCs 3879 e 6303)
zona "cefip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "defip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "eefip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; }; zona "fefip6.arpa" {tipo mestre; arquivo "/etc/bind/db.empty"; };

// IP6.INT está obsoleto (RFC 4159)
zona "ip6.int" {tipo mestre; arquivo "/etc/bind/db.empty"; };

root @ master: ~ # nano /etc/bind/named.conf.local
// // Faça qualquer configuração local aqui // // Considere adicionar as zonas 1918 aqui, se elas não forem usadas em sua // organização include "/etc/bind/zones.rfc1918";
incluem "/etc/bind/zones.rfcFreeBSD";

// Declaração do nome, tipo, localização e permissão de atualização // das zonas de registro DNS // Ambas as zonas são zona MASTER "swl.fan" {type master; arquivo "/var/lib/bind/db.swl.fan"; }; zona "10.168.192.in-addr.arpa" {tipo mestre; arquivo "/var/lib/bind/db.10.168.192.in-addr.arpa"; };

root @ master: ~ # named-checkconf

root @ master: ~ # nano /var/lib/bind/db.swl.fan
$ TTL 3H @ IN SOA master.swl.fan. root.master.swl.fan. (1; série 1D; atualizar 1H; repetir 1W; expirar 3H); mínimo ou; Tempo de cache negativo para viver; @ IN NS master.swl.fan. @ IN MX 10 mail.swl.fan. @ IN A 192.168.10.5 @ IN TXT "Para Fãs de Software Livre"; sysadmin IN A 192.168.10.1 fileserver IN A 192.168.10.4 master IN A 192.168.10.5 proxyweb EM A 192.168.10.6 blog IN A 192.168.10.7 ftpserver EM A 192.168.10.8 mail IN A 192.168.10.9

root @ master: ~ # nano /var/lib/bind/db.10.168.192.in-addr.arpa
$ TTL 3H @ IN SOA master.swl.fan. root.master.swl.fan. (1; série 1D; atualizar 1H; repetir 1W; expirar 3H); mínimo ou; Tempo de cache negativo para viver; @ IN NS master.swl.fan. ; 1 IN PTR sysadmin.swl.fan. 4 IN PTR fileserver.swl.fan. 5 IN PTR master.swl.fan. 6 IN PTR proxyweb.swl.fan. 7 IN PTR blog.swl.fan. 8 IN PTR ftpserver.swl.fan. 9 EM PTR mail.swl.fan.

root @ master: ~ # named-checkzone swl.fan /var/lib/bind/db.swl.fan
zona swl.fan/IN: serial carregado 1 OK
root @ master: ~ # named-checkzone 10.168.192.in-addr.arpa /var/lib/bind/db.10.168.192.in-addr.arpa
zona 10.168.192.in-addr.arpa/IN: serial carregada 1 OK

root @ master: ~ # named-checkconf -zp
root @ master: ~ # systemctl restart bind9.service
root @ master: ~ # systemctl status bind9.service

Bind9 verifica

root @ master: ~ # dig swl.fan axfr
root @ master: ~ # dig 10.168.192.in-addr.arpa axfr
root @ master: ~ # dig IN SOA swl.fan
root @ master: ~ # dig IN NS swl.fan
root @ master: ~ # dig IN MX swl.fan
root @ master: ~ # proxyweb host root @ master: ~ # nping --tcp -p 53 -c 3 localhost
root @ master: ~ # nping --udp -p 53 -c 3 localhost
root @ master: ~ # nping --tcp -p 53 -c 3 master.swl.fan
root @ master: ~ # nping --udp -p 53 -c 3 master.swl.fan
Iniciando Nping 0.6.47 ( http://nmap.org/nping ) em 2017-05-27 09:32 EDT SENT (0.0037s) UDP 192.168.10.5:53> 192.168.10.245:53 ttl = 64 id = 20743 iplen = 28 SENT (1.0044s) UDP 192.168.10.5:53> 192.168.10.245 .53: 64 ttl = 20743 id = 28 iplen = 2.0060 ENVIADO (192.168.10.5s) UDP 53:192.168.10.245> 53:64 ttl = 20743 id = 28 iplen = 3 Max rtt: N / A | Rtt mín .: N / A | Média rtt: N / A Pacotes brutos enviados: 84 (0B) | Rcvd: 0 (3B) | Perdido: 100.00 (1%) Nping concluído: 3.01 endereço IP com ping em XNUMX segundos 

servidor isc-dhcp

root @ master: ~ # aptitude install isc-dhcp-server
root @ master: ~ # nano / etc / default / isc-dhcp-server
# Em quais interfaces o servidor DHCP (dhcpd) deve atender às solicitações DHCP? # Separe várias interfaces com espaços, por exemplo, "eth0 eth1".
INTERFACES = "eth0"

root @ master: ~ # dnssec-keygen -a HMAC-MD5 -b 128 -r / dev / urandom -n USER dhcp-key
root @ master: ~ # cat Kdhcp-key. +157 + 51777.private 
Formato de chave privada: v1.3 Algoritmo: 157 (HMAC_MD5) Chave: Ba9GVadq4vOCixjPN94dCQ == Bits: AAA = Criado: 20170527133656 Publicar: 20170527133656 Ativar: 20170527133656

root @ master: ~ # nano dhcp.key
chave dhcp-chave {
        algoritmo hmac-md5;
        segredo "Ba9GVadq4vOCixjPN94dCQ == ";
}; root @ master: ~ # install -o root -g bind -m 0640 dhcp.key /etc/bind/dhcp.key root @ master: ~ # install -o root -g root -m 0640 dhcp.key / etc / dhcp /dhcp.key root @ master: ~ # nano /etc/bind/named.conf.local
incluem "/etc/bind/dhcp.key";

zona "swl.fan" {tipo mestre; arquivo "/var/lib/bind/db.swl.fan";
        allow-update {key dhcp-key; };
}; zona "10.168.192.in-addr.arpa" {tipo mestre; arquivo "/var/lib/bind/db.10.168.192.in-addr.arpa";
        allow-update {key dhcp-key; };
};

root @ master: ~ # named-checkconf

root @ master: ~ # mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.original
root @ master: ~ # nano /etc/dhcp/dhcpd.conf
provisório ddns-update-style; ddns-updates on; ddns-domainname "swl.fan."; ddns-rev-domainname "in-addr.arpa."; ignorar atualizações do cliente; otimização de atualização falsa; # Pode ser exigido no Debian autoritativo; opção ip-forwarding off; opção nome de domínio "swl.fan"; incluem "/etc/dhcp/dhcp.key"; zona swl.fan. {127.0.0.1 primário; chave dhcp-key; } zona 10.168.192.in-addr.arpa. {127.0.0.1 primário; chave dhcp-key; } redlocal de rede compartilhada {sub-rede 192.168.10.0 máscara de rede 255.255.255.0 {roteadores de opção 192.168.10.1; opção máscara de sub-rede 255.255.255.0; opção de endereço de transmissão 192.168.10.255; opção de servidores de nomes de domínio 192.168.10.5; opção netbios-name-servers 192.168.10.5; opção ntp-servers 192.168.10.5; opção de servidores de tempo 192.168.10.5; intervalo 192.168.10.30 192.168.10.250; }}

root @ master: ~ # dhcpd -t
Servidor DHCP do Internet Systems Consortium 4.3.1 Copyright 2004-2014 Internet Systems Consortium. Todos os direitos reservados. Para informações, visite https://www.isc.org/software/dhcp/
Arquivo de configuração: /etc/dhcp/dhcpd.conf Arquivo de banco de dados: /var/lib/dhcp/dhcpd.leases Arquivo PID: /var/run/dhcpd.pid

root @ master: ~ # systemctl restart bind9.service 
root @ master: ~ # systemctl status bind9.service 

root @ master: ~ # systemctl start isc-dhcp-server.service
root @ master: ~ # systemctl status isc-dhcp-server.service

ntp

root @ master: ~ # aptitude install ntp ntpdate
root @ master: ~ # cp /etc/ntp.conf /etc/ntp.conf.original
root @ master: ~ # nano /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift estatísticas loopstats peerstats clockstats filegen loopstats arquivo loopstats tipo dia habilitar filegen peerstats arquivo peerstats tipo dia habilitar filegen clockstats arquivo clockstats tipo dia habilitar servidor 192.168.10.1 restrito -4 padrão kod notrap nomodify nopeer noquery restrito -6 padrão kod notrap nomodify nopeer noquery restrito 127.0.0.1 restrito :: 1 transmissão 192.168.10.255

root @ master: ~ # systemctl restart ntp.service 
root @ master: ~ # systemctl status ntp.service
root @ master: ~ # ntpdate -u sysadmin.swl.fan
27 de maio 10:04:01 ntpdate [18769]: ajustar servidor de tempo 192.168.10.1 deslocamento de 0.369354 s

Verificações globais para ntp, bind9 e isc-dhcp-server

Em um cliente Linux, BSD, Mac OS ou Windows, verifique se a hora está sincronizada corretamente. Que ele adquira um endereço IP dinâmico e que o nome desse host seja resolvido por meio de consultas DNS diretas e reversas. Mude o nome do cliente e refaça todas as verificações. Não prossiga até ter certeza de que os serviços instalados até agora estão funcionando corretamente. Para algo, escrevemos todos os artigos sobre DNS e DHCP em Redes de computadores para PMEs.

Instalação do servidor NIS

root @ master: ~ # aptitude show nis
Conflitos com: netstd (<= 1.26) Descrição: clientes e daemons para o Network Information Service (NIS) Este pacote fornece ferramentas para configurar e manter um domínio NIS. O NIS, originalmente conhecido como Yellow Pages (YP), é usado principalmente para permitir que várias máquinas em uma rede compartilhem as mesmas informações de conta, como o arquivo de senha.

root @ master: ~ # aptitude install nis
Configuração do pacote ┌──────────────────────────── Configuração Nis ├───────────────────── ───────────┐ │ Escolha o "nome de domínio" NIS para este sistema. Se você deseja que │ │ esta máquina seja apenas um cliente, você deve inserir o nome do domínio NIS │ │ ao qual deseja ingressar. │ │ │ Alternativamente, se esta máquina for um servidor NIS, você pode │ │ inserir um novo "nome de domínio" NIS ou o nome de um domínio NIS │ │ existente. │ │ │ │ Domínio NIS: │ │ │ │ swl.fan __________________________________________________________________ │ │ │ │ │ │ │ └────────────────────────────────────────────────── ─────────────────────────────────┘  

Isso atrasará o seu porque a configuração do serviço não existe como tal. Por favor, espere o processo terminar.

root @ master: ~ # nano / etc / default / nis
# Somos um servidor NIS e se sim, de que tipo (valores: falso, escravo, mestre)?
NISSERVER = mestre

root @ master: ~ # nano /etc/ypserv.securenets # securenets Este arquivo define os direitos de acesso ao seu servidor NIS # para clientes NIS (e servidores escravos - ypxfrd também usa este arquivo). Este arquivo contém pares de máscara de rede / rede. # O endereço IP de um cliente precisa corresponder a pelo menos um # deles. # # Pode-se usar a palavra "host" em vez da máscara de rede # 255.255.255.255. Somente endereços IP são permitidos neste # arquivo, não nomes de host. # # Sempre permitir acesso para localhost 255.0.0.0 127.0.0.0 # Esta linha dá acesso a todos. AJUSTE POR FAVOR! # 0.0.0.0 0.0.0.0
255.255.255.0 192.168.10.0

root @ master: ~ # nano / var / yp / Makefile # Devemos mesclar o arquivo passwd com o arquivo shadow? # MERGE_PASSWD = true | false
MERGE_PASSWD = verdadeiro

# Devemos mesclar o arquivo de grupo com o arquivo gshadow? # MERGE_GROUP = true | false
MERGE_GROUP = true

Nós construímos o banco de dados NIS

root @ master: ~ # / usr / lib / yp / ypinit -m
Neste ponto, temos que construir uma lista dos hosts que irão rodar os servidores NIS. master.swl.fan está na lista de hosts do servidor NIS. Continue adicionando os nomes dos outros hosts, um por linha. Quando você terminar com a lista, digite um . próximo host a ser adicionado: master.swl.fan próximo host a ser adicionado: A lista atual de servidores NIS se parece com esta: master.swl.fan Isso está correto? [s / n: s] Precisamos de alguns minutos para construir os bancos de dados ... make [1]: Saindo do diretório '/var/yp/swl.fan' master.swl.fan foi configurado como um servidor mestre NIS . Agora você pode executar ypinit -s master.swl.fan em todos os servidores escravos.

root @ master: ~ # systemctl restart nis
root @ master: ~ # systemctl status nis

Nós adicionamos usuários locais

root @ master: ~ # adduser bilbo
Adicionando o usuário `bilbo '... Adicionando o novo grupo` bilbo' (1001) ... Adicionando o novo usuário` bilbo '(1001) com o grupo` bilbo' ... Criando o diretório home `/ home / bilbo ' ... Copiando arquivos de `/ etc / skel '... Digite a nova senha UNIX: Digite novamente a nova senha UNIX: passwd: senha atualizada corretamente Alterando as informações do usuário para bilbo Digite o novo valor, ou pressione ENTER para usar o Nome Completo padrão []: Número do Quarto Bilbo Bagins []: Telefone Comercial []: Telefone Residencial []: Outro []: A informação está correta? [S / n]

root @ master: ~ # adduser strides root @ master: ~ # adduser legolas

e assim por diante.

root @ master: ~ # dedo legolas
Login: legolas Nome: Legolas Archer Diretório: / home / legolas Shell: / bin / bash Nunca logou. Sem correio. Sem plano.

Nós atualizamos o banco de dados NIS

root @ master: / var / yp # make
make [1]: Entrando no diretório '/var/yp/swl.fan' Atualizando passwd.byname ... Atualizando passwd.byuid ... Atualizando group.byname ... Atualizando group.bygid ... Atualizando netid.byname. .. Atualizando shadow.byname ... Ignorado -> mesclado com passwd make [1]: Saindo do diretório '/var/yp/swl.fan'

Adicionamos opções de NIS ao isc-dhcp-server

root @ master: ~ # nano /etc/dhcp/dhcpd.conf
provisório ddns-update-style; ddns-updates on; ddns-domainname "swl.fan."; ddns-rev-domainname "in-addr.arpa."; ignorar atualizações do cliente; otimização de atualização falsa; autoritário; opção ip-forwarding off; opção nome de domínio "swl.fan"; incluem "/etc/dhcp/dhcp.key"; zona swl.fan. {127.0.0.1 primário; chave dhcp-key; } zona 10.168.192.in-addr.arpa. {127.0.0.1 primário; chave dhcp-key; } redlocal de rede compartilhada {sub-rede 192.168.10.0 máscara de rede 255.255.255.0 {roteadores de opção 192.168.10.1; opção máscara de sub-rede 255.255.255.0; opção de endereço de transmissão 192.168.10.255; opção de servidores de nomes de domínio 192.168.10.5; opção netbios-name-servers 192.168.10.5; opção ntp-servers 192.168.10.5; opção de servidores de tempo 192.168.10.5;
                opção nis-domain "swl.fan";
                opção nis-servers 192.168.10.5;
                intervalo 192.168.10.30 192.168.10.250; }}

root @ master: ~ # dhcpd -t
root @ master: ~ # systemctl restart isc-dhcp-server.service

Instalação do cliente NIS

  • Começamos com uma instalação limpa -sem interface gráfica- de um Debian 8 "Jessie".
root @ mail: ~ # hostname -f
mail.swl.fan

root @ mail: ~ # ip addr
2: eth0: mtu 1500 qdisc pfifo_fast estado UP grupo padrão qlen 1000 link / éter 00: 0c: 29: 25: 1f: 54 brd ff: ff: ff: ff: ff: ff
    inet 192.168.10.9/24 brd 192.168.10.255 escopo global eth0

root @ mail: ~ # instalação do aptitude nis
root @ mail: ~ # nano /etc/yp.conf # # yp.conf Arquivo de configuração para o processo ypbind. Você pode definir # servidores NIS manualmente aqui se eles não puderem ser encontrados # transmitindo na rede local (que é o padrão). # # Veja a página de manual do ypbind para a sintaxe deste arquivo. # # IMPORTANTE: Para o "ypserver", use endereços IP ou certifique-se de que # o host está em / etc / hosts. Este arquivo é interpretado apenas # uma vez, e se o DNS ainda não estiver acessível, o ypserver não pode ser # resolvido e o ypbind nunca se ligará ao servidor. # ypserver ypserver.network.com ypserver master.swl.fan domain swl.fan

root @ mail: ~ # nano /etc/nsswitch.conf
# /etc/nsswitch.conf # # Exemplo de configuração da funcionalidade GNU Name Service Switch. # Se você tiver os pacotes `glibc-doc-reference 'e` info' instalados, tente: # `info libc" Name Service Switch "'para obter informações sobre este arquivo. passwd: grupo compat nis: sombra compat nis: compat nis gshadow: arquivos hosts: arquivos dns nis redes: arquivos protocolos: arquivos db serviços: arquivos db ethers: arquivos db rpc: arquivos db netgroup: nis

root @ mail: ~ # nano /etc/pam.d/common-session
# pam-auth-update (8) para obter detalhes.
sessão opcional pam_mkhomedir.so skel = / etc / skel umask = 077
# aqui estão os módulos por pacote (o bloco "Primário")

root @ mail: ~ # systemctl status nis
root @ mail: ~ # systemctl restart nis

Fechamos a sessão e a iniciamos novamente, mas com um usuário registrado no banco de dados NIS em mestre.swl.fan.

root @ mail: ~ # exit
logout Conexão com e-mail fechada.

buzz @ sysadmin: ~ $ ssh legolas @ mail
Senha de legolas @ mail: Criando diretório '/ home / legolas'. Os programas incluídos no sistema Debian GNU / Linux são softwares livres; os termos de distribuição exatos para cada programa são descritos nos arquivos individuais em / usr / share / doc / * / copyright. O Debian GNU / Linux vem ABSOLUTAMENTE NENHUMA GARANTIA, até o limite permitido pela lei aplicável.
legolas @ mail: ~ $ pwd
/ home / legolas
legolas @ mail: ~ $ 

Mudamos a senha do usuário legolas e verificamos

legolas @ mail: ~ $ yppasswd 
Alteração das informações da conta NIS para legolas em master.swl.fan. Insira a senha antiga: legolas Alterando a senha NIS para legolas em master.swl.fan. Insira a nova senha: archer A senha deve conter letras maiúsculas e minúsculas ou não. Digite a nova senha: Arquero2017 Digite a nova senha novamente: Arquero2017 A senha NIS foi alterada em master.swl.fan.

legolas @ mail: ~ $ exit
logout Conexão com e-mail fechada.

buzz @ sysadmin: ~ $ ssh legolas @ mail
senha de legolas @ mail: Arquero2017

Os programas incluídos no sistema Debian GNU / Linux são softwares livres; os termos de distribuição exatos para cada programa são descritos nos arquivos individuais em / usr / share / doc / * / copyright. O Debian GNU / Linux vem ABSOLUTAMENTE NENHUMA GARANTIA, até o limite permitido pela lei aplicável. Último login: Sábado, 27 de maio, 12:51:50 2017 de sysadmin.swl.fan
legolas @ mail: ~ $

O serviço NIS implementado no nível do servidor e do cliente funciona corretamente.

LDAP

Da Wikipedia:

  • LDAP é a sigla para Lightweight Directory Access Protocol (em espanhol Lightweight Directory Access Protocol) que se refere a um protocolo de nível de aplicativo que permite o acesso a um serviço de diretório ordenado e distribuído para pesquisar várias informações em um ambiente rede. O LDAP também é considerado um banco de dados (embora seu sistema de armazenamento possa ser diferente) que pode ser consultado.Um diretório é um conjunto de objetos com atributos organizados de forma lógica e hierárquica. O exemplo mais comum é a lista telefônica, que consiste em uma série de nomes (pessoas ou organizações) que são organizados em ordem alfabética, com cada nome tendo um endereço e um número de telefone anexado a ele. Para entender melhor, é um livro ou pasta, no qual estão escritos os nomes, números de telefone e endereços das pessoas, e está organizado em ordem alfabética.

    Uma árvore de diretório LDAP às vezes reflete vários limites políticos, geográficos ou organizacionais, dependendo do modelo escolhido. As implantações atuais do LDAP tendem a usar nomes de DNS (Domain Name System) para estruturar os níveis mais altos da hierarquia. Conforme você rola a lista para baixo, as entradas podem aparecer representando pessoas, unidades organizacionais, impressoras, documentos, grupos de pessoas ou qualquer coisa que represente uma determinada entrada na árvore (ou várias entradas).

    Normalmente, ele armazena informações de autenticação (usuário e senha) e é usado para autenticar, embora seja possível armazenar outras informações (dados de contato do usuário, localização de vários recursos de rede, permissões, certificados, etc.). Em resumo, o LDAP é um protocolo de acesso unificado a um conjunto de informações em uma rede.

    A versão atual é LDAPv3 e é definida nos RFCs RFC 2251 e RFC 2256 (documento base LDAP), RFC 2829 (método de autenticação para LDAP), RFC 2830 (extensão para TLS) e RFC 3377 (especificação técnica)

    .

Por muito, o protocolo LDAP - e seus bancos de dados compatíveis ou não com OpenLDAP - é o mais utilizado na maioria dos sistemas de autenticação atualmente. Como exemplo da afirmação anterior, damos a seguir alguns nomes de sistemas -Livre ou Privado- que usam bancos de dados LDAP como backend para armazenar todos os seus objetos:

  • OpenLDAP
  • Servidor de diretório Apache
  • Servidor Red Hat Directory - 389 DS
  • Novell Directory Services - eDirectory
  • SUN Microsystems Open DS
  • Gerenciador de Identidade da Red Hat
  • IPA grátis
  • Controlador de domínio Samba NT4 Classic.
    Queremos esclarecer que este sistema foi um desenvolvimento do Team Samba com Samba 3.xxx + OpenLDAP como backend. A Microsoft nunca implementou nada parecido. Saltou de controladores de domínio NT 4 para seus diretórios ativos
  • Samba 4 Active Directory - Controlador de Domínio
  • ClearOS
  • zentyal
  • Servidor Corporativo UCS Uninvention
  • Microsoft Active Directory

Cada implementação tem suas próprias características, e a mais padronizada e compatível é a OpenLDAP.

O Active Directory, seja o original da Microsoft ou do Samba 4, constitui uma união de vários componentes principais que são:

Não devemos confundir um Serviço de Diretório o Serviço de diretório com um Active Directory o Active Directory. Os primeiros podem hospedar ou não a autenticação Kerberos, mas não oferecem o serviço Microsoft Network fornecido por um domínio do Windows, nem possuem um controlador de domínio do Windows como tal.

Um serviço de diretório ou serviço de diretório pode ser usado para autenticar usuários em uma rede mista com clientes UNIX / Linux e Windows. Para este último, deve ser instalado um programa em cada cliente que atue como intermediário entre o Directory Service e o próprio cliente Windows, como o Software Livre. página.

Serviço de diretório com OpenLDAP

  • Começamos com uma instalação limpa -sem interface gráfica- de um Debian 8 "Jessie", com o mesmo nome de máquina "master" usado para a instalação do NIS, bem como a configuração de sua interface de rede e o arquivo /etc/resolv.conf. Neste novo servidor instalamos o ntp, bind9 e isc-dhcp-server, sem esquecer as verificações globais do correcto funcionamento dos três serviços anteriores.
root @ master: ~ # aptitude install slapd ldap-utils

Configuração do pacote

┌───────────────────────┤ Configuração Slapd ├───────────────────────┐ │ Digite a senha para a entrada de administrador do diretório LDAP │ │. │ │ │ │ Senha do administrador: │ │ │ │ ******** _________________________________________________________ │ │ │ │ │ │ │ └───────────────────────────────────────────────── ───────────────────────┘

Nós verificamos a configuração inicial

root @ master: ~ # slapcat
dn: dc = swl, dc = ventilador
objectClass: top objectClass: dcObject objectClass: organization o: swl.fan dc: swl structureObjectClass: organization entryUUID: c8510708-da8e-1036-8fe1-71d022a16904 creatorsName: cn = admin, dc = swl, dc = organization entryUUID: c20170531205219-da20170531205219.833955e-000000-000fe000000-20170531205219dXNUMXaXNUMX creatorsName: cn = admin, dc = swl, dc = organization entryUUID: cXNUMX-daXNUMXe-XNUMX-XNUMXfeXNUMX-XNUMXdXNUMXaXNUMX creatorsName: cn = admin, dc = swl, dc = entrada createTimestampXNUMX XNUMXNXNUMX: XNUMX fanZXNUMXNXNUMX fanZXNUMX: XNUMX fanZXNUMX XNUMX fanZXNUMXNXNUMX fanZXNUMX do fanZXNUMX: XNUMX XNUMX XNUMX fanZXNUMX do fanZXNUMX; Z # XNUMX # XNUMX # XNUMX modificadores Nome: cn = admin, dc = swl, dc = fan modifyTimestamp: XNUMXZ

dn: cn = admin, dc = swl, dc = ventilador
objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin Descrição: LDAP administrador senhaUsuario :: e1NTSEF9emJNSFU1R3l2OWVEN0pmTmlYOVhKSUF4ekY1bU9YQXc = structuralObjectClass: organizationalRole entryUUID: c851178e-da8fe1036e-entrySw8d-2-dm71c-022-entrySw16904e-da20170531205219fe-20170531205219.834422-entrada-000000-fancimes-c000emp000000a20170531205219-entrySwXNUMX-cXNUMXempXNUMXeXNUMXpmTmlYOVhKSUXNUMX-entrada-XNUMXc-XNUMX-F-XNUMX-entrada-XNUMXc-XNUMX-f-C-F-XNUMX-entrada-XNUMX-cXNUMX-daXNUMXfe-XNUMX-entrada-XNUMX-fancimes-entrada-XNUMX-entrada-L-f-r-ole-entrada: XNUMXZ # XNUMX # XNUMX # XNUMX modificadoresNome: cn = admin, dc = swl, dc = fan modifyTimestamp: XNUMXZ

Modificamos o arquivo /etc/ldap/ldap.conf

root @ master: ~ # nano /etc/ldap/ldap.conf
BASE dc = swl, dc = fan URI    ldap: // localhost

Unidades organizacionais e grupo geral «usuários»

Adicionamos as Unidades Organizacionais mínimas necessárias, bem como o grupo Posix «usuários» ao qual faremos todos os usuários membros, seguindo o exemplo de muitos sistemas que possuem o grupo «usuários«. Denominamo-lo com o nome de «usuários» para não entrar em possíveis conflitos com o grupo «usuário" do sistema.

root @ master: ~ # nano base.ldif
dn: ou = people, dc = swl, dc = fan objectClass: organizationUnit ou: people dn: ou = groups, dc = swl, dc = fan objectClass: organizationUnit ou: groups dn: cn = users, ou = groups, dc = swl, dc = fan objectClass: posixGroup cn: users gidNumber: 10000

root @ master: ~ # ldapadd -x -D cn = admin, dc = swl, dc = fan -W -f base.ldif
Digite a senha do LDAP: adicionando uma nova entrada "ou = people, dc = swl, dc = fan" adicionando uma nova entrada "ou = groups, dc = swl, dc = fan"

Nós verificamos as entradas adicionadas

root @ master: ~ # ldapsearch -x ou = people
# people, swl.fan dn: ou = people, dc = swl, dc = fan objectClass: organizationUnit ou: people

root @ master: ~ # ldapsearch -x ou = groups
# groups, swl.fan dn: ou = groups, dc = swl, dc = fan objectClass: organizationUnit ou: groups

root @ master: ~ # ldapsearch -x cn = users
# users, groups, swl.fan dn: cn = users, ou = groups, dc = swl, dc = fan objectClass: posixGroup cn: users gidNumber: 10000

Nós adicionamos vários usuários

A senha que devemos declarar no LDAP deve ser obtida através do comando tappasswd, que retorna uma senha SSHA criptografada.

Senha para os passos do usuário:

root @ master: ~ # slappasswd 
Nova senha: Digite novamente a nova senha: 
{SSHA}Fn8Juihsr137u8KnxGTNPmnV8ai//0lp

Senha para o usuário legolas

root @ master: ~ # slappasswd 
Nova senha: Digite novamente a nova senha: 
{SSHA}rC50/W3kBmmDd+8+0Lz70vkGEu34tXmD

Senha para o usuário gandalf

root @ master: ~ # slappasswd 
Nova senha: Digite novamente a nova senha: 
{SSHA} oIVFelqv8WIxJ40r12lnh3bp + SXGbV + u

root @ master: ~ # nano users.ldif
dn: uid = strides, ou = people, dc = swl, dc = fan objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: strides cn: strides givenName: Strides sn: El Rey userPassword: {SSHA}Fn8Juihsr137u8KnxGTNPmnV8ai//0lp
uidNumber: 10000 gidNumber: 10000 mail: striders@swl.fan
gecos: Strider El Rey loginShell: / bin / bash homeDirectory: / home / strider dn: uid = legolas, ou = people, dc = swl, dc = fan objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: legolas cn: legolas givenName : Legolas sn: Archer userPassword: {SSHA}rC50/W3kBmmDd+8+0Lz70vkGEu34tXmD
uidNumber: 10001 gidNumber: 10000 mail: legolas@swl.fan
gecos: Legolas Archer loginShell: / bin / bash homeDirectory: / home / legolas dn: uid = gandalf, ou = people, dc = swl, dc = fan objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: gandalf cn: gandalf givenName: Gandalf sn: O assistente userPassword: {SSHA} oIVFelqv8WIxJ40r12lnh3bp + SXGbV + u
uidNumber: 10002 gidNumber: 10000 mail: gandalf@swl.fan
gecos: Gandalf O assistente loginShell: / bin / bash homeDirectory: / home / gandalf

root @ master: ~ # ldapadd -x -D cn = admin, dc = swl, dc = fan -W -f users.ldif
Digite a senha do LDAP: adicionando nova entrada "uid = strides, ou = people, dc = swl, dc = fan" adicionando nova entrada "uid = legolas, ou = people, dc = swl, dc = fan" adicionando nova entrada "uid = gandalf, ou = people, dc = swl, dc = fan "

Nós verificamos as entradas adicionadas

root @ master: ~ # ldapsearch -x cn = strides
root @ master: ~ # ldapsearch -x uid = strides

Gerenciamos o banco de dados slpad com utilitários de console

Nós selecionamos o pacote ldapscripts para tal tarefa. O procedimento de instalação e configuração é o seguinte:

root @ master: ~ # aptitude install ldapscripts
 
root @ master: ~ # mv /etc/ldapscripts/ldapscripts.conf \
/etc/ldapscripts/ldapscripts.conf.original
 
root @ master: ~ # nano /etc/ldapscripts/ldapscripts.conf
SERVER = localhost BINDDN = 'cn = admin, dc = swl, dc = fan' BINDPWDFILE = "/ etc / ldapscripts / ldapscripts.passwd" SUFFIX = 'dc = swl, dc = fan' GSUFFIX = 'ou = grupos' USUFFIX = 'ou = pessoas' # MSUFFIX = 'ou = Computadores' GIDSTART = 10001 UIDSTART = 10003 # MIDSTART = 10000 # Comandos do cliente OpenLDAP LDAPSEARCHBIN = "/ usr / bin / ldapsearch" LDAPADDBIN = "/ usr / bin / ldapadd" LDAPDELETEBIN = " / usr / bin / ldapdelete "LDAPMODIFYBIN =" / usr / bin / ldapmodify "LDAPMODRDNBIN =" / usr / bin / ldapmodrdn "LDAPPASSWDBIN =" / usr / bin / ldappasswd "GCLASS =" posixGroup "# UTEMPLATE =" / etc /ldapadduser.template "PASSWORDGEN =" echo% u "

Observe que os scripts usam os comandos do pacote LDAP-utils. Corre dpkg -L ldap-utils | grep / bin para saber o que são.

root @ master: ~ # sh -c "echo -n 'admin-senha'> \
/etc/ldapscripts/ldapscripts.passwd "
 
root @ master: ~ # chmod 400 /etc/ldapscripts/ldapscripts.passwd
 
root @ master: ~ # cp /usr/share/doc/ldapscripts/examples/ldapadduser.template.sample \
/etc/ldapscripts/ldapdduser.template
 
root @ master: ~ # nano /etc/ldapscripts/ldapadduser.template
dn: uid = , , objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: cn: nome dado: sn: Nome em Exibição: uidNumber: gidNumber: 10000 homeDirectory: loginShell: enviar: @ swl.fan geckos: descrição: Conta de usuário
 
root @ master: ~ # nano /etc/ldapscripts/ldapscripts.conf
## removemos o comentário UTEMPLATE = "/ etc / ldapscripts / ldapadduser.template"

Adicionamos o usuário "bilbo" e o tornamos membro do grupo "usuários"

root @ master: ~ # ldapadduser usuários bilbo
[dn: uid = bilbo, ou = people, dc = swl, dc = fan] Insira o valor para "givenName": Bilbo [dn: uid = bilbo, ou = people, dc = swl, dc = fan] Insira o valor para " sn ": Bagins [dn: uid = bilbo, ou = people, dc = swl, dc = fan] Insira o valor para" displayName ": Bilbo Bagins Usuário bilbo adicionado com sucesso ao LDAP Definido com sucesso a senha para o usuário bilbo

root @ master: ~ # ldapsearch -x uid = bilbo
# bilbo, pessoas, swl.fan dn: uid = bilbo, ou = pessoas, dc = swl, dc = fan objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: bilbo cn: bilbo givenName: Bilbo sn: Bagins displayName: Bilbo Bagins uidNumber: 10003 gidNumber: 10000 homeDirectory: / home / bilbo loginShell: / bin / bash mail: bilbo@swl.fan
gecos: bilbo description: Conta de usuário

Para ver o hash da senha do usuário bilbo, é necessário realizar a consulta com autenticação:

root @ master: ~ # ldapsearch -x -D cn = admin, dc = swl, dc = fan -W uid = bilbo

Para excluir o usuário bilbo, executamos:

root @ master: ~ # ldapdelete -x -D cn = admin, dc = swl, dc = fan -W uid = bilbo, ou = people, dc = swl, dc = fan
Digite a senha do LDAP:

root @ master: ~ # ldapsearch -x uid = bilbo

Gerenciamos o banco de dados slapd através de uma interface web

Temos um serviço de diretório funcional e queremos gerenciá-lo com mais facilidade. Existem muitos programas projetados para essa tarefa, como o phpldapadmin, gerenciador de contas ldap, etc., que estão disponíveis diretamente nos repositórios. Também podemos gerenciar um serviço de diretório por meio do Estúdio de diretório Apache, que devemos baixar da Internet.

Para mais informações por favor visite https://blog.desdelinux.net/ldap-introduccion/, e os 6 artigos seguintes.

Cliente ldap

Cenário:

Digamos que temos a equipe mail.swl.fan como um servidor de e-mail implementado como vimos no artigo Postfix + Dovecot + Squirrelmail e usuários locais, que embora desenvolvido em CentOS, pode muito bem servir como um guia para Debian e muitas outras distros Linux. Queremos que, além dos usuários locais que já declaramos, os usuários armazenados no banco de dados OpenLDAP existente em mestre.swl.fan. Para conseguir isso, devemos «mapear»Para usuários LDAP como usuários locais no servidor mail.swl.fan. Esta solução também é válida para qualquer serviço baseado na autenticação PAM. O procedimento geral para Debian, é o seguinte:

root @ mail: ~ # aptitude install libnss-ldap libpam-ldap ldap-utils

  ┌───────────────────────┤ Configuração de libnss-ldap ├────────────────────────┐ │ Insira o URI (“Uniform Resource Identifier” ou │ │ Uniform Resource Identifier) ​​do servidor LDAP. Esta string é semelhante a │ │ «ldap: //: / ». Você também pode │ │ usar «ldaps: // » ou "ldapi: //". O número da porta é opcional. │ │ │ │ É recomendável usar um endereço IP para evitar falhas quando os serviços de nome de domínio não estiverem disponíveis. │ │ │ │ URI do servidor LDAP: │ │ │ │ ldap: //master.swl.fan__________________________________________________ │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────── ──────────────────────────────┘ ┌───────────────────────── ┤ Configuração de libnss-ldap ├─────────────────────────┐ │ Insira o nome distinto (DN) da base de pesquisa LDAP. Muitos sites usam os componentes de nome de domínio para esse fim. Por exemplo, o domínio "example.net" usaria │ │ "dc = example, dc = net" como o nome distinto da base de pesquisa. │ │ │ │ O nome distinto (DN) da base de pesquisa: │ │ │ │ dc = swl, dc = fan ____________________________________________________________ │ │ │ │ │ │ │ └────────────────────────────────────────────────── ────────────────────────────────┘ ┌───────────────────── ──┤ Configuração de libnss-ldap ├─────────────────────────┐ │ Insira a versão do protocolo LDAP que o ldapns deve usar. É │ │ recomendado usar o número de versão mais alto disponível. │ │ │ │ Versão do LDAP a ser usada: │ │ │ │                                     3                                     │ │ 2 │ │ │ │ │ │ │ │ │ └────────────────────────────────────────────────── ────────────────────────────────┘ ┌───────────────────── ──┤ Configuração de libnss-ldap ├────────────────────────┐ │ Escolha qual conta será usada para consultas nss com privilégios de root │ │. │ │ │ │ Nota: Para esta opção funcionar, a conta precisa de permissões para │ that ser capaz de acessar os atributos LDAP que estão associados às entradas "sombra" do usuário │ │, bem como as senhas dos usuários e │ │ grupos . │ │ │ │ Conta LDAP para root: │ │ │ │ cn = admin, dc = swl, dc = fan ___________________________________________________ │ │ │ │ │ │ │ └────────────────────────────────────────────────── ────────────────────────────────┘ ┌───────────────────── ──┤ Configuração de libnss-ldap ├─────────────────────────────────── Digite a senha a ser usada quando libnss-ldap tenta autenticar no diretório LDAP com a conta LDAP raiz. │ │ │ │ A senha será salva em um arquivo separado │ │ ("/etc/libnss-ldap.secret") que apenas o root pode acessar. │ │ │ │ Se você inserir uma senha vazia, a senha antiga será reutilizada. │ │ │ │ Senha para a conta LDAP raiz: │ │ │ │ ******** ________________________________________________________________ │ │ │ │ │ │ │ └────────────────────────────────────────────────── ───────────────────────────────┘ ┌──────────────────────── ─┤ Configuração de libnss-ldap ├─────────────────────────┐ │ │ │ nsswitch.conf não é gerenciado automaticamente │ │ │ │ Você deve modificar seu arquivo "/etc/nsswitch.conf" para usar uma fonte de dados LDAP se quiser que o pacote libnss-ldap funcione. │ │ Você pode usar o arquivo de amostra │ │ em "/usr/share/doc/libnss-ldap/examples/nsswitch.ldap" como um exemplo da configuração do nsswitch ou │ │ você pode copiá-lo sobre sua configuração atual. │ │ │ │ Note que antes de remover este pacote pode ser conveniente │ │ remover as entradas "ldap" do arquivo nsswitch.conf para que os serviços básicos │ │ continuem a funcionar. │ │ │ │ │ │ │ └────────────────────────────────────────────────── ────────────────────────────────┘ ┌───────────────────── ──┤ Configuração de libpam-ldap ├────────────────────────┐ │ │ │ Esta opção permite que as ferramentas de senha que usam o PAM alterem as senhas locais. │ │ │ │ A senha da conta do administrador LDAP será armazenada em um arquivo │ │ separado que só pode ser lido pelo administrador. │ │ │ │ Esta opção deve ser desativada, se montar "/ etc" via NFS. │ │ │ │ Deseja permitir que a conta de administrador LDAP se comporte como │ │ o administrador local? │ │ │ │                                            │ │ │ └────────────────────────────────────────────────── ────────────────────────────────┘ ┌───────────────────── ──┤ Configuração de libpam-ldap ├────────────────────────── │ │ │ Escolha se o servidor LDAP força a identificação antes de obter entradas │ entradas. │ │ │ │ Esta configuração raramente é necessária. │ │ │ │ É necessário que um usuário acesse o banco de dados LDAP? │ │ │ │                                               │ │ │ └────────────────────────────────────────────────── ────────────────────────────────┘ ┌───────────────────── ──┤ Configuração de libpam-ldap ├─────────────────────────┐ │ Digite o nome da conta do administrador LDAP. │ │ │ │ Esta conta será usada automaticamente para o gerenciamento do banco de dados │ │, portanto, deve ter os privilégios administrativos apropriados. │ │ │ │ Conta de administrador LDAP: │ │ │ │ cn = admin, dc = swl, dc = fan ___________________________________________________ │ │ │ │ │ │ │ └────────────────────────────────────────────────── ────────────────────────────────┘ ┌───────────────────── ──┤ Configuração de libpam-ldap ├────────────────────────┐ │ Digite a senha da conta de administrador. │ │ │ │ A senha será salva no arquivo "/etc/pam_ldap.secret". O administrador do │ │ será o único que pode ler este arquivo e permitirá que o │ │ libpam-ldap controle automaticamente o gerenciamento de conexões no banco de dados do │ │. │ │ │ │ Se você deixar este campo em branco, a senha salva anteriormente │ │ será usada novamente. │ │ │ │ Senha do administrador LDAP: │ │ │ │ ******** _________________________________________________________________ │ │ │ │ │ │ │ └────────────────────────────────────────────────── ─────────────────────────────────┘  

root @ mail: ~ # nano /etc/nsswitch.conf
# /etc/nsswitch.conf # # Exemplo de configuração da funcionalidade GNU Name Service Switch. # Se você tiver os pacotes `glibc-doc-reference 'e` info' instalados, tente: # `info libc" Name Service Switch "'para obter informações sobre este arquivo. passwd: compat ldap
grupo: compat ldap
sombra: compat ldap
gshadow: arquivos hosts: arquivos dns redes: arquivos protocolos: arquivos db serviços: arquivos db ethers: arquivos db rpc: arquivos db netgroup: nis

Vamos editar o arquivo /etc/pam.d/common-password, vamos para a linha 26 e eliminamos o valor «use_authtok":

root @ mail: ~ # nano /etc/pam.d/common-password
# # /etc/pam.d/common-password - módulos relacionados à senha comuns a todos os serviços # # Este arquivo é incluído de outros arquivos de configuração PAM específicos de serviço, # e deve conter uma lista de módulos que definem os serviços a serem # usado para alterar as senhas do usuário. O padrão é pam_unix. # Explicação das opções de pam_unix: # # A opção "sha512" ativa senhas SHA512 com salt. Sem esta opção, # o padrão é a cripta Unix. As versões anteriores usavam a opção "md5". # # A opção "obscuro" substitui a antiga opção `OBSCURE_CHECKS_ENAB 'em # login.defs. # # Veja a página de manual de pam_unix para outras opções. # A partir do pam 1.0.1-6, este arquivo é gerenciado por pam-auth-update por padrão. # Para tirar vantagem disso, é recomendado que você configure quaisquer # módulos locais antes ou depois do bloco padrão e use # pam-auth-update para gerenciar a seleção de outros módulos. Consulte # pam-auth-update (8) para obter detalhes. # aqui estão os módulos por pacote (o bloco "Primário") senha [sucesso = 2 default = ignorar] pam_unix.so obscure sha512
senha [sucesso = 1 user_unknown = ignorar default = morrer] pam_ldap.so try_first_pass
# aqui está o fallback se nenhum módulo obtiver sucesso com o requisito de senha pam_deny.so # preparar a pilha com um valor de retorno positivo se ainda não houver um; # isso evita que retornemos um erro apenas porque nada define um código de sucesso # já que os módulos acima irão, cada um, apenas ignorar a senha exigida pam_permit.so # e aqui estão mais módulos por pacote (o bloco "Adicional") # fim de pam- auth-update config

Caso necessitemos o login local dos usuários armazenados no LDAP, e queremos que suas pastas sejam criadas automaticamente Início, devemos editar o arquivo /etc/pam.d/common-session e adicione a seguinte linha ao final do arquivo:

sessão opcional pam_mkhomedir.so skel = / etc / skel umask = 077

No exemplo do OpenLDAP Directory Service desenvolvido anteriormente, o único usuário local criado foi o usuário zumbido, enquanto no LDAP criamos os usuários passos largos, Legolas, gandalfe Bilbo. Se as configurações feitas até agora estiverem corretas, devemos ser capazes de listar os usuários locais e aqueles mapeados como locais, mas armazenados no servidor LDAP remoto:

root @ mail: ~ # getent passwd 
buzz: x: 1001: 1001: Buzz Debian First OS ,,,: / home / buzz: / bin / bash
Strides: x: 10000: 10000: Strides El Rey: / home / strides: / bin / bash
legolas: x: 10001: 10000: Legolas Archer: / home / legolas: / bin / bash
gandalf: x: 10002: 10000: Gandalf O Mago: / home / gandalf: / bin / bash
bilbo: x: 10003: 10000: bilbo: / home / bilbo: / bin / bash

Após as alterações na autenticação do sistema, é válido reiniciar o servidor caso contrário estaremos diante de um serviço crítico:

root @ mail: ~ # reboot

Mais tarde, iniciamos uma sessão local no servidor mail.swl.fan com as credenciais de um usuário armazenadas no banco de dados LDAP de mestre.swl.fan. Também podemos tentar fazer o login via SSH.

buzz @ sysadmin: ~ $ ssh gandalf @ mail
Senha de gandalf @ mail: Criando diretório '/ home / gandalf'. Os programas incluídos no sistema Debian GNU / Linux são softwares livres; os termos de distribuição exatos para cada programa são descritos nos arquivos individuais em / usr / share / doc / * / copyright. O Debian GNU / Linux vem ABSOLUTAMENTE NENHUMA GARANTIA, até o limite permitido pela lei aplicável.
gandalf @ mail: ~ $ su
password:

root @ mail: / home / gandalf # getent group
buzz: x: 1001: usuários: *: 10000:

root @ mail: / home / gandalf # exit
saída

gandalf @ mail: ~ $ ls -l / home /
total 8 drwxr-xr-x 2 zumbido zumbido     4096 17 de junho 12:25 buzz drwx ------ 2 usuários gandalf 4096 17 de junho 13:05 gandalf

O serviço de diretório implementado no nível do servidor e do cliente funciona corretamente.

Kerberos

Da Wikipedia:

  • Kerberos é um protocolo de autenticação de rede de computadores criado pelo MIT que permite que dois computadores em uma rede insegura provem com segurança sua identidade um ao outro. Seus designers se concentraram primeiro em um modelo cliente-servidor e fornecem autenticação mútua: tanto o cliente quanto o servidor verificam a identidade um do outro. As mensagens de autenticação são protegidas para prevenir espionagem y ataques de repetição.

    Kerberos é baseado em criptografia de chave simétrica e requer um terceiro confiável. Além disso, existem extensões do protocolo para permitir o uso de criptografia de chave assimétrica.

    Kerberos é baseado no Protocolo Needham-Schroeder. Ele usa um terceiro confiável, chamado de "Centro de distribuição de chaves" (KDC), que consiste em duas partes lógicas separadas: um "Servidor de autenticação" (AS ou Servidor de autenticação) e um "servidor de emissão de tickets" (TGS ou servidor de concessão de tickets). O Kerberos funciona com base em "tickets", que servem para comprovar a identidade dos usuários.

    Kerberos mantém um banco de dados de chaves secretas; Cada entidade na rede - seja cliente ou servidor - compartilha uma chave secreta conhecida apenas por ela mesma e pelo Kerberos. O conhecimento desta chave serve para comprovar a identidade da entidade. Para uma comunicação entre duas entidades, o Kerberos gera uma chave de sessão, que eles podem usar para proteger seus problemas.

Desvantagens do Kerberos

De Protegido:

A pesar de que Kerberos remove uma ameaça de segurança comum, pode ser difícil de implementar por vários motivos:

  • Migração de senhas de usuários de um banco de dados de senhas padrão UNIX, como / etc / passwd ou / etc / shadow, para um banco de dados de senha Kerberos, pode ser entediante e não existe um mecanismo rápido para realizar essa tarefa.
  • O Kerberos assume que cada usuário é confiável, mas está usando uma máquina não confiável em uma rede não confiável. Seu principal objetivo é evitar que senhas não criptografadas sejam enviadas pela rede. No entanto, se qualquer outro usuário, diferente do usuário apropriado, tiver acesso à máquina de bilhetes (KDC) para autenticação, o Kerberos estará em risco.
  • Para um aplicativo usar o Kerberos, o código deve ser modificado para fazer as chamadas apropriadas para as bibliotecas do Kerberos. Os aplicativos que são modificados dessa maneira são considerados kerberizados. Para alguns aplicativos, isso pode ser um esforço excessivo de programação, devido ao tamanho do aplicativo ou seu design. Para outros aplicativos incompatíveis, alterações devem ser feitas na maneira como o servidor de rede e seus clientes se comunicam; novamente, isso pode exigir um pouco de programação. Em geral, os aplicativos de código fechado que não têm suporte ao Kerberos são geralmente os mais problemáticos.
  • Finalmente, se você decidir usar o Kerberos em sua rede, você deve perceber que é uma escolha de tudo ou nada. Se você decidir usar o Kerberos em sua rede, deve se lembrar que, se alguma senha for passada para um serviço que não usa o Kerberos para autenticação, você corre o risco de o pacote ser interceptado. Portanto, sua rede não terá nenhum benefício com o uso do Kerberos. Para proteger sua rede com Kerberos, você deve usar apenas as versões kerberizadas de todos os aplicativos cliente / servidor que enviam senhas não criptografadas ou não usar nenhum desses aplicativos na rede.

Implementar e configurar manualmente o OpenLDAP como um back-end Kerberos não é uma tarefa fácil. Porém, posteriormente veremos que o Samba 4 Active Directory - Controlador de Domínio integra-se de forma transparente para o Sysadmin, um servidor DNS, a Rede Microsoft e seu Controlador de Domínio, servidor LDAP como Back-End de quase todos os seus objetos, e o serviço de autenticação baseado em Kerberos como os componentes fundamentais de um Active Directory estilo Microsoft.

Até agora não tivemos a necessidade de implementar uma "Rede Kerberizada". É por isso que não escrevemos sobre como implementar o Kerberos.

Samba 4 Active Directory - controlador de domínio

Importante:

Não há documentação melhor do que o site wiki.samba.org. O Sysadmin que se preze deve visitar esse site -em inglês- e navegar pelo grande número de páginas dedicadas inteiramente ao Samba 4, escritas pelo próprio Team Samba. Não creio que haja documentação disponível na Internet para substituí-lo. A propósito, observe o número de visitas refletido no final de cada página. Um exemplo disso é que sua página principal ou «Página principal» foi visitada 276,183 vezes até hoje, 20 de junho de 2017 às 10:10, horário padrão do leste dos EUA. Além disso, a documentação é mantida muito atualizada, visto que essa página foi modificada em 6 de junho.

Da Wikipedia:

O Samba é uma implementação gratuita do Protocolo de Compartilhamento de Arquivos do Microsoft Windows (anteriormente denominado SMB, recentemente renomeado CIFS) para sistemas semelhantes ao UNIX. Desta forma, é possível que computadores com GNU / Linux, Mac OS X ou Unix em geral se pareçam com servidores ou atuem como clientes em redes Windows. O Samba também permite validar usuários como um controlador de domínio primário (PDC), como um membro do domínio e até mesmo como um domínio do Active Directory para redes baseadas em Windows; além de ser capaz de servir filas de impressão, diretórios compartilhados e autenticar com seu próprio arquivo de usuário.

Entre os sistemas do tipo Unix nos quais o Samba pode ser executado estão as distribuições GNU / Linux, Solaris e as diferentes variantes do BSD entre os que podemos encontrar o Mac OS X Server da Apple.

Samba 4 AD-DC com seu DNS interno

  • Começamos com uma instalação limpa -sem interface gráfica- de um Debian 8 "Jessie".

Verificações iniciais

root @ master: ~ # hostname
dominar
root @ master: ~ # hostname --fqdn
mestre.swl.fan
root @ master: ~ # ip addr
1: o que: mtu 65536 qdisc noqueue state DESCONHECIDO grupo padrão link / loopback 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 :: 1/128 host de escopo valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast estado DESCONHECIDO grupo padrão qlen 1000 link / éter 00: 0c: 29: 80: 3b: 3f brd ff: ff: ff: ff: ff: ff
    inet 192.168.10.5/24 brd 192.168.10.255 escopo global eth0
       valid_lft forever preferred_lft forever inet6 fe80 :: 20c: 29ff: fe80: 3b3f / 64 scope link valid_lft forever preferred_lft forever
root @ master: ~ # cat /etc/resolv.conf
search swl.fan nameserver 127.0.0.1
  • Com o qual declaramos a filial principal apenas, é mais do que suficiente para nossos propósitos.
root @ master: ~ # cat /etc/apt/sources.list
deb http://192.168.10.1/repos/jessie-8.6/debian/ jessie principal
deb http://192.168.10.1/repos/jessie-8.6/debian/security/ jessie / updates principal

Postfix por Exim e utilitários

root @ master: ~ # aptitude install postfix htop mc deborphan

  ┌──────────────────────────── Configuração Postfix ├───────────────────────────────────────────── ────┐ │ Escolha o tipo de configuração de servidor de e-mail que melhor atende às suas necessidades │ │. │ │ │ │ Sem configuração: │ │ Mantém a configuração atual intacta. │ │ Site da Internet: │ │ O e-mail é enviado e recebido diretamente usando SMTP. │ │ Internet com "smarthost": │ │ O e-mail é recebido diretamente usando SMTP ou executando uma ferramenta │ │ como o "fetchmail". O correio de saída é enviado usando │ │ um "host inteligente". │ │ Correio local apenas: │ │ O único correio que é entregue é para usuários locais. Não │ │ há uma rede. │ │ │ │ Tipo genérico de configuração de e-mail: │ │ │ │ Sem configuração │ │ Site da Internet │ │ Internet com "smarthost" │ │ Sistema de satélite │ │                         Apenas correio local                                │ │ │ │ │ │                                     │ │ │ └───────────────────────────────────────────────── ───────────────────────────────┘ ┌─────────────────────── ─────┤ Configuração Postfix ├────────────────────────────┐ │ O "nome do sistema de correio" é o nome do domínio que │ │ é usado para "qualificar" _ALL_ endereços de e-mail sem um nome de domínio. Isso inclui e-mail de e para "root": por favor, não faça máquina │ sua máquina enviar e-mails root@exemplo.org para │ │ menos que root@exemplo.org Perguntou. │ │ │ │ Outros programas usarão este nome. Deve ser um nome de domínio │ │ qualificado (FQDN) exclusivo. │ │ │ │ Portanto, se um endereço de e-mail na máquina local for │ │ algo@exemplo.org, o valor correto para esta opção será example.org. │ │ │ │ Nome do sistema de correio: │ │ │ │ master.swl.fan ___________________________________________________________ │ │ │ │ │ │ │ └───────────────────────────────────────────────── ─────────────────────────────────┘  

Nós limpamos

root @ master: ~ # aptitude purge ~ c
root @ master: ~ # aptitude install -f
root @ master: ~ # aptitude clean
root @ master: ~ # aptitude autoclean

Instalamos requisitos para compilar o Samba 4 e outros pacotes necessários

root @ master: ~ # aptitude install acl attr autoconf bison \
build-essential debhelper dnsutils docbook-xml docbook-xsl flex gdb \
krb5-user libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \
libcap-dev libcups2-dev libgnutls28-dev libjson-perl \
libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl\
libpopt-dev libreadline-dev perl perl-modules pacote-config \
python-all-dev python-dev python-dnspython python-crypto\
xsltproc zlib1g -dev libgpgme11 -dev python -gpgme python -m2crypto \
libgnutls28-dbg gnutls-dev ldap-utils krb5-config

 ┌───────────────────┤ Configurando a autenticação Kerberos ├──────────────────┐ │ Quando os usuários tentam usar Kerberos e especificar um nome │ │ principal ou usuário sem esclarecer a qual domínio administrativo Kerberos o principal │ │ pertence, o sistema assume o domínio padrão │ │  O domínio padrão também pode ser usado como o domínio │ │ de um serviço Kerberos em execução na máquina local.  │ │ Normalmente, o realm padrão é o nome em maiúsculas do domínio DNS │ │ local.  │ │ │ │ Domínio padrão Kerberos versão 5: │ │ │ │ SWL.FAN __________________________________________________________________ │ │ │ │ │ │ │ └────────────────────────────────────────────────── ────────────────────────────────┘ ┌─────────────────────────────────── Configurando autenticação Kerberos ├────────────────┐ │ Insira os nomes dos servidores Kerberos no domínio SWL.FAN do │ │ Kerberos, separados por espaços.  │ │ │ │ Servidores Kerberos para o seu reino: │ │ │ │ master.swl.fan ___________________________________________________________ │ │ │ │ │ │ │ └────────────────────────────────────────────────── ────────────────────────────────┘ ┌──────────────────────────────────– Kerberos ├─────────────────┐ │ Insira o nome do servidor administrativo (alteração de senha) │ │ para o domínio SWL.FAN do Kerberos.   

O processo acima demorou um pouco porque não temos nenhum serviço DNS instalado ainda. No entanto, você escolheu o domínio corretamente pelas configurações do arquivo / Etc / hosts. Lembre-se que no arquivo / Etc / resolv.conf declaramos como um servidor de nome de domínio para o IP 127.0.0.1.

Agora configuramos o arquivo / etc / ldap / ldap / conf

root @ master: ~ # nano /etc/ldap/ldap.conf
BASE dc = swl, dc = fan URI ldap: //master.swl.fan

Para consultas usando o comando ldapsearch feitas a partir do usuário root são do tipo ldapsearch -x -W cn = xxxx, devemos criar o arquivo /root/.ldapsearch com o seguinte conteúdo:

root @ master: ~ # nano .ldaprc
BINDDN CN = Administrador, CN = Usuários, DC = swl, DC = ventilador

O sistema de arquivos deve suportar ACL - Lista de Controle de Acesso

root @ master: ~ # nano / etc / fstab
# / etc / fstab: informações estáticas do sistema de arquivos. # # Use 'blkid' para imprimir o identificador exclusivo universal para um # dispositivo; isso pode ser usado com UUID = como uma maneira mais robusta de nomear dispositivos # que funciona mesmo se os discos forem adicionados e removidos. Consulte fstab (5). # # # / estava em / dev / sda1 durante a instalação UUID = 33acb024-291b-4767-b6f4-cf207a71060c / ext4 user_xattr, acl, barreira = 1, noatime, erros = remount-ro 0 1
# swap estava em / dev / sda5 durante a instalação UUID = cb73228a-615d-4804-9877-3ec225e3ae32 nenhum swap sw 0 0 / dev / sr0 / media / cdrom0 udf, usuário iso9660, noauto 0 0

root @ master: ~ # mount -a

root @ master: ~ # touch testing_acl.txt
root @ master: ~ # setfattr -n user.test -v test testing_acl.txt
root @ master: ~ # setfattr -n security.test -v test2 testing_acl.txt
root @ master: ~ # getfattr -d testing_acl.txt
# file: testing_acl.txt user.test = "test"

root @ master: ~ # getfattr -n security.test -d testing_acl.txt
# file: testing_acl.txt security.test = "test2"

root @ master: ~ # setfacl -mg: adm: rwx testing_acl.txt

root @ master: ~ # getfacl testing_acl.txt
# file: testing_acl.txt # owner: root # group: root user :: rw- group :: r-- group: adm: rwx mask :: rwx other :: r--

Obtemos o código-fonte do Samba 4, compilamos e instalamos

É altamente recomendado baixar o arquivo fonte da versão Estável do site https://www.samba.org/. Em nosso exemplo, baixamos a versão samba-4.5.1.tar.gz em direção à pasta / opt.

root @ master: ~ # cd / opt
root @ master: / opt # wget https://download.samba.org/pub/samba/stable/samba-4.5.1.tar.gz
root @ master: / opt # tar xvfz samba-4.5.1.tar.gz
root @ master: / opt # cd samba-4.5.1 /

Opções de configuração

Se quisermos personalizar as opções de configuração, executamos:

root @ master: /opt/samba-4.5.1# ./configure --help

e selecione com muito cuidado aqueles de que precisamos. É aconselhável verificar se o pacote baixado pode ser instalado na distribuição Linux que estamos usando, que no nosso caso é o Debian 8.6 Jessie:

root @ master: /opt/samba-4.5.1# . / Configure desmarcar

Nós configuramos, compilamos e instalamos o samba-4.5.1

  • A partir dos requisitos previamente instalados e dos arquivos 8604 (que compõem o compacto samba-4.5.1.tar.gz) que pesam cerca de 101.7 megabytes -incluindo as pastas source3 e source4 que pesam cerca de 61.1 megabytes- obteremos um substituto para um Active Directory no estilo Microsoft, de qualidade e estabilidade mais do que aceitável para qualquer ambiente de produção. Devemos destacar o trabalho da Equipe Samba na entrega do Software Livre Samba 4.

Os comandos abaixo são clássicos para compilar e instalar pacotes de seus fontes. Devemos ser pacientes enquanto dura todo o processo. É a única maneira de obter resultados válidos e corretos.

root @ master: /opt/samba-4.5.1# ./configure --with-systemd --disable-copos
root @ master: /opt/samba-4.5.1# fazer
root @ master: /opt/samba-4.5.1# make install

Durante o processo de comando fazer, podemos ver que as fontes Samba 3 e Samba 4 são compiladas, por isso o Team Samba afirma que sua versão 4 é a atualização natural da versão 3, tanto para controladores de domínio baseados em Samba 3 + OpenLDAP, quanto servidores de arquivos ou versões anteriores do Samba 4.

Provisionando Samba

Usaremos como DNS o SAMBA_INTERNO. em https://wiki.samba.org/index.php?title=Samba_Internal_DNS_Back_End vamos encontrar mais informações. Quando nos pedirem a senha do usuário Administrador, devemos digitar uma de no mínimo 8 caracteres e também com letras - maiúsculas e minúsculas - e números.

Antes de prosseguir com o provisionamento e para facilitar a vida, adicionamos o caminho dos executáveis ​​Samba em nosso arquivo .bashrcEm seguida, fechamos e entramos novamente.

root @ master: ~ # nano .bashrc
# ~ / .bashrc: executado por bash (1) para shells sem login. # Nota: PS1 e umask já estão configurados em / etc / profile. Você não deve # precisar disso a menos que queira padrões diferentes para o root. # PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ h: \ w \ $' # umask 022 # Você pode descomentar as seguintes linhas se quiser que `ls 'seja colorido: # export LS_OPTIONS =' - color = auto '# eval "` dircolors` "# alias ls =' ls $ LS_OPTIONS '# alias ll =' ls $ LS_OPTIONS -l '# alias l =' ls $ LS_OPTIONS -lA '# # Mais alguns apelidos para evitar erros : # alias rm = 'rm -i' # alias cp = 'cp -i' # alias mv = 'mv -i'
declara -x PATH = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: \ / sbin: / bin: / usr / local / samba / sbin: / usr / local / samba / bin "

root @ master: ~ # exit logout Conexão com o master fechada. xeon @ sysadmin: ~ $ ssh root @ master

root @ master: ~ # provisão de domínio da ferramenta samba --use-rfc2307 --interactive
Reino [SWL.FAN]: SWL.FAN
 Domínio [SWL]: SWL
 Função do servidor (dc, membro, autônomo) [dc]: dc
 Back-end DNS (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: SAMBA_INTERNO
 Endereço IP do encaminhador DNS (escreva 'nenhum' para desativar o encaminhamento) [192.168.10.5]: 8.8.8.8
Senha do administrador: Sua Senha2017
Redigite a senha: Sua Senha2017
Procurando endereços IPv4 Procurando endereços IPv6 Nenhum endereço IPv6 será atribuído Setting up share.ldb Setting up secrets.ldb Configurando o registro Configurando o banco de dados de privilégios Configurando idmap db Configurando SAM db Configurando partições e configurações sam.ldb Setting up sam.ldb rootDSE Pré-carregando o esquema Samba 4 e AD Adicionando DomainDN: DC = swl, DC = fan Adicionando contêiner de configuração Configurando o esquema sam.ldb Configurando dados de configuração sam.ldb Configurando especificadores de exibição Modificando especificadores de exibição Adicionando contêiner de usuários Modificando o contêiner de usuários Adicionando o contêiner de computadores Modificando o contêiner de computadores Configurando dados sam.ldb Configurando princípios de segurança conhecidos Configurando usuários e grupos sam.ldb Configurando a autoinserção Adicionando contas DNS Criando CN = MicrosoftDNS, CN = Sistema, DC = swl, DC = fan Criando partições DomainDnsZones e ForestDnsZones Preenchendo partições DomainDnsZones e ForestDnsZones Configurando sam.ldb rootDSE marcando como sincronizado Fixing provision GUIDsUma configuração Kerberos adequada para Samba 4 foi gerada em /usr/local/samba/private/krb5.conf Definindo configurações de servidor yp falsas Assim que os arquivos acima forem instalados, seu servidor Samba4 estará pronto para usar Função do servidor: domínio do diretório ativo Nome do host do controlador: Domínio NetBIOS mestre: Domínio SWL DNS: swl.fan SID DO DOMÍNIO: S-1-5-21-32182636-2892912266-1582980556

Não vamos esquecer de copiar o arquivo de configuração Kerberos conforme indicado pela saída do Provisioning:

root @ master: ~ # cp /usr/local/samba/private/krb5.conf /etc/krb5.conf

Para não digitar o comando ferramenta de samba com seu nome completo, criamos um link simbólico com o nome curto ferramenta:

root @ master: ~ # ln -s / usr / local / samba / bin / samba-tool / usr / local / samba / bin / tool

Nós instalamos o NTP

Uma peça fundamental em um Active Directory é o Network Time Service. Como a autenticação é feita via Kerberos e seus Tickets, a sincronização da hora com o Samba 4 AD-DC é vital.

root @ master: ~ # aptitude install ntp
root @ master: ~ # mv /etc/ntp.conf /etc/ntp.conf.original

root @ master: ~ # nano /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift ntpsigndsocket / usr / local / samba / var / lib / ntp_signd estatísticas loopstats peerstats clockstats filegen loopstats arquivo loopstats tipo dia habilitar filegen peerstats arquivo peerstats tipo dia habilitar filegenstats arquivo clockstats relógio tipo dia habilitar servidor 192.168.10.1 restrito -4 padrão kod notrap nomodify nopeer noquery restrito -6 padrão kod notrap nomodify nopeer noquery restrito padrão mssntp restrição 127.0.0.1 restrição :: 1 transmissão 192.168.10.255

root @ master: ~ # service ntp restart
root @ master: ~ # status do serviço ntp

root @ master: ~ # tail -f / var / log / syslog

Se ao examinar o syslog usando o comando acima ou usando jornalctl -f nós entendemos a mensagem:

19 de junho 12:13:21 mestre ntpd_intres [1498]: pai morreu antes de terminarmos, saindo

devemos reiniciar o serviço e tentar novamente. Agora vamos criar a pasta ntp_signd:

root @ master: ~ # ls -ld / usr / local / samba / var / lib / ntp_signd
ls: / usr / local / samba / var / lib / ntp_signd não pode ser acessado: arquivo ou diretório não existe

root @ master: ~ # mkdir / usr / local / samba / var / lib / ntp_signd
root @ master: ~ # chown root: ntp / usr / local / samba / var / lib / ntp_signd /
root @ master: ~ # chmod 750 / usr / local / samba / var / lib / ntp_signd / root @ master: ~ # chmod gs, g + x / usr / local / samba / var / lib / ntp_signd /

# Conforme solicitado em samba.wiki.org
root @ master: ~ # ls -ld / usr / local / samba / var / lib / ntp_signd
drwxr-x --- 2 root ntp 4096 19 de junho 12:21 / usr / local / samba / var / lib / ntp_signd

Nós configuramos o Samba start using systemd

root @ master: ~ # nano /lib/systemd/system/samba-ad-dc.service
[Serviço] Tipo = bifurcação PIDFile = / usr / local / samba / var / run / samba.pid LimitNOFILE = 16384 # EnvironmentFile = - / etc / conf.d / samba ExecStart = / usr / local / samba / sbin / samba ExecReload = / usr / bin / kill -HUP $ MAINPID [Instalar] WantedBy = multi-user.target

root @ master: ~ # systemctl enable samba-ad-dc
root @ master: ~ # reboot

root @ master: ~ # systemctl status samba-ad-dc
root @ master: ~ # systemctl status ntp

Localizações de arquivos Samba 4 AD-DC

ALL -menos o samba-ad-dc.service recém-criado- os arquivos estão em:

root @ master: ~ # ls -l / usr / local / samba /
total de 32 drwxr-sr-x 2 root staff 4096 Jun 19 11:55 caixa
drwxr-sr-x 2 root staff 4096 Jun 19 11:50 etc.
drwxr-sr-x 7 root staff 4096 Jun 19 11:30 incluir
drwxr-sr-x 15 root staff 4096 Jun 19 11:33 lib
drwxr-sr-x 7 root staff 4096 Jun 19 12:40 privado
drwxr-sr-x 2 root staff 4096 Jun 19 11:33 sbin
drwxr-sr-x 5 root staff 4096 Jun 19 11:33 share
drwxr-sr-x 8 root staff 4096 Jun 19 12:28 var

no melhor estilo UNIX. É sempre aconselhável navegar pelas diferentes pastas e examinar seu conteúdo.

Arquivo /Usr/local/samba/etc/smb.conf

root @ master: ~ # nano /usr/local/samba/etc/smb.conf 
# Parâmetros globais [global] netbios name = domínio MASTER = SWL.FAN workgroup = SWL dns forwarder = 8.8.8.8 server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate , dns server role = active directory domain controller allow dns updates = secure only idmap_ldb: use rfc2307 = yes idmap config *: backend = tdb idmap config *: range = 1000000-1999999 servidor ldap requer autenticação forte = nenhum printcap name = / dev / null [netlogon] path = /usr/local/samba/var/locks/sysvol/swl.fan/scripts somente leitura = Não [sysvol] path = / usr / local / samba / var / locks / sysvol somente leitura = Não

root @ master: ~ # testparm
Carregue os arquivos de configuração smb de /usr/local/samba/etc/smb.conf Seção de processamento "[netlogon]" Seção de processamento "[sysvol]" Arquivo de serviços carregado OK. Função do servidor: ROLE_ACTIVE_DIRECTORY_DC Pressione Enter para ver um dump de suas definições de serviço # Parâmetros globais [global] realm = SWL.FAN workgroup = SWL dns forwarder = 192.168.10.1 servidor ldap requer autenticação forte = Sem backend passdb = função de servidor samba_dsdb = diretório ativo controlador de domínio rpc_server: tcpip = não rpc_daemon: spoolssd = rpc_server embutido: spoolss = rpc_server embutido: winreg = rpc_server embutido: ntsvcs = rpc_server embutido: eventlog = servidor rpc_server embutido RV_servidor_vcct = embutido uso rvcct = uso externo cct_server = rvcct_server embutido = uso rvcct externo tubos externos = true idmap config *: range = 1000000-1999999 idmap_ldb: use rfc2307 = yes idmap config *: backend = tdb map archive = No map readonly = no store dos atributos = Yes vfs objects = dfs_samba4 acl_xattr [netlogon] path = / usr / local / samba / var / locks / sysvol / swl.fan / scripts somente leitura = Não [sysvol] caminho = / usr / local / samba / var / locks / sysvol somente leitura = Não

Verificações mínimas

root @ master: ~ # ferramenta nível de domínio show
Nível de função de domínio e floresta para o domínio 'DC = swl, DC = fan' Nível de função de floresta: (Windows) 2008 R2 Nível de função de domínio: (Windows) 2008 R2 Nível de função mais baixo de um DC: (Windows) 2008 R2

root @ master: ~ # ldapsearch -x -W

root @ master: ~ # tool dbcheck
Verificando 262 objetos Verificados 262 objetos (0 erros)

root @ master: ~ # kinit Administrador
Senha para Administrador@SWL.FAN: 
root @ master: ~ # klist -f
Cache de ingressos: ARQUIVO: / tmp / krb5cc_0
Padrão primário: Administrador@SWL.FAN

Válido iniciando expira serviço principal 19/06/17 12:53:24 19/06/17 22:53:24  krbtgt/SWL.FAN@SWL.FAN
    renovar até 20/06/17 12:53:18, Sinalizadores: RIA

root @ master: ~ # kdestroy
root @ master: ~ # klist -f
klist: Arquivo de cache de credenciais '/ tmp / krb5cc_0' não encontrado

root @ master: ~ # smbclient -L localhost -U%
Domínio = [SWL] OS = [Windows 6.1] Servidor = [Samba 4.5.1] Nome do compartilhamento Tipo Comentário --------- ---- ------- netlogon Disco sysvol Disco IPC $ IPC IPC Serviço (Samba 4.5.1) Domínio = [SWL] OS = [Windows 6.1] Servidor = [Samba 4.5.1] Comentário do servidor --------- ------- Workgroup Master ---- ----- -------

root @ master: ~ # smbclient // localhost / netlogon -UAdministrator -c 'ls'
Digite a senha do administrador: Domínio = [SWL] OS = [Windows 6.1] Servidor = [Samba 4.5.1]. D 0 Seg 19 de junho 11:50:52 2017 .. D 0 Seg 19 de junho 11:51:07 2017 19091584 blocos de tamanho 1024. 16198044 blocos disponíveis

root @ master: ~ # tool dns serverinfo master -U administrador

root @ master: ~ # host -t SRV _ldap._tcp.swl.fan
_ldap._tcp.swl.fan tem registro SRV 0 100 389 master.swl.fan.

root @ master: ~ # host -t SRV _kerberos._udp.swl.fan
_kerberos._udp.swl.fan tem registro SRV 0 100 88 master.swl.fan.

root @ master: ~ # host -t A master.swl.fan
master.swl.fan tem o endereço 192.168.10.5

root @ master: ~ # host -t SOA swl.fan
swl.fan tem registro SOA master.swl.fan. hostmaster.swl.fan. 1 900 600 86400 3600

root @ master: ~ # host -t NS swl.fan
servidor de nomes swl.fan master.swl.fan.

root @ master: ~ # host -t MX swl.fan
swl.fan não tem registro MX

root @ master: ~ # samba_dnsupdate --verbose

root @ master: ~ # lista de usuários de ferramentas
Administrador krbtgt Convidado

root @ master: ~ # lista de grupos de ferramentas
# A saída é um monte de grupos. ;-)

Gerenciamos o Samba 4 AD-DC recém-instalado

Se quisermos modificar o vencimento em dias da senha do Administrador; a complexidade das senhas; o comprimento mínimo da senha; a duração mínima e máxima -em dias- da senha; e alterar a senha do administrador declarada durante o Provisioning, devemos executar os seguintes comandos com o valores ajustados às suas necessidades:

root @ master: ~ # tool
Uso: ferramenta samba Principal ferramenta de administração do samba. Opções: -h, --help mostra esta mensagem de ajuda e sai Opções de versão: -V, --version Exibe o número da versão Subcomandos disponíveis: dbcheck - Verifique se há erros no banco de dados local do AD. delegação - gestão da delegação. dns - gerenciamento de DNS (Domain Name Service). domínio - gerenciamento de domínio. drs - Gerenciamento do Directory Replication Services (DRS). dsacl - Manipulação de DS ACLs. fsmo - Gerenciamento de funções Flexible Single Master Operations (FSMO). gpo - Gerenciamento de objeto de política de grupo (GPO). group - gerenciamento de grupo. ldapcmp - Compare dois bancos de dados ldap. ntacl - Manipulação de ACLs do NT. processos - Listar processos (para auxiliar na depuração de sistemas sem setproctitle). rodc - gerenciamento de controlador de domínio somente leitura (RODC). sites - Gerenciamento de sites. spn - gerenciamento do nome principal do serviço (SPN). testparm - Verifica a sintaxe do arquivo de configuração. hora - Recupere a hora em um servidor. usuário - Gerenciamento de usuários. Para obter mais ajuda sobre um subcomando específico, digite: samba-tool (-h | --ajuda)

root @ master: ~ # tool usuário setexpiry administrador --noexpiry
root @ master: ~ # tool domain passwordsettings set --min-pwd-length = 7
root @ master: ~ # tool domain passwordsettings set --min-pwd-age = 0
root @ master: ~ # tool domain passwordsettings set --max-pwd-age = 60
root @ master: ~ # tool user setpassword --filter = samaccountname = Administrador --newpassword = Passw0rD

Adicionamos vários registros DNS

root @ master: ~ # tool dns
Uso: samba-tool dns Gerenciamento de DNS (Domain Name Service). Opções: -h, --help mostra esta mensagem de ajuda e sai Subcomandos disponíveis: add - Adicionar uma exclusão de registro DNS - Excluir uma consulta de registro DNS - Consultar um nome. roothints - dicas de raiz de consulta. serverinfo - consulta de informações do servidor. update - atualiza um registro DNS zonecreate - cria uma zona. zonedelete - Exclua uma zona. zoneinfo - consulta de informações de zona. zonelist - Consulta de zonas. Para obter mais ajuda sobre um subcomando específico, digite: samba-tool dns (-h | --ajuda)

Servidor de e-mail

root @ master: ~ # tool dns add master swl.fan mail Um administrador 192.168.10.9 -U
root @ master: ~ # tool dns add master swl.fan swl.fan MX "mail.swl.fan 10" -U administrador

IP fixo de outros servidores

root @ master: ~ # tool dns add master swl.fan sysadmin Um administrador 192.168.10.1 -U
root @ master: ~ # tool dns add master swl.fan fileserver A 192.168.10.10 -U administrator
root @ master: ~ # tool dns add master swl.fan proxy A 192.168.10.11 administrador -U
root @ master: ~ # tool dns add master swl.fan chat A 192.168.10.12 administrador -U

Zona Reversa

root @ master: ~ # tool dns zonecreate master 10.168.192.in-addr.arpa -U administrador
Senha para [SWL \ administrador]: Zona 10.168.192.in-addr.arpa criada com sucesso

root @ master: ~ # tool dns add master 10.168.192.in-addr.arpa 5 PTR master.swl.fan. -Uadministrador
root @ master: ~ # tool dns add master 10.168.192.in-addr.arpa 9 PTR mail.swl.fan. -Uadministrador
root @ master: ~ # tool dns add master 10.168.192.in-addr.arpa 1 PTR sysadmin.swl.fan. -Uadministrador
root @ master: ~ # tool dns add master 10.168.192.in-addr.arpa 10 PTR fileserver.swl.fan. -Uadministrador
root @ master: ~ # tool dns add master 10.168.192.in-addr.arpa 11 PTR proxy.swl.fan. -Uadministrador
root @ master: ~ # tool dns add master 10.168.192.in-addr.arpa 12 PTR chat.swl.fan. -Uadministrador

Cheques

root @ master: ~ # tool dns query master swl.fan mail ALL -U administrador
Senha para [SWL \ administrador]: Nome =, Registros = 1, Filhos = 0 A: 192.168.10.9 (sinalizadores = f0, serial = 2, ttl = 900)

root @ master: ~ # host master
master.swl.fan tem o endereço 192.168.10.5
root @ master: ~ # host sysadmin
sysadmin.swl.fan tem o endereço 192.168.10.1
root @ master: ~ # host mail
mail.swl.fan tem o endereço 192.168.10.9
root @ master: ~ # host chat
chat.swl.fan tem o endereço 192.168.10.12
root @ master: ~ # host proxy
proxy.swl.fan tem o endereço 192.168.10.11
root @ master: ~ # host fileserver
fileserver.swl.fan tem o endereço 192.168.10.10
root @ master: ~ # host 192.168.10.1
1.10.168.192.in-addr.arpa ponteiro de nome de domínio sysadmin.swl.fan.
root @ master: ~ # host 192.168.10.5
5.10.168.192.in-addr.arpa ponteiro de nome de domínio master.swl.fan.
root @ master: ~ # host 192.168.10.9
9.10.168.192.in-addr.arpa ponteiro de nome de domínio mail.swl.fan.
root @ master: ~ # host 192.168.10.10
10.10.168.192.in-addr.arpa ponteiro de nome de domínio fileserver.swl.fan.
root @ master: ~ # host 192.168.10.11
11.10.168.192.in-addr.arpa ponteiro de nome de domínio proxy.swl.fan.
root @ master: ~ # host 192.168.10.12
12.10.168.192.in-addr.arpa ponteiro de nome de domínio chat.swl.fan.

Para os curiosos

root @ master: ~ # ldbsearch -H /usr/local/samba/private/sam.ldb.d/ \
DC = DOMAINDNSZONES, DC = SWL, DC = FAN.ldb | grep dn:

Nós adicionamos usuários

root @ master: ~ # usuário da ferramenta
Uso: usuário da ferramenta samba Gerenciamento de usuários. Opções: -h, --help mostra esta mensagem de ajuda e sai Subcomandos disponíveis: add - Cria um novo usuário. criar - Cria um novo usuário. delete - Exclua um usuário. desativar - Desativa um usuário. enable - Habilita um usuário. getpassword - obtém os campos de senha de uma conta de usuário / computador. list - Lista todos os usuários. senha - Altere a senha de uma conta de usuário (a fornecida na autenticação). setexpiry - Defina a expiração de uma conta de usuário. setpassword - Defina ou redefina a senha de uma conta de usuário. syncpasswords - Sincronize a senha de contas de usuário. Para obter mais ajuda sobre um subcomando específico, digite: samba-tool user (-h | --ajuda)

root @ master: ~ # ferramenta usuário criar trancos Trancos01
Usuário 'trancos' criado com sucesso
root @ master: ~ # ferramenta usuário criar gandalf Gandalf01
Usuário 'gandalf' criado com sucesso
root @ master: ~ # tool user create legolas Legolas01
Usuário 'legolas' criado com sucesso
root @ master: ~ # lista de usuários de ferramentas
Administrador gandalf legolas strides krbtgt Convidado

Administração através de interface gráfica ou via cliente web

Visite wiki.samba.org para obter informações detalhadas sobre como instalar o RSAT da Microsoft o Ferramentas de administração de servidor remoto. Se você não precisar das políticas clássicas oferecidas pelo Microsoft Active Directory, você pode instalar o pacote gerenciador de contas ldap que oferece uma interface simples de administração por meio de um navegador da web.

O conjunto de programas RSAT (Ferramentas de Administração de Servidor Remoto) da Microsoft está incluído nos sistemas operacionais Windows Server.

Nós unimos o domínio a um cliente Windows 7 chamado "sete"

Como não temos servidor DHCP na rede, a primeira coisa que devemos fazer é configurar a placa de rede do cliente com um IP fixo, declarar que o DNS primário será o IP do samba-ad-dc, e verifique se a opção "Registrar o endereço desta conexão no DNS" está ativada. Não é ocioso verificar se o nome «Sete»Ainda não está registrado no DNS interno do Samba.

Depois de adicionarmos o computador ao domínio e reiniciá-lo, vamos tentar fazer o login com o usuário «passos largos«. Vamos verificar se tudo funciona bem. Também é recomendável verificar os logs do cliente Windows e verificar como a hora está sincronizada corretamente.

Os administradores com alguma experiência no Windows descobrirão que quaisquer verificações que fizerem no cliente produzirão resultados satisfatórios.

Resumo

Espero que o artigo seja útil para os leitores da Comunidade. DesdeLinux.

Adeus!


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Gonzalo Martinez dito

    Artigo longo, mas detalhado, muito bom passo a passo de como fazer tudo.

    Destaco o NIS, a verdade é que embora eu saiba da sua existência, nunca soube realmente como funciona, pois para ser sincero sempre me deu a impressão de que estava praticamente morto ao lado do LDAP e do Samba 4.

    PS: Parabéns pelo seu novo projeto pessoal! Pena que você não vai continuar escrevendo aqui, mas pelo menos há um lugar para te seguir.

  2.   HO2Gi dito

    Tutorial enorme como sempre para meus favoritos, Saudações Fico.
    Parabéns pelo projeto.

  3.   IWO dito

    A seção NIS é ótima, simpatizo com Gonzalo Martinez, conheci brevemente, mas não tinha ideia de como implementá-la e em que situações é utilizada.
    Obrigado uma vez por um tremendo "tronco" de artigo teórico e prático.
    Finalmente novos sucessos em seu novo projeto «gigainside».

  4.   federico dito

    Muito obrigado a todos pelo comentário !!!.
    lembranças

  5.   mexilhão dito

    o smb.conf que você mostra não tem nenhum link com LDAP, é assim de propósito ou deixei algo?

  6.   fico dito

    mussol: Este é um Samba 4 Active Directory Domain Controler que já tem seu servidor LDAP integrado.

  7.   Vicente dito

    Você poderia comentar como unir um mac (apple) a um samba 4 AD-DC?
    Obrigado.

  8.   Jramirez dito

    Que tal;

    Obrigado pelo manual, é ótimo. Tenho uma pergunta sobre uma mensagem que me aparece.

    root @ AD: ~ # nping –tcp -p 53 -c 3 ad.rjsolucionessac.com
    Falha ao resolver o nome de host / IP fornecido: ad.rjsolucionessac.com. Observe que você não pode usar intervalos de IP no estilo '/ mask' E '1-4,7,100-'
    Não é possível encontrar um alvo válido. Certifique-se de que os hosts especificados são endereços IP em notação padrão ou nomes de host que podem ser resolvidos com DNS
    root @ AD: ~ #