Índice general de la serie: Redes de Computadoras para las PYMES: Introducción
¡Hola amigas y amigos!
Con éste artículo digo Adiós a la Comunidad DesdeLinux. Una especial despedida para una Especial Comunidad. Desde ahora estaré en mi proyecto personal el cual puedes conocer en http://www.gigainside.com.
El objetivo fundamental del post es ofrecer un «Big Picture» sobre los Servicios de Autenticación con Software Libre que tenemos a nuestra disposición. Al menos esa es nuestra intención. Por tanto será largo, a pesar de que conocemos va contra las normas generales de redacción de artículos. Esperamos que los Administradores de Sistemas lo agradezcan.
Queremos puntualizar que el protocolo común a muchos de los sistemas de autenticación modernos es el LDAP, y que no es ocioso estudiarlo con detenimiento, a partir del material de estudio que encontraremos en sitio oficial http://www.openldap.org/.
No daremos definiciones detalladas -ni enlaces- sobre aspectos tratados en artículos anteriores, o sobre aquellos cuya descripción puede ser fácilmente accesible en la Wikipedia u otros sitios o artículos en Internet, para no perder la objetividad del mensaje que queremos dar. También emplearemos una mezcla válida de nombres en inglés y en español, pues consideramos que la mayoría de los sistemas nacieron con nombres en inglés y es muy beneficioso para un Sysadmin que los asimile en su idioma original.
- PAM: Pluggable Authentication Module.
- NIS: Network_Information_Service.
- LDAP: Lightweight Directory Access Protocol.
- Kerberos: Protocolo de seguridad para autenticar a usuarios, equipos y servicios de forma centralizada en una red, verificando sus credenciales contra las entradas existentes en la base de datos de Kerberos.
- DS: Directory Server o Directory Service
- AD-DC: Active Directory – Domain Controler
PAM
Dedicamos una pequeña serie a éste tipo de autenticación local, la cual comprobarán en la práctica diaria que se utiliza ampliamente cuando, por ejemplo, unimos una estación de trabajo a un Controlador de Dominio o a un Directorio Activo; para mapear usuarios almacenados en bases de datos LDAP externas como si fueran usuarios locales; para mapear usuarios almacenados en el Controlador de Dominio de un Directorio Activo como si fueran usuarios locales, etcétera.
- Squid + Autenticación PAM en CentOS 7.
- Gestión de usuarios y grupos locales
- Servidor DNS Autoritario NSD + Shorewall
- Prosody IM y usuarios locales
- Postfix + Dovecot + Squirrelmail y usuarios locales
NIS
De Wikipedia:
- Network Information System (conocido por su acrónimo NIS, que en español significa Sistema de Información de Red), es el nombre de un protocolo de servicios de directorios cliente-servidor desarrollado por Sun Microsystems para el envío de datos de configuración en sistemas distribuidos tales como nombres de usuarios y hosts entre computadoras sobre una red.NIS está basado en ONC RPC, y consta de un servidor, una biblioteca de la parte cliente, y varias herramientas de administración.
Originalmente NIS se llamaba Páginas Amarillas (Yellow Pages), o YP, que todavía se utiliza para referirse a él. Desafortunadamente, ese nombre es una marca registrada de British Telecom, que exigió a Sun abandonar ese nombre. Sin embargo YP permanece como prefijo en los nombres de la mayoría de las órdenes relacionadas con NIS, como ypserv e ypbind.
DNS sirve un rango limitado de información, siendo la más importante la correspondencia entre el nombre de nodo y la dirección IP. Para otros tipos de información, no existe un servicio especializado así. Por otra parte, si sólo se administra una pequeña LAN sin conectividad a Internet, no parece que merezca la pena configurar DNS. Ésta es la razón por la que Sun desarrolló el Sistema de Información de Red (NIS). NIS proporciona prestaciones de acceso a bases de datos genéricas que pueden utilizarse para distribuir, por ejemplo, la información contenida en los ficheros passwd y groups a todos los nodos de su red. Esto hace que la red parezca un sistema individual, con las mismas cuentas en todos los nodos. De manera similar, se puede usar NIS para distribuir la información de nombres de nodo contenida en /etc/hosts a todas las máquinas de la red.
Hoy NIS está disponible prácticamente en todos las distribuciones de Unix, e incluso existen implementaciones libres. BSD Net-2 publicó una que ha sido derivada de una implementación de referencia de dominio público donada por Sun. El código de la biblioteca de la parte cliente de esta versión existe en la libc de GNU/Linux desde hace mucho tiempo, y los programas de administración fueron portados a GNU/Linux por Swen Thümmler. Sin embargo, falta un servidor NIS a partir de la implementación de referencia.
Peter Eriksson ha desarrollado una implementación nueva llamada NYS. Soporta tanto NIS básico como la versión mejorada de Sun NIS+.[1] NYS no sólo proporciona una serie de herramientas NIS y un servidor, sino que también añade un completo juego nuevo de funciones de biblioteca que necesita compilar en su libc si quiere utilizarlas. Esto incluye un esquema nuevo de configuración para la resolución de nombres de nodo que sustituye al esquema actual que usa el fichero «host.conf».
La libc de GNU, conocida como libc6 en la comunidad GNU/Linux, incluye una versión actualizada del soporte de NIS tradicional desarrollado por Thorsten Kukuk. Soporta todas las funciones de biblioteca que proporcionaba NYS, y también utiliza el esquema avanzado de configuración de NYS. Todavía se necesitan las herramientas y el servidor, pero utilizando la libc de GNU se ahorra el trabajo de tener que parchear y recompilar la biblioteca
.
Nombre de equipo y dominio, interfaz de red y resolver
- Partimos de una instalación limpia -sin interfaz gráfica- de un Debian 8 «Jessie». El dominio swl.fan significa «Fans del Software Libre». ¿Qué mejor nombre que éste?.
root@master:~# hostname
master
root@master:~# hostname -f
master.swl.fan
root@master:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
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 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:4c:76:d9 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.5/24 brd 192.168.10.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4c:76d9/64 scope link
valid_lft forever preferred_lft forever
root@master:~# cat /etc/resolv.conf
search swl.fan
nameserver 127.0.0.1
Instalación de bind9, isc-dhcp-server y ntp
bind9
root@master:~# aptitude install bind9 bind9-doc nmap root@master:~# systemctl status bind9 root@master:~# nano /etc/bind/named.conf include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/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 options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { // 0.0.0.0; // }; //=====================================================================$ // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //=====================================================================$ // No queremos DNSSEC dnssec-enable no; //dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; // Para comprobaciones desde el localhost y sysadmin // mediante dig swl.fan axfr // No tenemos DNS Esclavos... hasta ahora allow-transfer { localhost; 192.168.10.1; }; }; root@master:~# named-checkconf root@master:~# nano /etc/bind/zones.rfcFreeBSD // Shared Address Space (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 and 6303) zone "254.169.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; // IETF protocol assignments (RFCs 5735 and 5736) zone "0.0.192.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; // TEST-NET-[1-3] for Documentation (RFCs 5735, 5737 and 6303) zone "2.0.192.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "100.51.198.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "113.0.203.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; // IPv6 Example Range for Documentation (RFCs 3849 and 6303) zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; // Domain Names for Documentation and Testing (BCP 32) zone "test" { type master; file "/etc/bind/db.empty"; }; zone "example" { type master; file "/etc/bind/db.empty"; }; zone "invalid" { type master; file "/etc/bind/db.empty"; }; zone "example.com" { type master; file "/etc/bind/db.empty"; }; zone "example.net" { type master; file "/etc/bind/db.empty"; }; zone "example.org" { type master; file "/etc/bind/db.empty"; }; // Router Benchmark Testing (RFCs 2544 and 5735) zone "18.198.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "19.198.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; // IANA Reserved - Old Class E Space (RFC 5735) zone "240.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "241.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "242.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "243.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "244.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "245.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "246.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "247.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "248.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "249.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "250.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "251.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "252.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "253.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "254.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; // IPv6 Unassigned Addresses (RFC 4291) zone "1.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "3.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "4.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "5.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "6.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "7.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "8.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "9.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "a.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "b.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "c.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "d.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "e.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "0.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "1.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "2.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "3.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "4.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "5.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "6.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "7.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "8.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "9.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "a.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "b.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "0.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "1.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "2.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "3.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "4.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "5.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "6.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "7.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; // IPv6 ULA (RFCs 4193 and 6303) zone "c.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "d.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; // IPv6 Link Local (RFCs 4291 and 6303) zone "8.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "9.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "a.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "b.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; // IPv6 Deprecated Site-Local Addresses (RFCs 3879 and 6303) zone "c.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "d.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "e.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; zone "f.e.f.ip6.arpa" { type master; file "/etc/bind/db.empty"; }; // IP6.INT is Deprecated (RFC 4159) zone "ip6.int" { type master; file "/etc/bind/db.empty"; }; root@master:~# nano /etc/bind/named.conf.local // // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization include "/etc/bind/zones.rfc1918"; include "/etc/bind/zones.rfcFreeBSD"; // Declaración del nombre, tipo, ubicación, y permiso de actualización // de las Zonas de Registros DNS // Ambas Zonas son MAESTRAS zone "swl.fan" { type master; file "/var/lib/bind/db.swl.fan"; }; zone "10.168.192.in-addr.arpa" { type master; file "/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 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum or ; Negative caching time to live ; @ IN NS master.swl.fan. @ IN MX 10 mail.swl.fan. @ IN A 192.168.10.5 @ IN TXT "Para los Fans del Software Libre" ; sysadmin IN A 192.168.10.1 fileserver IN A 192.168.10.4 master IN A 192.168.10.5 proxyweb IN A 192.168.10.6 blog IN A 192.168.10.7 ftpserver IN 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 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum or ; Negative caching time to live ; @ 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 IN PTR mail.swl.fan. root@master:~# named-checkzone swl.fan /var/lib/bind/db.swl.fan zone swl.fan/IN: loaded serial 1 OK root@master:~# named-checkzone 10.168.192.in-addr.arpa /var/lib/bind/db.10.168.192.in-addr.arpa zone 10.168.192.in-addr.arpa/IN: loaded serial 1 OK root@master:~# named-checkconf -zp root@master:~# systemctl restart bind9.service root@master:~# systemctl status bind9.service
Comprobaciones del bind9
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:~# host proxyweb 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 Starting Nping 0.6.47 ( http://nmap.org/nping ) at 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 ttl=64 id=20743 iplen=28 SENT (2.0060s) UDP 192.168.10.5:53 > 192.168.10.245:53 ttl=64 id=20743 iplen=28 Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A Raw packets sent: 3 (84B) | Rcvd: 0 (0B) | Lost: 3 (100.00%) Nping done: 1 IP address pinged in 3.01 seconds
isc-dhcp-server
root@master:~# aptitude install isc-dhcp-server root@master:~# nano /etc/default/isc-dhcp-server # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "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 Private-key-format: v1.3 Algorithm: 157 (HMAC_MD5) Key: Ba9GVadq4vOCixjPN94dCQ== Bits: AAA= Created: 20170527133656 Publish: 20170527133656 Activate: 20170527133656 root@master:~# nano dhcp.key key dhcp-key { algorithm hmac-md5; secret "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 include "/etc/bind/dhcp.key"; zone "swl.fan" { type master; file "/var/lib/bind/db.swl.fan"; allow-update { key dhcp-key; }; }; zone "10.168.192.in-addr.arpa" { type master; file "/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 ddns-update-style interim; ddns-updates on; ddns-domainname "swl.fan."; ddns-rev-domainname "in-addr.arpa."; ignore client-updates; update-optimization false; # Puede ser necesario en Debian authoritative; option ip-forwarding off; option domain-name "swl.fan"; include "/etc/dhcp/dhcp.key"; zone swl.fan. { primary 127.0.0.1; key dhcp-key; } zone 10.168.192.in-addr.arpa. { primary 127.0.0.1; key dhcp-key; } shared-network redlocal { subnet 192.168.10.0 netmask 255.255.255.0 { option routers 192.168.10.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.10.255; option domain-name-servers 192.168.10.5; option netbios-name-servers 192.168.10.5; option ntp-servers 192.168.10.5; option time-servers 192.168.10.5; range 192.168.10.30 192.168.10.250; } } root@master:~# dhcpd -t Internet Systems Consortium DHCP Server 4.3.1 Copyright 2004-2014 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Config file: /etc/dhcp/dhcpd.conf Database file: /var/lib/dhcp/dhcpd.leases PID file: /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 statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable server 192.168.10.1 restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery restrict 127.0.0.1 restrict ::1 broadcast 192.168.10.255 root@master:~# systemctl restart ntp.service root@master:~# systemctl status ntp.service root@master:~# ntpdate -u sysadmin.swl.fan 27 May 10:04:01 ntpdate[18769]: adjust time server 192.168.10.1 offset 0.369354 sec
Comprobaciones globales del ntp, bind9 e isc-dhcp-server
Desde un cliente Linux, BSD, Mac OS, o Windows compruebe que se sincroniza el tiempo correctamente. Que adquiere una dirección IP dinámica y que el nombre de ese host se resuleve mediante consultas DNS directas e inversas. Cambie el nombre del cliente y vuelva a realizar todas las comprobaciones. No avance hasta que tenga la certeza de que los servicios instalados hasta ahora funcionan correctamente. Para algo escribimos todos los artículos sobre DNS y DHCP en Redes de Computadoras para las PYMES.
Instalación del NIS Server
root@master:~# aptitude show nis Tiene conflictos con: netstd (<= 1.26) Descripción: clients and daemons for the Network Information Service (NIS) This package provides tools for setting up and maintaining a NIS domain. NIS, originally known as Yellow Pages (YP), is mostly used to let several machines in a network share the same account information, such as the password file. root@master:~# aptitude install nis Configuración de paquetes ┌─────────────────────────┤ Configuración de nis ├──────────────────────────┐ │ Escoja el «nombre del dominio» de NIS para este sistema. Si quiere que │ │ esta máquina sólo sea un cliente, debería introducir el nombre del │ │ dominio de NIS al que se quiere unir. │ │ │ │ De forma alternativa, si esta máquina va a ser un servidor NIS, puede │ │ introducir un nuevo «nombre de dominio» de NIS o el nombre de un dominio │ │ de NIS existente. │ │ │ │ Dominio de NIS: │ │ │ │ swl.fan__________________________________________________________________ │ │ │ │ <Aceptar> │ │ │ └───────────────────────────────────────────────────────────────────────────┘
Se demorará lo suyo porque la configuración del servicio no existe como tal. Espere, por favor, a que termine el proceso.
root@master:~# nano /etc/default/nis
# Are we a NIS server and if so what kind (values: false, slave, master)?
NISSERVER=master
root@master:~# nano /etc/ypserv.securenets
# securenets This file defines the access rights to your NIS server
# for NIS clients (and slave servers - ypxfrd uses this
# file too). This file contains netmask/network pairs.
# A clients IP address needs to match with at least one
# of those.
#
# One can use the word "host" instead of a netmask of
# 255.255.255.255. Only IP addresses are allowed in this
# file, not hostnames.
#
# Always allow access for localhost
255.0.0.0 127.0.0.0
# This line gives access to everybody. PLEASE ADJUST!
# 0.0.0.0 0.0.0.0
255.255.255.0 192.168.10.0
root@master:~# nano /var/yp/Makefile
# Should we merge the passwd file with the shadow file ?
# MERGE_PASSWD=true|false
MERGE_PASSWD=true
# Should we merge the group file with the gshadow file ?
# MERGE_GROUP=true|false
MERGE_GROUP=true
Construimos la base de datos del NIS
root@master:~# /usr/lib/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. master.swl.fan is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: master.swl.fan next host to add: The current list of NIS servers looks like this: master.swl.fan Is this correct? [y/n: y] We need a few minutes to build the databases... make[1]: Leaving directory '/var/yp/swl.fan' master.swl.fan has been set up as a NIS master server. Now you can run ypinit -s master.swl.fan on all slave server. root@master:~# systemctl restart nis root@master:~# systemctl status nis
Agregamos usuarios locales
root@master:~# adduser bilbo Añadiendo el usuario `bilbo' ... Añadiendo el nuevo grupo `bilbo' (1001) ... Añadiendo el nuevo usuario `bilbo' (1001) con grupo `bilbo' ... Creando el directorio personal `/home/bilbo' ... Copiando los ficheros desde `/etc/skel' ... Introduzca la nueva contraseña de UNIX: Vuelva a escribir la nueva contraseña de UNIX: passwd: contraseña actualizada correctamente Cambiando la información de usuario para bilbo Introduzca el nuevo valor, o pulse INTRO para usar el valor predeterminado Nombre completo []: Bilbo Bagins Número de habitación []: Teléfono del trabajo []: Teléfono de casa []: Otro []: ¿Es correcta la información? [S/n] root@master:~# adduser trancos root@master:~# adduser legolas
y así sucesivamente.
root@master:~# finger legolas Login: legolas Name: Legolas Arquero Directory: /home/legolas Shell: /bin/bash Never logged in. No mail. No Plan.
Actualizamos la base de datos del NIS
root@master:/var/yp# make make[1]: Entering directory '/var/yp/swl.fan' Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating netid.byname... Updating shadow.byname... Ignored -> merged with passwd make[1]: Leaving directory '/var/yp/swl.fan'
Adicionamos opciones NIS al isc-dhcp-server
root@master:~# nano /etc/dhcp/dhcpd.conf ddns-update-style interim; ddns-updates on; ddns-domainname "swl.fan."; ddns-rev-domainname "in-addr.arpa."; ignore client-updates; update-optimization false; authoritative; option ip-forwarding off; option domain-name "swl.fan"; include "/etc/dhcp/dhcp.key"; zone swl.fan. { primary 127.0.0.1; key dhcp-key; } zone 10.168.192.in-addr.arpa. { primary 127.0.0.1; key dhcp-key; } shared-network redlocal { subnet 192.168.10.0 netmask 255.255.255.0 { option routers 192.168.10.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.10.255; option domain-name-servers 192.168.10.5; option netbios-name-servers 192.168.10.5; option ntp-servers 192.168.10.5; option time-servers 192.168.10.5; option nis-domain "swl.fan"; option nis-servers 192.168.10.5; range 192.168.10.30 192.168.10.250; } } root@master:~# dhcpd -t root@master:~# systemctl restart isc-dhcp-server.service
Instalación del NIS Client
- Partimos de una instalación limpia -sin interfaz gráfica- de un Debian 8 «Jessie».
root@mail:~# hostname -f
mail.swl.fan
root@mail:~# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:25:1f:54 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.9/24 brd 192.168.10.255 scope global eth0
root@mail:~# aptitude install nis
root@mail:~# nano /etc/yp.conf
#
# yp.conf Configuration file for the ypbind process. You can define
# NIS servers manually here if they can't be found by
# broadcasting on the local net (which is the default).
#
# See the manual page of ypbind for the syntax of this file.
#
# IMPORTANT: For the "ypserver", use IP addresses, or make sure that
# the host is in /etc/hosts. This file is only interpreted
# once, and if DNS isn't reachable yet the ypserver cannot
# be resolved and ypbind won't ever bind to the server.
# ypserver ypserver.network.com
ypserver master.swl.fan
domain swl.fan
root@mail:~# nano /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat nis
group: compat nis
shadow: compat nis
gshadow: files
hosts: files dns nis
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
root@mail:~# nano /etc/pam.d/common-session
# pam-auth-update(8) for details.
session optional pam_mkhomedir.so skel=/etc/skel umask=077
# here are the per-package modules (the "Primary" block)
root@mail:~# systemctl status nis
root@mail:~# systemctl restart nis
Cerramos sesión y la iniciamos nuevamente pero con un usuario registrado en la base de datos del NIS en master.swl.fan.
root@mail:~# exit logout Connection to mail closed. buzz@sysadmin:~$ ssh legolas@mail legolas@mail's password: Creating directory '/home/legolas'. The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. legolas@mail:~$ pwd /home/legolas legolas@mail:~$
Cambiamos el password del usuario legolas y comprobamos
legolas@mail:~$ yppasswd Changing NIS account information for legolas on master.swl.fan. Please enter old password:legolas Changing NIS password for legolas on master.swl.fan. Please enter new password:arquero The password must have both upper and lowercase letters, or non-letters. Please enter new password:Arquero2017 Please retype new password:Arquero2017 The NIS password has been changed on master.swl.fan. legolas@mail:~$ exit logout Connection to mail closed. buzz@sysadmin:~$ ssh legolas@mail legolas@mail's password: Arquero2017 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat May 27 12:51:50 2017 from sysadmin.swl.fan legolas@mail:~$
El Servicio NIS implementado a nivel de servidor y de cliente funciona correctamente.
LDAP
De Wikipedia:
- LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero/Simplificado de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también se considera una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas.Un directorio es un conjunto de objetos con atributos organizados en una manera lógica y jerárquica. El ejemplo más común es el directorio telefónico, que consiste en una serie de nombres (personas u organizaciones) que están ordenados alfabéticamente, con cada nombre teniendo una dirección y un número de teléfono adjuntos. Para entender mejor, es un libro o carpeta, en la cual se escriben nombres de personas, teléfonos y direcciones, y se ordena alfabéticamente.
Un árbol de directorio LDAP a veces refleja varios límites políticos, geográficos u organizacionales, dependiendo del modelo elegido. Los despliegues actuales de LDAP tienden a usar nombres de Sistema de Nombres de Dominio (DNS por sus siglas en inglés) para estructurar los niveles más altos de la jerarquía. Conforme se desciende en el directorio pueden aparecer entradas que representan personas, unidades organizacionales, impresoras, documentos, grupos de personas o cualquier cosa que representa una entrada dada en el árbol (o múltiples entradas).
Habitualmente, almacena la información de autenticación (usuario y contraseña) y es utilizado para autenticarse aunque es posible almacenar otra información (datos de contacto del usuario, ubicación de diversos recursos de la red, permisos, certificados, etc). A manera de síntesis, LDAP es un protocolo de acceso unificado a un conjunto de información sobre una red.
La versión actual es LDAPv3, y se encuentra definido en los RFCs RFC 2251 y RFC 2256 (documento base de LDAP), RFC 2829 (método de autentificación para LDAP), RFC 2830 (extensión para TLS), y RFC 3377 (especificación técnica)
.
Por mucho, el protocolo LDAP -y sus bases de datos compatibles o no con el OpenLDAP- es el mas utilizado en la mayoría de los sistemas de autenticación de hoy día. Como ejemplo de la afirmación anterior, damos a continuación algunos nombres de sistemas -Libres o Privados- que utilizan bases de datos LDAP como backend para almacenar todos sus objetos:
- OpenLDAP
- Apache Directory Server
- Red Hat Directory Server – 389 DS
- Novell Directory Services – eDirectory
- SUN Microsystem Open DS
- Red Hat Identity Manager
- FreeIPA
- Samba NT4 Clasic Domain Controller.
Queremos aclarar que éste sistema fue un desarrollo propio del Team Samba con Samba 3.xxx + OpenLDAP como backend. Microsoft nunca implementó algo parecido. Saltó de los Controladores de Dominio NT 4 a sus Directorios Activos - Samba 4 Active Directory – Domain Controler
- ClearOS
- Zentyal
- UCS Uninvention Corporate Server
- Microsoft Active Directory
Cada implementación tiene sus propias características, y el más estándar y compatible es el OpenLDAP.
Los Active Directory, sean el original de Microsoft o el de Samba 4, constituyen una unión de varios componentes principales que son:
- LDAP personalizado tanto por Microsoft como por Samba.
- Microsoft Windows Domain o Dominio de Windows. Es básicamente la Red Microsoft.
- Microsoft Domain Controler o Controlador de Dominio.
- Kerberos personalizado tanto por Microsoft como por Samba.
No debemos confundir un Directory Service o Servicio de Directorio con un Active Directory o Directorio Activo. Los primeros pueden o no albergar a la autenticación Kerberos, pero no ofertan el servicio de la Red Microsoft que brinda un Dominio de Windows, ni tampoco tienen un Controlador de Dominio Windows como tal.
Un Servicio de Directorio o Directory Service se puede emplear para autenticar usuarios en una red mixta con clientes UNIX/Linux y Windows. Para éstos últimos se debe instalar en cada cliente algún programa que actúe como intermediario entre el Servicio de Directorio y el propio cliente Windows, como es el Software Libre pGina.
Servicio de Directorio con OpenLDAP
- Partimos de una instalación limpia -sin interfaz gráfica- de un Debian 8 «Jessie», con el mismo nombre de equipo «master» utilizado para la instalación del NIS, así como también la configuración de su interfaz de red y del archivo /etc/resolv.conf. A este nuevo servidor le instalamos el ntp, bind9 e isc-dhcp-server, sin olvidar las comprobaciones globales del correcto funcionamiento de los tres servicios anteriores.
root@master:~# aptitude install slapd ldap-utils Configuración de paquetes ┌────────────────────┤ Configuración de slapd ├─────────────────────┐ │ Introduzca la contraseña para la entrada de administrador de su │ │ directorio LDAP. │ │ │ │ Contraseña del administrador: │ │ │ │ _________________________________________________________ │ │ │ │ <Aceptar> │ │ │ └───────────────────────────────────────────────────────────────────┘
Comprobamos la configuración inicial
root@master:~# slapcat dn: dc=swl,dc=fan objectClass: top objectClass: dcObject objectClass: organization o: swl.fan dc: swl structuralObjectClass: organization entryUUID: c8510708-da8e-1036-8fe1-71d022a16904 creatorsName: cn=admin,dc=swl,dc=fan createTimestamp: 20170531205219Z entryCSN: 20170531205219.833955Z#000000#000#000000 modifiersName: cn=admin,dc=swl,dc=fan modifyTimestamp: 20170531205219Z dn: cn=admin,dc=swl,dc=fan objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9emJNSFU1R3l2OWVEN0pmTmlYOVhKSUF4ekY1bU9YQXc= structuralObjectClass: organizationalRole entryUUID: c851178e-da8e-1036-8fe2-71d022a16904 creatorsName: cn=admin,dc=swl,dc=fan createTimestamp: 20170531205219Z entryCSN: 20170531205219.834422Z#000000#000#000000 modifiersName: cn=admin,dc=swl,dc=fan modifyTimestamp: 20170531205219Z
Modificamos el archivo /etc/ldap/ldap.conf
root@master:~# nano /etc/ldap/ldap.conf BASE dc=swl,dc=fan URI ldap://localhost
Unidades Organizativas y grupo general «usuarios»
Adicionamos las Organizational Units mínimas necesarias, así como el grupo Posix «usuarios» al que haremos miembros a todos los usuarios, siguiendo el ejemplo de muchos sistemas que tienen el grupo «users«. Lo denominamos con el nombre de «usuarios» para no entrar en posibles conflictos con el grupo «user» del sistema.
root@master:~# nano base.ldif dn: ou=people,dc=swl,dc=fan objectClass: organizationalUnit ou: people dn: ou=groups,dc=swl,dc=fan objectClass: organizationalUnit ou: groups dn: cn=usuarios,ou=groups,dc=swl,dc=fan objectClass: posixGroup cn: usuarios gidNumber: 10000 root@master:~# ldapadd -x -D cn=admin,dc=swl,dc=fan -W -f base.ldif Enter LDAP Password: adding new entry "ou=people,dc=swl,dc=fan" adding new entry "ou=groups,dc=swl,dc=fan"
Comprobamos las entradas añadidas
root@master:~# ldapsearch -x ou=people # people, swl.fan dn: ou=people,dc=swl,dc=fan objectClass: organizationalUnit ou: people root@master:~# ldapsearch -x ou=groups # groups, swl.fan dn: ou=groups,dc=swl,dc=fan objectClass: organizationalUnit ou: groups root@master:~# ldapsearch -x cn=usuarios # usuarios, groups, swl.fan dn: cn=usuarios,ou=groups,dc=swl,dc=fan objectClass: posixGroup cn: usuarios gidNumber: 10000
Adicionamos varios usuarios
El password que debemos declarar en el LDAP se debe obtener mediante el comando slappasswd, el cual devuelve una contraseña encriptada SSHA.
Contraseña para el usuario trancos:
root@master:~# slappasswd New password: Re-enter new password: {SSHA}Fn8Juihsr137u8KnxGTNPmnV8ai//0lp
Contraseña para el usuario legolas
root@master:~# slappasswd New password: Re-enter new password: {SSHA}rC50/W3kBmmDd+8+0Lz70vkGEu34tXmD
Contraseña para el usuario gandalf
root@master:~# slappasswd New password: Re-enter new password: {SSHA}oIVFelqv8WIxJ40r12lnh3bp+SXGbV+u root@master:~# nano usuarios.ldif dn: uid=trancos,ou=people,dc=swl,dc=fan objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: trancos cn: trancos givenName: Trancos sn: El Rey userPassword: {SSHA}Fn8Juihsr137u8KnxGTNPmnV8ai//0lp uidNumber: 10000 gidNumber: 10000 mail: trancos@swl.fan gecos: Trancos El Rey loginShell: /bin/bash homeDirectory: /home/trancos dn: uid=legolas,ou=people,dc=swl,dc=fan objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: legolas cn: legolas givenName: Legolas sn: Arquero userPassword: {SSHA}rC50/W3kBmmDd+8+0Lz70vkGEu34tXmD uidNumber: 10001 gidNumber: 10000 mail: legolas@swl.fan gecos: Legolas Arquero 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: El Mago userPassword: {SSHA}oIVFelqv8WIxJ40r12lnh3bp+SXGbV+u uidNumber: 10002 gidNumber: 10000 mail: gandalf@swl.fan gecos: Gandalf El Mago loginShell: /bin/bash homeDirectory: /home/gandalf root@master:~# ldapadd -x -D cn=admin,dc=swl,dc=fan -W -f usuarios.ldif Enter LDAP Password: adding new entry "uid=trancos,ou=people,dc=swl,dc=fan" adding new entry "uid=legolas,ou=people,dc=swl,dc=fan" adding new entry "uid=gandalf,ou=people,dc=swl,dc=fan"
Comprobamos las entradas añadidas
root@master:~# ldapsearch -x cn=trancos root@master:~# ldapsearch -x uid=trancos
Gestionamos la base de datos del slpad con utilidades de consola
Seleccionamos el paquete ldapscripts para tal tarea. El procedimiento de instalación y configuración es el siguiente:
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=groups' USUFFIX='ou=people' # MSUFFIX='ou=Computers' GIDSTART=10001 UIDSTART=10003 # MIDSTART=10000 # OpenLDAP client commands 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/ldapscripts/ldapadduser.template" PASSWORDGEN="echo %u"
Observen que los scripts utilizan los comandos del paquete ldap-utils. Ejecute dpkg -L ldap-utils | grep /bin para saber cuales son.
root@master:~# sh -c "echo -n 'admin-password' > \ /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/ldapadduser.template root@master:~# nano /etc/ldapscripts/ldapadduser.template dn: uid=<user>,<usuffix>,<suffix> objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: <user> cn: <user> givenName: <ask> sn: <ask> displayName: <ask> uidNumber: <uid> gidNumber: 10000 homeDirectory: <home> loginShell: <shell> mail: <user>@swl.fan gecos: <user> description: Cuenta de Usuario root@master:~# nano /etc/ldapscripts/ldapscripts.conf ## eliminamos el comentario UTEMPLATE="/etc/ldapscripts/ldapadduser.template"
Añadimos al usuario «bilbo» y lo hacemos miembro del grupos «usuarios»
root@master:~# ldapadduser bilbo usuarios [dn: uid=bilbo,ou=people,dc=swl,dc=fan] Enter value for "givenName" : Bilbo [dn: uid=bilbo,ou=people,dc=swl,dc=fan] Enter value for "sn" : Bagins [dn: uid=bilbo,ou=people,dc=swl,dc=fan] Enter value for "displayName" : Bilbo Bagins Successfully added user bilbo to LDAP Successfully set password for user bilbo root@master:~# ldapsearch -x uid=bilbo # bilbo, people, swl.fan dn: uid=bilbo,ou=people,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: Cuenta de Usuario
Para ver el hash del password del usuario bilbo, es necesario efectuar la consulta con autenticación:
root@master:~# ldapsearch -x -D cn=admin,dc=swl,dc=fan -W uid=bilbo
Para borrar al usuario bilbo ejecutamos:
root@master:~# ldapdelete -x -D cn=admin,dc=swl,dc=fan -W uid=bilbo,ou=people,dc=swl,dc=fan Enter LDAP Password: root@master:~# ldapsearch -x uid=bilbo
Gestionamos la base de datos del slapd mediante un interfaz web
Disponemos de un Servicio de Directorio funcional, y lo queremos administrar mas fácilmente. Existen muchos programas concebidos para esa tarea como son el phpldapadmin, ldap-account-manager, etcétera, que están disponibles directamente desde los repositorios. También podemos gestionar un Servicio de Directorio por medio del Apache Directory Studio, el que debemos descargar desde Internet.
Para mas información, por favor visite https://blog.desdelinux.net/ldap-introduccion/, y los siguientes 6 artículos.
Cliente LDAP
Escenario:
Digamos que tenemos al equipo mail.swl.fan como servidor de correo implementado según vimos en en el artículo Postfix + Dovecot + Squirrelmail y usuarios locales, que aunque se desarrolló sobre CentOS, bien puede servir de guía para Debian y muchas otras distros Linux. Queremos que, además de los usuarios locales que ya tengamos declarados, disfruten del servicio los usuarios almacenados en la base de datos del OpenLDAP existente en master.swl.fan. Para lograr lo anterior debemos «mapear» a los usuarios del LDAP como usuarios locales en el servidor mail.swl.fan. Esta solución también es válida para cualquier servicio basado en autenticación PAM. El procedimiento general para Debian, es el siguiente:
root@mail:~# aptitude install libnss-ldap libpam-ldap ldap-utils ┌────────────────────┤ Configuración de libnss-ldap ├─────────────────────┐ │ Introduzca el URI («Uniform Resource Identifier», o Identificador │ │ Uniforme de Recursos) del servidor de LDAP. Esta cadena es similar a │ │ «ldap://<nombre_del_equipo o dirección_IP>:<puerto>/». También puede │ │ utilizar «ldaps://» o «ldapi://». El número de puerto es opcional. │ │ │ │ Se recomienda utilizar una dirección IP para evitar fallos cuando los │ │ servicios de nombres de dominio no estén disponibles. │ │ │ │ URI del servidor de LDAP: │ │ │ │ ldap://master.swl.fan__________________________________________________ │ │ │ │ <Aceptar> │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────┤ Configuración de libnss-ldap ├──────────────────────┐ │ Introduzca el nombre distintivo (DN) de la base de búsquedas de LDAP. En │ │ muchos sitios se utilizan las componentes del nombre de dominio con este │ │ propósito. Por ejemplo, el dominio «ejemplo.net» utilizaría │ │ «dc=ejemplo,dc=net» como nombre distintivo de la base de búsquedas. │ │ │ │ El nombre distintivo (DN) de la base de búsquedas: │ │ │ │ dc=swl,dc=fan____________________________________________________________ │ │ │ │ <Aceptar> │ │ │ └───────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────┤ Configuración de libnss-ldap ├──────────────────────┐ │ Introduzca la versión del protocolo de LDAP que debería usar ldapns. Se │ │ recomienda utilizar el número de versión más alto que esté disponible. │ │ │ │ Versión de LDAP a utilizar: │ │ │ │ 3 │ │ 2 │ │ │ │ │ │ <Aceptar> │ │ │ └───────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────┤ Configuración de libnss-ldap ├──────────────────────┐ │ Escoja que cuenta se utilizará para las consultas nss con privilegios de │ │ root. │ │ │ │ Nota: Para que funcione esta opción la cuenta necesita permisos para │ │ poder acceder a los atributos LDAP que están asociados con las entradas │ │ «shadow» de los usuarios así como a las contraseñas de los usuarios y │ │ grupos. │ │ │ │ Cuenta LDAP para root: │ │ │ │ cn=admin,dc=swl,dc=fan___________________________________________________ │ │ │ │ <Aceptar> │ │ │ └───────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────┤ Configuración de libnss-ldap ├─────────────────────┐ │ Introduzca la contraseña se utilizará cuando libnss-ldap intente │ │ autenticarse al directorio LDAP con la cuenta LDAP de root. │ │ │ │ La contraseña se guardará en un fichero independiente │ │ («/etc/libnss-ldap.secret») al que sólo podrá acceder root. │ │ │ │ Si introduce una contraseña vacía se reutilizará la antigua contraseña. │ │ │ │ Contraseña para la cuenta LDAP de root: │ │ │ │ ________________________________________________________________ │ │ │ │ <Aceptar> │ │ │ └──────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────┤ Configuración de libnss-ldap ├──────────────────────┐ │ │ │ nsswitch.conf no se gestiona automáticamente │ │ │ │ Debe modificar su fichero «/etc/nsswitch.conf» para que utilice una │ │ fuente de datos LDAP si quiere que funcione el paquete libnss-ldap. │ │ Puede utilizar como ejemplo de la configuración de nsswitch el fichero │ │ de ejemplo en «/usr/share/doc/libnss-ldap/examples/nsswitch.ldap» o │ │ puede copiarlo sobre su configuración actual. │ │ │ │ Tenga en cuenta que antes de eliminar este paquete puede ser conveniente │ │ eliminar las entradas «ldap» del fichero nsswitch.conf para que los │ │ servicios básicos sigan funcionando. │ │ │ │ <Aceptar> │ │ │ └───────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────┤ Configuración de libpam-ldap ├──────────────────────┐ │ │ │ Esta opción permite que las herramientas de las contraseñas que utilicen │ │ PAM cambien las contraseñas locales. │ │ │ │ La contraseña de la cuenta del administrador de LDAP se guardará en un │ │ archivo separado que sólo podrá leer el administrador. │ │ │ │ Esta opción se debería desactivar, si se monta «/etc» mediante NFS. │ │ │ │ ¿Desea permitir que la cuenta del administrador de LDAP se comporte como │ │ el administrador local? │ │ │ │ <Sí> <No> │ │ │ └───────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────┤ Configuración de libpam-ldap ├──────────────────────┐ │ │ │ Escoja si el servidor de LDAP fuerza la identificación antes de obtener │ │ las entradas. │ │ │ │ Esta configuración no suele ser necesaria. │ │ │ │ ¿Hace falta un usuario para acceder a la base de datos de LDAP? │ │ │ │ <Sí> <No> │ │ │ └───────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────┤ Configuración de libpam-ldap ├──────────────────────┐ │ Introduzca el nombre de la cuenta del administrador de LDAP. │ │ │ │ Esta cuenta se usará automáticamente para la gestión de la base de │ │ datos, por lo que debe tener los privilegios administrativos apropiados. │ │ │ │ Cuenta del administrador de LDAP: │ │ │ │ cn=admin,dc=swl,dc=fan___________________________________________________ │ │ │ │ <Aceptar> │ │ │ └───────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────┤ Configuración de libpam-ldap ├──────────────────────┐ │ Introduzca la contraseña de la cuenta del administrador. │ │ │ │ La contraseña se guardará en el archivo «/etc/pam_ldap.secret». El │ │ administrador será el único que pueda leer este archivo, y permitirá a │ │ libpam-ldap controlar automáticamente la gestión de las conexiones en la │ │ base de datos. │ │ │ │ Si deja este campo en blanco, se volverá a usar la anterior contraseña │ │ guardada. │ │ │ │ Contraseña del administrador de LDAP: │ │ │ │ _________________________________________________________________ │ │ │ │ <Aceptar> │ │ │ └───────────────────────────────────────────────────────────────────────────┘ root@mail:~# nano /etc/nsswitch.conf # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap shadow: compat ldap gshadow: files hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Editemos el archivo /etc/pam.d/common-password, vamos a la línea 26 y eliminamos el valor «use_authtok«:
root@mail:~# nano /etc/pam.d/common-password # # /etc/pam.d/common-password - password-related modules common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of modules that define the services to be # used to change user passwords. The default is pam_unix. # Explanation of pam_unix options: # # The "sha512" option enables salted SHA512 passwords. Without this option, # the default is Unix crypt. Prior releases used the option "md5". # # The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in # login.defs. # # See the pam_unix manpage for other options. # As of pam 1.0.1-6, this file is managed by pam-auth-update by default. # To take advantage of this, it is recommended that you configure any # local modules either before or after the default block, and use # pam-auth-update to manage selection of other modules. See # pam-auth-update(8) for details. # here are the per-package modules (the "Primary" block) password [success=2 default=ignore] pam_unix.so obscure sha512 password [success=1 user_unknown=ignore default=die] pam_ldap.so try_first_pass # here's the fallback if no module succeeds password requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around password required pam_permit.so # and here are more per-package modules (the "Additional" block) # end of pam-auth-update config
En caso de que necesitemos el Inicio de Sesión Local de los usuarios almacenados en el LDAP, y queramos se creen de forma automática sus carpetas home, debemos editar el archivo /etc/pam.d/common-session y añadir al final del archivo la siguiente línea:
session optional pam_mkhomedir.so skel=/etc/skel umask=077
En el ejemplo de Servicio de Directorio con OpenLDAP desarrollado antes, el único usuario local que se creó fue el usuario buzz, mientras que en LDAP creamos a los usuarios trancos, legolas, gandalf, y bilbo. Si las configuraciones realizadas hasta el momento son correctas, entonces debemos de ser capaces de listar a los usuarios locales y a los mapeados como locales pero almacenados en el servidor LDAP remoto:
root@mail:~# getent passwd buzz:x:1001:1001:Buzz Debian First OS,,,:/home/buzz:/bin/bash trancos:x:10000:10000:Trancos El Rey:/home/trancos:/bin/bash legolas:x:10001:10000:Legolas Arquero:/home/legolas:/bin/bash gandalf:x:10002:10000:Gandalf El Mago:/home/gandalf:/bin/bash bilbo:x:10003:10000:bilbo:/home/bilbo:/bin/bash
Después de los cambios en la autenticación del sistema, es válido reiniciar el servidor sino estamos frente a un servicio crítico:
root@mail:~# reboot
Posteriormente iniciamos sesión local en el servidor mail.swl.fan con las credenciales de un usuario almacenado en la base de datos LDAP de master.swl.fan. También podemos probar iniciar sesión vía SSH.
buzz@sysadmin:~$ ssh gandalf@mail gandalf@mail's password: Creating directory '/home/gandalf'. The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. gandalf@mail:~$ su Contraseña: root@mail:/home/gandalf# getent group buzz:x:1001: usuarios:*:10000: root@mail:/home/gandalf# exit exit gandalf@mail:~$ ls -l /home/ total 8 drwxr-xr-x 2 buzz buzz 4096 jun 17 12:25 buzz drwx------ 2 gandalf usuarios 4096 jun 17 13:05 gandalf
El Servicio de Directorio implementado a nivel de servidor y de cliente, funciona correctamente.
Kerberos
De Wikipedia:
- Kerberos es un protocolo de autenticación de redes de ordenador creado por el MIT que permite a dos ordenadores en una red insegura demostrar su identidad mutuamente de manera segura. Sus diseñadores se concentraron primeramente en un modelo de cliente-servidor, y brinda autenticación mutua: tanto cliente como servidor verifican la identidad uno del otro. Los mensajes de autenticación están protegidos para evitar eavesdropping y ataques de Replay.
Kerberos se basa en criptografía de clave simétrica y requiere un tercero de confianza. Además, existen extensiones del protocolo para poder utilizar criptografía de clave asimétrica.
Kerberos se basa en el Protocolo de Needham-Schroeder. Usa un tercero de confianza, denominado «centro de distribución de claves» (KDC, por sus siglas en inglés: Key Distribution Center), el cual consiste de dos partes lógicas separadas: un «servidor de autenticación» (AS o Authentication Server) y un «servidor emisor de tiquets» (TGS o Ticket Granting Server). Kerberos trabaja sobre la base de «tickets», los cuales sirven para demostrar la identidad de los usuarios.
Kerberos mantiene una base de datos de claves secretas; cada entidad en la red —sea cliente o servidor— comparte una clave secreta conocida únicamente por él y Kerberos. El conocimiento de esta clave sirve para probar la identidad de la entidad. Para una comunicación entre dos entidades, Kerberos genera una clave de sesión, la cual pueden usar para asegurar sus problemas.
Desventajas de Kerberos
De Ecured:
A pesar de que Kerberos elimina una amenaza de seguridad común, puede ser difícil de implementar por una variedad de razones:
- La Migración de contraseñas de usuarios desde una base de datos de contraseñas estándar UNIX, tal como /etc/passwd o /etc/shadow, a una base de datos de contraseñas Kerberos, puede ser tediosa y no hay un mecanismo rápido para realizar esta tarea.
- Kerberos presupone que cada usuario es de confianza, pero que está utilizando una máquina no fiable en una red no fiable. Su principal Objetivo es el de prevenir que las contraseñas no cifradas sean enviadas a través de la red. Sin embargo, si cualquier otro usuario, aparte del usuario adecuado, tiene acceso a la máquina que emite tickets (KDC) para la autenticación, Kerberos estaría en Riesgo.
- Para que una aplicación use Kerberos, el código debe ser modificado para hacer las llamadas apropiadas a las librerías de Kerberos. Las aplicaciones que son modificadas de esta forma son consideradas como kerberizadas. Para algunas aplicaciones, esto puede suponer un esfuerzo excesivo de Programación, debido al tamaño de la aplicación o su Diseño. Para otras aplicaciones incompatibles, los cambios se deben realizar en el modo en que el servidor de red y sus clientes se comunican; de nuevo, esto puede suponer bastante programación. En general, las aplicaciones de código cerrado que no tienen soporte de Kerberos son usualmente las más problemáticas.
- Finalmente, si decide usar Kerberos en su red, debe darse cuenta de que es una elección de todo o nada. Si decide usar Kerberos en su red, debe recordar que si se transmite cualquier contraseña a un servicio que no usa Kerberos para autenticar, se corre el riesgo de que el paquete pueda ser interceptado. Así, su red no obtendrá ningún beneficio de usar Kerberos. Para asegurar su red con Kerberos, solo debe utilizar las versiones kerberizadas de todas las aplicaciones cliente/servidor que envíen contraseñas sin cifrar o no utilizar ninguna de estas aplicaciones en la red.
Implementar y configurar de forma manual al OpenLDAP como Back-End de Kerberos no es tarea fácil. Sin embargo, mas adelante veremos que el Samba 4 Active Directory – Domain Controller integra de forma transparente para el Sysadmin, un servidor DNS, la Red Microsoft y su Controlador de Dominio, servidor LDAP como Back-End de casi la totalidad de sus objetos, y al servicio de autenticación basado en Kerberos como los componentes fundamentales de un Active Directory al estilo Microsoft.
Al día de hoy no hemos tenido la necesidad de implementar una «Red Kerberizada». Por ello es que no escribimos sobre como implementar Kerberos.
Samba 4 Active Directory – Domain Controller
Importante:
No Existe Mejor Documentación que la del sitio wiki.samba.org. El Sysadmin que se precie a si mismo, debe visitar ese sitio -en inglés- y navegar por la gran cantidad de páginas dedicadas por entero a Samba 4, escritas por el propio Team Samba. No creo exista documentación disponible en Internet que la sustituya. De paso, observar la cantidad de visitas reflejadas al final de cada página. Ejemplo de ello es que su página principal o «Main Page» se visitó 276,183 veces hasta el día de hoy 20 de junio del 2017 a las 10:10 hora estándar del este. Además, la documentación la mantienen muy actualizada, pues esa página fue modificada el pasado 6 de junio.
De Wikipedia:
Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX. De esta forma, es posible que computadoras con GNU/Linux, Mac OS X o Unix en general se vean como servidores o actúen como clientes en redes de Windows. Samba también permite validar usuarios haciendo de Controlador Principal de Dominio (PDC), como miembro de dominio e incluso como un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de servir colas de impresión, directorios compartidos y autentificar con su propio archivo de usuarios.
Entre los sistemas tipo Unix en los que se puede ejecutar Samba, están las distribuciones GNU/Linux, Solaris y las diferentes variantes BSD entre las que podemos encontrar el Mac OS X Server de Apple.
Samba 4 AD-DC con su DNS Interno
- Partimos de una instalación limpia -sin interfaz gráfica- de un Debian 8 «Jessie».
Comprobaciones iniciales
root@master:~# hostname master root@master:~# hostname --fqdn master.swl.fan root@master:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000 link/ether 00:0c:29:80:3b:3f brd ff:ff:ff:ff:ff:ff inet 192.168.10.5/24 brd 192.168.10.255 scope 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
- Con que declaremos la rama main solamente, es mas que suficiente para nuestros propósitos.
root@master:~# cat /etc/apt/sources.list deb http://192.168.10.1/repos/jessie-8.6/debian/ jessie main deb http://192.168.10.1/repos/jessie-8.6/debian/security/ jessie/updates main
Postfix por Exim y utilidades
root@master:~# aptitude install postfix htop mc deborphan ┌────────────────────────┤ Postfix Configuration ├─────────────────────────┐ │ Escoja el tipo de configuración del servidor de correo que se ajusta │ │ mejor a sus necesidades. │ │ │ │ Sin configuración: │ │ Mantiene la configuración actual intacta. │ │ Sitio de Internet: │ │ El correo se envía y recibe directamente utilizando SMTP. │ │ Internet con «smarthost»: │ │ El correo se recibe directamente utilizando SMTP o ejecutando una │ │ herramienta como «fetchmail». El correo de salida se envía utilizando │ │ un «smarthost». │ │ Sólo correo local: │ │ El único correo que se entrega es para los usuarios locales. No │ │ hay red. │ │ │ │ Tipo genérico de configuración de correo: │ │ │ │ Sin configuración │ │ Sitio de Internet │ │ Internet con «smarthost» │ │ Sistema satélite │ │ Sólo correo local │ │ │ │ │ │ <Aceptar> <Cancelar> │ │ │ └──────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────┤ Postfix Configuration ├─────────────────────────┐ │ El «nombre de sistema de correo» es el nombre del dominio que se utiliza │ │ para «cualificar» _TODAS_ las direcciones de correo sin un nombre de │ │ dominio. Esto incluye el correo hacia y desde «root»: por favor, no haga │ │ que su máquina envíe los correo electrónicos desde root@example.org a │ │ menos que root@example.org se lo haya pedido. │ │ │ │ Otros programas utilizarán este nombre. Deberá ser un único nombre de │ │ dominio cualificado (FQDN). │ │ │ │ Por consiguiente, si una dirección de correo en la máquina local es │ │ algo@example.org, el valor correcto para esta opción será example.org. │ │ │ │ Nombre del sistema de correo: │ │ │ │ master.swl.fan___________________________________________________________ │ │ │ │ <Aceptar> <Cancelar> │ │ │ └───────────────────────────────────────────────────────────────────────────┘
Limpiamos
root@master:~# aptitude purge ~c root@master:~# aptitude install -f root@master:~# aptitude clean root@master:~# aptitude autoclean
Instalamos requisitos para compilar Samba 4 y otros paquetes necesarios
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 pkg-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 la autenticación de Kerberos ├───────────────┐
│ Cuando los usuarios intentan usar Kerberos y especifican un nombre │
│ principal o de usuario sin aclarar a qué dominio administrativo de │
│ Kerberos pertenece el principal, el sistema toma el reino │
│ predeterminado. El reino predeterminado también se puede utilizar como │
│ el reino de un servicio de Kerberos que se ejecute en la máquina local. │
│ Normalmente, el reino predeterminado es el nombre en mayúsculas del │
│ dominio del DNS local. │
│ │
│ Reino predeterminado de la versión 5 de Kerberos: │
│ │
│ SWL.FAN__________________________________________________________________ │
│ │
│ <Aceptar> │
│ │
└───────────────────────────────────────────────────────────────────────────┘
┌───────────────┤ Configurando la autenticación de Kerberos ├───────────────┐
│ Introduzca los nombres de los servidores Kerberos en el reino SWL.FAN de │
│ Kerberos, separados por espacios. │
│ │
│ Servidores de Kerberos para su reino: │
│ │
│ master.swl.fan___________________________________________________________ │
│ │
│ <Aceptar> │
│ │
└───────────────────────────────────────────────────────────────────────────┘
┌───────────────┤ Configurando la autenticación de Kerberos ├───────────────┐
│ Introduzca el nombre del servidor administrativo (cambio de contraseña) │
│ para el reino SWL.FAN de Kerberos. │
│ │
│ Servidor administrativo para su reino de Kerberos: │
│ │
│ master.swl.fan___________________________________________________________ │
│ │
│ <Aceptar> │
│ │
└───────────────────────────────────────────────────────────────────────────┘
El proceso anterior se demoró un poco porque aun no tenemos instalado ningún servicio DNS. No obstante, escogió el dominio correctamente por la configuración del archivo /etc/hosts. Recordemos que en el archivo /etc/resolv.conf tenemos declarado como servidor de nombres de dominios a la IP 127.0.0.1.
Configuramos desde ahora el archivo /etc/ldap/ldap/conf
root@master:~# nano /etc/ldap/ldap.conf
BASE dc=swl,dc=fan
URI ldap://master.swl.fan
Para que las consultas mediante el comando ldapsearch realizadas desde el usuario root sean del tipo ldapsearch -x -W cn=xxxx, debemos crear el archivo /root/.ldapsearc con el siguiente contenido:
root@master:~# nano .ldaprc BINDDN CN=Administrator,CN=Users,DC=swl,DC=fan
El sistema de archivos debe soportar ACL – Access Control List
root@master:~# nano /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda1 during installation UUID=33acb024-291b-4767-b6f4-cf207a71060c / ext4 user_xattr,acl,barrier=1,noatime,errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=cb73228a-615d-4804-9877-3ec225e3ae32 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,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 -m g: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--
Obtenemos la fuente del Samba 4, la compilamos, y la instalamos
Es muy recomendable descargar el archivo fuente de la versión Stable desde el sitio https://www.samba.org/. En nuestro ejemplo descargamos la versión samba-4.5.1.tar.gz hacia la carpeta /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/
Opciones de Configuración
Si queremos personalizar las opciones de configuración, ejecutamos:
root@master:/opt/samba-4.5.1# ./configure --help
y con mucho cuidado seleccionar las que necesitemos. Es recomendable comprobar si el paquete descargado se puede instalar en la distribución Linux que estamos empleando, que en nuestro caso es Debian 8.6 Jessie:
root@master:/opt/samba-4.5.1# ./configure distcheck
Configuramos, Compilamos e Instalamos samba-4.5.1
- A partir de los requisitos antes instalados y de los 8604 archivos (que conforman el compactado samba-4.5.1.tar.gz) que pesan unos 101.7 megas -incluyendo a las carpetas source3 y source4 que pesan unos 61.1 megas- obtendremos un sustituto de un Active Directory al estilo Microsoft, de una calidad y estabilidad mas que aceptables para cualquier ambiente de producción. Debemos destacar la labor del Team Samba en entregarnos el Software Libre Samba 4.
Los comandos a continuación son los clásicos para compilar e instalar paquetes a partir de sus fuentes. Debemos ser pacientes mientras dura todo el proceso. Es la única forma de obtener resultados válidos y correctos.
root@master:/opt/samba-4.5.1# ./configure --with-systemd --disable-cups root@master:/opt/samba-4.5.1# make root@master:/opt/samba-4.5.1# make install
Durante el proceso del comando make, podemos observar que se compilan las fuentes del Samba 3 y del Samba 4. Es por ello que el Team Samba afirma que su versión 4 es la actualización natural de la versión 3, tanto para Controladores de Dominio basados en Samba 3 + OpenLDAP, como servidores de ficheros, o versiones anteriores de Samba 4.
Provisioning Samba
Emplearemos como DNS el SAMBA_INTERNAL. En https://wiki.samba.org/index.php?title=Samba_Internal_DNS_Back_End encontraremos mas información. Cuando nos pidan la contraseña del usuario Administrator, debemos teclear una de longitud mínima de 8 caracteres y además, con letras -mayúsculas y minúsculas- y números.
Antes de proceder al aprovisionamiento y para facilitarnos la vida, agregamos el path de los ejecutables de Samba en nuestro archivo .bashrc, Después cerramos y volvemos a iniciar sesión.
root@master:~# nano .bashrc # ~/.bashrc: executed by bash(1) for non-login shells. # Note: PS1 and umask are already set in /etc/profile. You should not # need this unless you want different defaults for root. # PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ ' # umask 022 # You may uncomment the following lines if you want `ls' to be colorized: # export LS_OPTIONS='--color=auto' # eval "`dircolors`" # alias ls='ls $LS_OPTIONS' # alias ll='ls $LS_OPTIONS -l' # alias l='ls $LS_OPTIONS -lA' # # Some more alias to avoid making mistakes: # alias rm='rm -i' # alias cp='cp -i' # alias mv='mv -i' declare -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 Connection to master closed. xeon@sysadmin:~$ ssh root@master root@master:~# samba-tool domain provision --use-rfc2307 --interactive Realm [SWL.FAN]: SWL.FAN Domain [SWL]: SWL Server Role (dc, member, standalone) [dc]: dc DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: SAMBA_INTERNAL DNS forwarder IP address (write 'none' to disable forwarding) [192.168.10.5]: 8.8.8.8 Administrator password: TuPassword2017 Retype password: TuPassword2017 Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up share.ldb Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=swl,DC=fan Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups Setting up self join Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=swl,DC=fan Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf Setting up fake yp server settings Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: master NetBIOS Domain: SWL DNS Domain: swl.fan DOMAIN SID: S-1-5-21-32182636-2892912266-1582980556
No olvidemos copiar el archivo de configuración de Kerberos tal como indica la salida del Provisioning:
root@master:~# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
Para no teclear el comando samba-tool con su nombre completo, creamos un enlace simbólico con el nombre corto tool:
root@master:~# ln -s /usr/local/samba/bin/samba-tool /usr/local/samba/bin/tool
Instalamos el NTP
Pieza fundamental en un Active Directory es el Servico de Tiempo de Red. Como la autenticación se realiza vía Kerberos y sus Tickets, la sincronización de la hora con el Samba 4 AD-DC es 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 statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable server 192.168.10.1 restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery restrict default mssntp restrict 127.0.0.1 restrict ::1 broadcast 192.168.10.255 root@master:~# service ntp restart root@master:~# service ntp status root@master:~# tail -f /var/log/syslog
Si al examinar el syslog mediante el comando anterior o mediante journalctl -f recibimos el mensaje:
Jun 19 12:13:21 master ntpd_intres[1498]: parent died before we finished, exiting
debemos reiniciar el servicio y volver a probar. Ahora creamos la carpeta ntp_signd:
root@master:~# ls -ld /usr/local/samba/var/lib/ntp_signd
ls: no se puede acceder a /usr/local/samba/var/lib/ntp_signd: No existe el fichero o el directorio
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 g-s,g+x /usr/local/samba/var/lib/ntp_signd/
# Tal y como se pide en samba.wiki.org
root@master:~# ls -ld /usr/local/samba/var/lib/ntp_signd
drwxr-x--- 2 root ntp 4096 jun 19 12:21 /usr/local/samba/var/lib/ntp_signd
Configuramos el inicio de Samba mediante el systemd
root@master:~# nano /lib/systemd/system/samba-ad-dc.service [Service] Type=forking 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 [Install] 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
Ubicación de los archivos del Samba 4 AD-DC
TODOS –menos el recién creado samba-ad-dc.service– los archivos se encuentran en:
root@master:~# ls -l /usr/local/samba/ total 32 drwxr-sr-x 2 root staff 4096 jun 19 11:55 bin drwxr-sr-x 2 root staff 4096 jun 19 11:50 etc drwxr-sr-x 7 root staff 4096 jun 19 11:30 include drwxr-sr-x 15 root staff 4096 jun 19 11:33 lib drwxr-sr-x 7 root staff 4096 jun 19 12:40 private 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
al mejor estilo de UNIX. Siempre es recomendable navegar por las diferentes carpetas y examinar sus contenidos.
Archivo /usr/local/samba/etc/smb.conf
root@master:~# nano /usr/local/samba/etc/smb.conf # Global parameters [global] netbios name = MASTER realm = 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 ldap server require strong auth = no printcap name = /dev/null [netlogon] path = /usr/local/samba/var/locks/sysvol/swl.fan/scripts read only = No [sysvol] path = /usr/local/samba/var/locks/sysvol read only = No root@master:~# testparm Load smb config files from /usr/local/samba/etc/smb.conf Processing section "[netlogon]" Processing section "[sysvol]" Loaded services file OK. Server role: ROLE_ACTIVE_DIRECTORY_DC Press enter to see a dump of your service definitions # Global parameters [global] realm = SWL.FAN workgroup = SWL dns forwarder = 192.168.10.1 ldap server require strong auth = No passdb backend = samba_dsdb server role = active directory domain controller rpc_server:tcpip = no rpc_daemon:spoolssd = embedded rpc_server:spoolss = embedded rpc_server:winreg = embedded rpc_server:ntsvcs = embedded rpc_server:eventlog = embedded rpc_server:srvsvc = embedded rpc_server:svcctl = embedded rpc_server:default = external winbindd:use external pipes = true idmap config * : range = 1000000-1999999 idmap_ldb:use rfc2307 = yes idmap config * : backend = tdb map archive = No map readonly = no store dos attributes = Yes vfs objects = dfs_samba4 acl_xattr [netlogon] path = /usr/local/samba/var/locks/sysvol/swl.fan/scripts read only = No [sysvol] path = /usr/local/samba/var/locks/sysvol read only = No
Comprobaciones mínimas
root@master:~# tool domain level show Domain and forest function level for domain 'DC=swl,DC=fan' Forest function level: (Windows) 2008 R2 Domain function level: (Windows) 2008 R2 Lowest function level of a DC: (Windows) 2008 R2 root@master:~# ldapsearch -x -W root@master:~# tool dbcheck Checking 262 objects Checked 262 objects (0 errors) root@master:~# kinit Administrator Password for Administrator@SWL.FAN: root@master:~# klist -f Ticket cache: FILE:/tmp/krb5cc_0 Default principal: Administrator@SWL.FAN Valid starting Expires Service principal 19/06/17 12:53:24 19/06/17 22:53:24 krbtgt/SWL.FAN@SWL.FAN renew until 20/06/17 12:53:18, Flags: RIA root@master:~# kdestroy root@master:~# klist -f klist: Credentials cache file '/tmp/krb5cc_0' not found root@master:~# smbclient -L localhost -U% Domain=[SWL] OS=[Windows 6.1] Server=[Samba 4.5.1] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.5.1) Domain=[SWL] OS=[Windows 6.1] Server=[Samba 4.5.1] Server Comment --------- ------- Workgroup Master --------- ------- root@master:~# smbclient //localhost/netlogon -UAdministrator -c 'ls' Enter Administrator's password: Domain=[SWL] OS=[Windows 6.1] Server=[Samba 4.5.1] . D 0 Mon Jun 19 11:50:52 2017 .. D 0 Mon Jun 19 11:51:07 2017 19091584 blocks of size 1024. 16198044 blocks available root@master:~# tool dns serverinfo master -U administrator root@master:~# host -t SRV _ldap._tcp.swl.fan _ldap._tcp.swl.fan has SRV record 0 100 389 master.swl.fan. root@master:~# host -t SRV _kerberos._udp.swl.fan _kerberos._udp.swl.fan has SRV record 0 100 88 master.swl.fan. root@master:~# host -t A master.swl.fan master.swl.fan has address 192.168.10.5 root@master:~# host -t SOA swl.fan swl.fan has SOA record master.swl.fan. hostmaster.swl.fan. 1 900 600 86400 3600 root@master:~# host -t NS swl.fan swl.fan name server master.swl.fan. root@master:~# host -t MX swl.fan swl.fan has no MX record root@master:~# samba_dnsupdate --verbose root@master:~# tool user list Administrator krbtgt Guest root@master:~# tool group list # La salida es un montón de grupos. ;-)
Administramos al Samba 4 AD-DC recién instalado
Si queremos modificar la expiración en días de la contraseña del Administrador; la complejidad de las contraseñas; la longitud mínima de la contraseña; la duración -en días- mínima y máxima de la contraseña; y cambiar la contraseña del Administrador declarada durante el Provisioning, debemos ejecutar los siguientes comandos con los valores ajustados a sus necesidades:
root@master:~# tool
Usage: samba-tool <subcommand>
Main samba administration tool.
Options:
-h, --help show this help message and exit
Version Options:
-V, --version Display version number
Available subcommands:
dbcheck - Check local AD database for errors.
delegation - Delegation management.
dns - Domain Name Service (DNS) management.
domain - Domain management.
drs - Directory Replication Services (DRS) management.
dsacl - DS ACLs manipulation.
fsmo - Flexible Single Master Operations (FSMO) roles management.
gpo - Group Policy Object (GPO) management.
group - Group management.
ldapcmp - Compare two ldap databases.
ntacl - NT ACLs manipulation.
processes - List processes (to aid debugging on systems without setproctitle).
rodc - Read-Only Domain Controller (RODC) management.
sites - Sites management.
spn - Service Principal Name (SPN) management.
testparm - Syntax check the configuration file.
time - Retrieve the time on a server.
user - User management.
For more help on a specific subcommand, please type: samba-tool <subcommand> (-h|--help)
root@master:~# tool user setexpiry administrator --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=Administrator --newpassword=Passw0rD
Añadimos varios registros DNS
root@master:~# tool dns
Usage: samba-tool dns <subcommand>
Domain Name Service (DNS) management.
Options:
-h, --help show this help message and exit
Available subcommands:
add - Add a DNS record
delete - Delete a DNS record
query - Query a name.
roothints - Query root hints.
serverinfo - Query for Server information.
update - Update a DNS record
zonecreate - Create a zone.
zonedelete - Delete a zone.
zoneinfo - Query for zone information.
zonelist - Query for zones.
For more help on a specific subcommand, please type: samba-tool dns <subcommand> (-h|--help)
Servidor de correo
root@master:~# tool dns add master swl.fan mail A 192.168.10.9 -U administrator root@master:~# tool dns add master swl.fan swl.fan MX "mail.swl.fan 10" -U administrator
IP fijas de otros servidores
root@master:~# tool dns add master swl.fan sysadmin A 192.168.10.1 -U administrator 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 -U administrator root@master:~# tool dns add master swl.fan chat A 192.168.10.12 -U administrator
Zona Inversa
root@master:~# tool dns zonecreate master 10.168.192.in-addr.arpa -U administrator Password for [SWL\administrator]: Zone 10.168.192.in-addr.arpa created successfully root@master:~# tool dns add master 10.168.192.in-addr.arpa 5 PTR master.swl.fan. -Uadministrator root@master:~# tool dns add master 10.168.192.in-addr.arpa 9 PTR mail.swl.fan. -Uadministrator root@master:~# tool dns add master 10.168.192.in-addr.arpa 1 PTR sysadmin.swl.fan. -Uadministrator root@master:~# tool dns add master 10.168.192.in-addr.arpa 10 PTR fileserver.swl.fan. -Uadministrator root@master:~# tool dns add master 10.168.192.in-addr.arpa 11 PTR proxy.swl.fan. -Uadministrator root@master:~# tool dns add master 10.168.192.in-addr.arpa 12 PTR chat.swl.fan. -Uadministrator
Comprobaciones
root@master:~# tool dns query master swl.fan mail ALL -U administrator Password for [SWL\administrator]: Name=, Records=1, Children=0 A: 192.168.10.9 (flags=f0, serial=2, ttl=900) root@master:~# host master master.swl.fan has address 192.168.10.5 root@master:~# host sysadmin sysadmin.swl.fan has address 192.168.10.1 root@master:~# host mail mail.swl.fan has address 192.168.10.9 root@master:~# host chat chat.swl.fan has address 192.168.10.12 root@master:~# host proxy proxy.swl.fan has address 192.168.10.11 root@master:~# host fileserver fileserver.swl.fan has address 192.168.10.10 root@master:~# host 192.168.10.1 1.10.168.192.in-addr.arpa domain name pointer sysadmin.swl.fan. root@master:~# host 192.168.10.5 5.10.168.192.in-addr.arpa domain name pointer master.swl.fan. root@master:~# host 192.168.10.9 9.10.168.192.in-addr.arpa domain name pointer mail.swl.fan. root@master:~# host 192.168.10.10 10.10.168.192.in-addr.arpa domain name pointer fileserver.swl.fan. root@master:~# host 192.168.10.11 11.10.168.192.in-addr.arpa domain name pointer proxy.swl.fan. root@master:~# host 192.168.10.12 12.10.168.192.in-addr.arpa domain name pointer chat.swl.fan.
Para Curiosos
root@master:~# ldbsearch -H /usr/local/samba/private/sam.ldb.d/\ DC=DOMAINDNSZONES,DC=SWL,DC=FAN.ldb | grep dn:
Añadimos usuarios
root@master:~# tool user
Usage: samba-tool user <subcommand>
User management.
Options:
-h, --help show this help message and exit
Available subcommands:
add - Create a new user.
create - Create a new user.
delete - Delete a user.
disable - Disable an user.
enable - Enable an user.
getpassword - Get the password fields of a user/computer account.
list - List all users.
password - Change password for a user account (the one provided in authentication).
setexpiry - Set the expiration of a user account.
setpassword - Set or reset the password of a user account.
syncpasswords - Sync the password of user accounts.
For more help on a specific subcommand, please type: samba-tool user <subcommand> (-h|--help)
root@master:~# tool user create trancos Trancos01
User 'trancos' created successfully
root@master:~# tool user create gandalf Gandalf01
User 'gandalf' created successfully
root@master:~# tool user create legolas Legolas01
User 'legolas' created successfully
root@master:~# tool user list
Administrator
gandalf
legolas
trancos
krbtgt
Guest
Administración mediante interfaz gráfica o vía cliente web
Visite wiki.samba.org para una detallada información sobre cómo instalar la herramienta de Microsoft RSAT o Remote Server Administración Tools. Si Usted no requiere de las clásicas políticas que brinda un Microsoft Active Directory, puede instalar el paquete ldap-account-manager el cual ofrece una sencilla interfaz para la administración mediante un navegador web.
En los sistemas operativos Windows Server se incluye el paquete de programas Microsoft Remote Server Administration Tools (RSAT).
Unimos al dominio a un cliente Windows 7 con nombre «seven»
Como no tenemos un servidor DHCP en la red, lo primero que debemos hacer es configurar la tarjeta de red del cliente con una IP fija, declarar que el DNS primario será la IP del samba-ad-dc, y comprobar que está activada la opción «Registrar la dirección de ésta conexión en el DNS». No es ocioso comprobar que el nombre «seven» no está registrado aun en el DNS Interno de Samba.
Después que unimos el equipo al dominio y lo reiniciamos, intentemos iniciar sesión con el usuario «trancos«. Comprobaremos que todo funciona OK. También es recomendable chequear los logs del Cliente Windows y comprobar como se sincroniza la hora correctamente.
Los Administradores con alguna experiencia en Windows, encontrarán que cualquier comprobación que hagan en el cliente, arrojará resultados satisfactorios.
Resumen
Espero que sea útil el artículo a los lectores de la Comunidad DesdeLinux.
¡Adiós!
Articulo largo pero detallado, muy buen paso a paso de como hacer todo.
Destaco NIS, la verdad si bien se de su existencia, nunca supe bien su funcionamiento, ya que para ser sincero siempre me dio la impresion de que estaba practicamente muerto al lado de LDAP y Samba 4.
PD: Felicitaciones por tu nuevo proyecto personal! Una lastima que no vayas a seguir escribiendo aca, pero por lo menos hay un lugar donde seguirte.
Enorme tutorial como siempre a mis favoritos, saludos fico.
Felicidades por el proyecto.
Genial la sección del NIS, me solidarizo con Gonzalo Martinez, lo conocía someramente pero no tenia idea de como implementarlo y en que situaciones se utiliza.
Gracias una vez por tremendo «tronco» de articulo teórico y practico.
Por ultimo nuevos éxitos en tu nuevo proyecto «gigainside».
Muchas Gracias a todos por comentar!!!.
Saludos
el smb.conf que enseñas no tienen ningún enlace con LDAP, es así a propósito o me dejo algo?
mussol: Se trata de un Samba 4 Active Directory Domain Controler que ya tiene su servidor LDAP incorporado.
Podrias comentar como uniir un mac (apple) a un samba 4 AD-DC?
Gracias.
Que tal;
Gracias por el manual, esta genial. Tengo una duda sobre un mensaje q me aparece.
root@AD:~# nping –tcp -p 53 -c 3 ad.rjsolucionessac.com
Failed to resolve given hostname/IP: ad.rjsolucionessac.com. Note that you can’t use ‘/mask’ AND ‘1-4,7,100-‘ style IP ranges
Cannot find a valid target. Please make sure the specified hosts are either IP addresses in standard notation or hostnames that can be resolved with DNS
root@AD:~#