HOWTO CDP LDAP SAMBA
De Gentoo Linux Wiki
| Kernel & Hardware • Red y Servicios • Portage • Relacionado con el Sistema • Servidor X • Juegos • Misceláneos |
Tabla de contenidos |
[editar] Introducción
Un CDP es un Controlador de Dominio Primario (Primary Domain Controller en inglés). Prácticamente en lo que consiste un CDP es en un servidor único que llevará todo el control de la red interna que forme la empresa.
Un CDP puede variar en los servicios que ofrezca, aunque como mínimo siempre suelen ofrecer DHCP, un servidor de nombre (generalmente Bind), LDAP y Samba (para la compartición e interconectividad Windows<->Linux).
El CDP que se montará en nuestro caso contiene varias funcionalidades:
Las estudiadas en este artículo serán
- Dhcpd con establecimiento automatico de dns e ip, y configuración de ip por MAC para los equipos más importantes. Se ofrece gracias a “dhcpd”.
- Named, servicio de nombres para los equipos de la subred de la empresa, ofrece resolución DNS independiente y sistema de bitácora (si, log) independiente para cada acción. El servicio se ofrece mediante el servidor “bind”.
- Ldap, directorio de usuarios de la empresa, donde se estructura las unidades organizativas de la compañía en torno a un único sistema que elimina la redundancia típica de un sistema de usuarios complejo. El servicio lo brinda slapd, provisto por el paquete openldap.
Además, se incluirá la herramienta phpldapadmin para la gestión de las cuentas de usuarios de LDAP.
- Samba, que permite la interconexion de equipos Windows a la red interna, compartiendo recursos y permitiendo la autentificación en máquinas Windows con las mismas cuentas Ldap con las que se accede a Linux. Necesario mínimo Windows XP Professional, el Home no permite incorporarse a un dominio de este tipo.
Adicionalmente, el servidor ofrecerá
- Ssh, un servicio mundialmente conocido e imprescindible (para el que no lo
sepa, permite el acceso remoto al equipo).
- Subversion, repositorio de software desarrollado en la empresa.
- Cups, sistema de impresión de UNIX.
Además, el servidor ofrecerá varios servicios web orientados a la gestión de la empresa:
- Egroupware, sistema de gestión de la empresa, permitiendo la creación de calendarios compartidos, wikis, diagramas de Gantt etc.
- GLPI, sistema de gestión del parque informático de la empresa.
- Trac, sistema de desarrollo que usa como fondo el repositorio subversion.
- Phpldapadmin, sistema para la gestión de la base de datos de LDAP
Pese a que pueda parecer mucho para un único ordenador, estos servicios para una empresa no excesivamente grande genera una carga de trabajo baja, en mi caso apenas llega al 5% de carga del sistema en hora punta ofreciendo todos estos servicios a la vez (el equipo es un Dell PowerEdge 1950).
El presente documento explicará como crear y configurar los servicios necesarios para un CDP básico, como se configuran para la interoperabilidad y como se configuran individualmente. Además explica como dar de alta un nuevo equipo, ya sea Windows o Linux en la red corporativa, como hacer que se autentifique contra el servidor ldap etc.
[editar] Instalando y configurando servicios básicos
La instalación de Gentoo se realizó a la manera tradicional usando el profile default-linux/x86/2006.1. La versión del kernel no importa, se compilo con genkernel sin ningúna opción especial. Se escogio el sistema operativo de en su versión de 32 bits (x86) en lugar de la versión para 64 (x86_64).
| Archivo: /etc/portage/package.use |
net-nds/openldap berkdb crypt gdbm -ipv6 kerberos perl \ readline samba ssl tcpd net-nds/smbldap-tools doc net-dns/bind berkdb -ipv6 ldap -mysql ssl threads dev-lang/php berkdb cli crypt gd gdbm iconv -ipv6 ldap \ mysql nls pcre readline reflection session spl ssl \ unicode zlib apache imap postgres sqlite truetype xml net-www/apache apache2 ldap ssl threads net-fs/samba cups ldap mysql pam python readline acl \ automount kerberos syslog dev-db/mysql berkdb perl ssl www-apps/trac mysql cgi postgres silvercity vhosts dev-util/subversion berkdb nls perl python zlib apache2 \ java net-misc/dhcp doc net-misc/openssh X ldap pam tcpd net-print/cups X dbus nls pam png ppds samba ssl sys-auth/pam_ldap ssl sys-devel/distcc -gnome -gtk -ipv6 |
[editar] Dhcp
Lo primero es instalar el servidor dhcp
| Código: Consola |
# emerge dhcp |
El servidor dhcp es extremadamente sencillo, una vez instalado se creará el siguiente fichero de configuración:
| Archivo: /etc/dhcp/dhcpd.conf |
# dhcpd.conf
option domain-name "aplica.intra";
option domain-name-servers 192.168.0.1, 194.224.199.210;
# Vamos a enrutar el tráfico por el CDP.
option routers 192.168.0.1;
ddns-update-style interim;
default-lease-time 600;
max-lease-time 7200;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
subnet 192.168.0.0 netmask 255.255.0.0 {
range 192.168.1.25 192.168.1.90;
}
host desarrollo { hardware ethernet 00:13:72:3b:ee:95; fixed-address 192.168.1.2; }
host validacion { hardware ethernet 00:14:22:22:ed:6e; fixed-address 192.168.1.3; }
host mr { hardware ethernet 00:11:09:15:5a:af; fixed-address 192.168.1.6; }
host tr { hardware ethernet 00:11:09:ba:5d:28; fixed-address 192.168.1.7; }
# Servidores de prueba
host install1 { hardware ethernet 00:11:09:ba:5e:ba; fixed-address 192.168.1.10; }
host install2 { hardware ethernet 00:11:09:3f:0a:ad; fixed-address 192.168.1.11; }
host dellprint { hardware ethernet 00:00:f0:a4:ac:1a; fixed-address 192.168.1.15; }
# Equipos personales
host rbioque_pc { hardware ethernet 00:11:09:aa:5e:a6; fixed-address 192.168.1.99; }
host pnavajas_pc { hardware ethernet 00:e0:7d:a4:f5:50; fixed-address 192.168.1.98; }
# Red de produccion
host produccion { hardware ethernet 00:14:22:23:14:B1; fixed-address 192.168.2.4; }
# ...
|
Una vez hecho esto, podremos hacer un
| Código: Console |
# /etc/init.d/dhcpd restart * Stopping dhcpd ... [ ok ] * Starting dhcpd ... [ ok ] # rc-update add dhcpd default * dhcpd added to runlevel default # tail -f /var/log/messages |
y, si tenemos algun syslogger funcionando, podremos ver como nos llegan las peticiones dhcp.
[editar] Bind
El servidor de nombres permite a la empresa acceder a ciertos recursos de manera más cómoda. Cuando se trata de una empresa de desarrollo con varios servidores, impresoras, routers etc. la creación de un servidor de nombres se convierte en algo obligatorio.
En nuestro caso se usará bind, como ya se indico antes
| Código: Console |
# emerge bind |
Para la configuración, nos iremos al directorio /etc/bind/ donde se encuentran tanto los archivos de configuración como los archivos que contienen los dominios de las zonas a crear.
El primer fichero a editar es el /etc/bind/named.conf, en nuestro caso se quedo de la siguiente forma:
| Archivo: /etc/bind/named.conf |
options {
directory "/var/bind";
statistics-file "/var/bind/bind.stats";
pid-file "/var/bind/bind.pid";
allow-recursion { 192.168.0.0/16; };
transfer-format many-answers;
listen-on { 192.168.0.1; };
};
logging {
channel default_file {
file "/var/log/bind/default.log" versions 3 size 5m; severity dynamic; print-time yes; };
channel general_file {
file "/var/log/bind/general.log" versions 3 size 5m; severity dynamic; print-time yes; };
channel network_file {
file "/var/log/bind/network.log" versions 3 size 5m; severity dynamic; print-time yes; };
channel queries_file {
file "/var/log/bind/queries.log" versions 3 size 5m; severity dynamic; print-time yes; };
channel resolver_file {
file "/var/log/bind/resolver.log" versions 3 size 5m; severity dynamic; print-time yes; };
channel unmatched_file {
file "/var/log/bind/unmatched.log" versions 3 size 5m; severity dynamic; print-time yes; };
channel client_file {
file "/var/log/bind/client.log" versions 3 size 5m; severity dynamic; print-time yes; };
channel notify_file {
file "/var/log/bind/notify.log" versions 3 size 5m; severity dynamic; print-time yes; };
category default { default_file; };
category general { general_file; };
category network { network_file; };
category queries { queries_file; };
category resolver { resolver_file; };
category unmatched { unmatched_file; };
category client { client_file; };
category notify { notify_file; };
};
acl "cosa-nostra" {
192.168.0.0/16;
};
zone "." {
type hint; file "named.ca"; };
zone "aplica.intra" {
type master; file "pri/aplica.intra.zone"; };
zone "0.168.192.in-addr.arpa" {
type master; file pri/192.168.0.zone"; };
zone "1.168.192.in-addr.arpa" {
type master; file "pri/192.168.1.zone"; };
zone "2.168.192.in-addr.arpa" {
type master; file "pri/192.168.2.zone"; };
|
En ese fichero hay varios puntos importantes. Al inicio del fichero hay varias directivas de configuración generales dentro de options, en logging se establecen los ficheros de bitácora para cada acción del bind. ACL es una lista de control de accesos, en una red simple no debe ser necesario. A partir de ahi comienzan las zonas.
[editar] Zona "."
En este fichero hay cuatro zonas, dos directas y dos inversas. La primera es "." y equivaldria a localhost, hace referencia a named.ca
| Archivo: /etc/bind/named.ca |
; <<>> DiG 9.3.2 <<>> @a.root-servers.net ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52726 ;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 518400 IN NS G.ROOT-SERVERS.NET. . 518400 IN NS F.ROOT-SERVERS.NET. . 518400 IN NS B.ROOT-SERVERS.NET. . 518400 IN NS J.ROOT-SERVERS.NET. . 518400 IN NS K.ROOT-SERVERS.NET. . 518400 IN NS L.ROOT-SERVERS.NET. . 518400 IN NS M.ROOT-SERVERS.NET. . 518400 IN NS I.ROOT-SERVERS.NET. . 518400 IN NS E.ROOT-SERVERS.NET. . 518400 IN NS D.ROOT-SERVERS.NET. . 518400 IN NS A.ROOT-SERVERS.NET. . 518400 IN NS H.ROOT-SERVERS.NET. . 518400 IN NS C.ROOT-SERVERS.NET. ;; ADDITIONAL SECTION: G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4 F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241 B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201 J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30 K.ROOT-SERVERS.NET. 3600000 IN A 193.0.14.129 L.ROOT-SERVERS.NET. 3600000 IN A 198.32.64.12 M.ROOT-SERVERS.NET. 3600000 IN A 202.12.27.33 I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17 E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10 D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90 A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4 H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53 C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12 ;; Query time: 122 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Tue Dec 19 12:46:15 2006 ;; MSG SIZE rcvd: 436 |
que es la salida del comando
| Código: Console |
# dig @a.root-servers.net |
y que lo único que hace es darnos independencia con respecto a un DNS externo.
[editar] Zonas "x.168.192.in-addr.arpa"
Estas zonas son las zonas de resolución inversa para cada una de las tres subredes en las que, en un principio, se dividirá nuestra red. Si no sabes que significa una zona de resolución inversa, leete este documento) el fichero al que referencia es el siguiente:
| Archivo: /etc/bind/pri/19 |
$TTL 3D
@ IN SOA aplica.intra. root.aplica.intra. (
2002081604 ; Serial
28800 ; Refresh
14400 ; Retry
604800 ; Expire - 1 week
86400 ) ; Minimum
IN NS gustavo.aplica.intra.
; Subred de la oficina
2 IN PTR desarrollo.aplica.intra.
3 IN PTR validacion.aplica.intra.
5 IN PTR demo.aplica.intra
6 IN PTR mr.aplica.intra.
...
|
[editar] Zona "aplica.intra"
Aquí se referencian todas las ips y los nombres que se les desea dar a cada una de ellas, una maquina con varios alias puede definirse una sola vez.
| Archivo: /etc/bind/pri/aplica.intra.zone |
$TTL 3D
aplica.intra. IN SOA aplica.intra. root.aplica.intra. (
27
1D
30M
1W
1D )
NS aplica.intra.
TXT "Aplica Corp."
localhost A 127.0.0.1
; Servidores oficiales
desarrollo A 192.168.1.2
validacion A 192.168.1.3
produccion A 192.168.2.4
demo A 192.168.1.5
mr A 192.168.1.6
tr A 192.168.1.7
install A 192.168.1.8
; Servidores de prueba
install1 A 192.168.1.10
install2 A 192.168.1.11
dellprint A 192.168.1.15
printserver A 192.168.1.16
; Servicios ofrecidos
gestion CNAME gustavo.aplica.intra.
dev CNAME gustavo.aplica.intra.
svn CNAME gustavo.aplica.intra.
glpi CNAME gustavo.aplica.intra.
maven CNAME gustavo.aplica.intra.
ldap CNAME gustavo.aplica.intra.
ldapadmin CNAME gustavo.aplica.intra.
rsync CNAME gustavo.aplica.intra.
ftp CNAME gustavo.aplica.intra.
schemas CNAME gustavo.aplica.intra.
; Servidores "especiales"
gustavo A 192.168.1.1
; Servidores extranjeros a los que accedemos
empresa1 A 212.3.113.37
empresa2 A 213.63.73.63
|
Podemos ver que la misma IP (la máquina que estamos instalando) será referenciada con varios nombres (gestion, dev, svn, glpi), más adelante se procederá a la instalación y configuración de múltiples servidores virtuales con apache y se explicará el motivo de esta redundancia.
[editar] Fin de la configuración e inicio del servidor
Una vez que las zonas están creadas correctamente, se prepara el servicio para que se ejecute al arranque y se inicia
| Código: Console |
# /etc/init.d/named restart * Stopping named ... [ ok ] * Starting named ... [ ok ] # rc-update add named default * named added to runlevel default |
[editar] Servidor Ldap
Se usa Ldap para mantener el sistema de usuarios de la empresa. Ldap contiene actualmente directorios para los usuarios, las máquinas y varios grupos, y esta integrado con varios servidores de la misma máquina. En esta sección se explica como configurar Ldap sin SSL, más adelante se explicará la integración de los distintos servidores con Ldap.
Para instalar Ldap, bastará con hacerle un emerge, al igual que en las demás ocasiones
| Código: Console |
# emerge openldap |
Los ficheros de configuración de Ldap estan en /etc/openldap bajo Gentoo, el primer fichero que hemos de editar es el /etc/openldap/ldap.conf, que se define la conexión con el servidor Ldap:
| Archivo: /etc/openldap/ldap.conf |
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. BASE dc=aplica, dc=intra URI ldap://ldap.aplica.intra:389/ |
El fichero más importante de configuración de Ldap es el /etc/openldap/slapd.conf, a continuación se mostrará el fichero usado en Aplica a modo de ejemplo y se realizará una breve descripción del mismo:
| Archivo: /etc/openldap/slapd.conf |
# Esquemas a incluir
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema
include /var/www/localhost/htdocs/egroupware/phpgwapi/doc/ldap/phpgwaccount.schema
include /var/www/localhost/htdocs/egroupware/phpgwapi/doc/ldap/phpgwcontact.schema
# A mi me gusta el md5
password-hash {md5}
# Cosas varias
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
loglevel 256
#######################################################################
# BDB database definitions
#######################################################################
database ldbm
suffix "dc=aplica,dc=intra"
rootdn "cn=root,dc=aplica,dc=intra"
rootpw {MD5}X4hSbaUMedtyH5nSqRCBRQ==
checkpoint 32 30 # <kbyte> <min>
directory /var/lib/openldap-data
# Indices to maintain
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index objectClass,uid,uidNumber,gidNumber,memberUid eq
index cn,mail,surname,givenname eq,subinitial
index default eq
index phpgwContactOwner pres,eq,sub
#######################################################################
# Politica de control de accesos
#######################################################################
# Un usuario autentificado debe poder cambiar su propia contraseña,
# un usuario anonimo debe poder identificarse y un usuario del grupo
# LDAPaccess debe ver las contraseñas de los demas. El resto de gente nada
#
access to attrs=userPassword
by self write
by anonymous auth
by * none
# SAMBA
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
by self write
by anonymous auth
by * none
# Un usuario puede modificar su entrada, los demas leen
access to *
by self write
by * read
|
Este fichero se organiza en varias secciones, la primera de ellas sirve para incluir esquemas que se usaran posteriormente, en nuestro caso los esquemas estándares para una empresa y los específicos para su uso con samba y egroupware. A continuación se realizan algunos ajustes generales y se procede a la definición de la base de datos que empleará LDAP, donde se definirá la base, el usuario administrador etc. Por último se crea el listado de indices a mantener y los ACL's o listas de control de acceso (esta es la parte mas larga).
Una vez creado este fichero y configurado al gusto del consumidor (notese que no se usó cifrado SSL puesto que no se consideró necesario), ya solo falta editar el fichero de configuración del script de arranque
| Archivo: /etc/conf.d/slapd |
# conf.d file for openldap # # Uncomment the below to use the new slapd configuration for openldap 2.3 OPTS="-h 'ldaps:// ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'" |
y preparamos el demon para que se levante al inicio (y ya de paso lo arrancamos ahora):
| Código: Console |
# /etc/init.d/slapd start * Starting ldap-server ... [ ok ] # rc-update add slapd default * slapd added to runlevel default |
[editar] Samba
Para el correcto funcionamiento de samba y una adecuada integración con Ldap, necesitaremos instalar samba y smbldap-tools
| Código: Console |
# emerge samba smbldap-tools |
Una vez instalado, comenzaremos con la edición de los ficheros de configuración necesarios, empezaremos por samba:
| Archivo: /etc/samba/smb.conf |
[global]
# Definiciones
netbios name = SAMBA
workgroup = APLICA
server string = Servidor centralizado
# Seguridad
security = user
enable privileges = yes
interfaces = eth0
# bind interfaces = yes
encrypt passwords = yes
# Servidor
local master = yes
os level = 65
domain master = yes
preferred master = yes
# Acceso
null passwords = yes
# Vistas
hide unreadable = yes
hide dot files = yes
browseable = yes
# Sirve a Windows
domain logons = yes
logon script = login.bat OR %U.bat
logon path = \\%L\profiles\%U
logon drive = H:
logon home = \\%L\%U\.9xprofile
time server = yes
# Impresion
printcap name = cups
printing = cups
show add printer wizard = no
# Soporte a Wins
wins support = yes
name resolve order = wins lmhosts host bcast
dns proxy = no
# Configuracion adicional
log file = /var/log/samba/log.%m
max log size = 50
unix charset = ISO8859-1
dos charset = 850
# LDAP
add user script = /usr/sbin/smbldap-useradd -m "%u"
add machine script = /usr/sbin/smbldap-useradd -w "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
passdb backend = ldapsam:ldap://eldominio.aplica.intra/
ldap delete dn = Yes
ldap ssl = no
ldap suffix = dc=aplica,dc=intra
ldap admin dn = cn=root,dc=aplica,dc=intra
ldap group suffix = ou=Groups
ldap user suffix = ou=People
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=People
ldap passwd sync = yes
[netlogon]
path = /var/lib/samba/netlogon
guest ok = Yes
browseable = no
write list = root
[profiles]
path = /var/lib//samba/profiles
writable = yes
browsable = no
create mode = 0644
directory mode = 0755
guest ok = yes
[homes]
path = /home/%U
browseable = no
valid users = %S
read only = no
create mask = 0664
directory mask = 0775
[documentos]
comment = documentos
path = /home/shared/documentos
public = yes
read only = yes
browseable = yes
write list = "@Domain Users"
[audiovisuales]
comment = Ficheros multimedia
path = /home/shared/biblioteca
public = yes
read only = yes
browseable = yes
write list = "@Domain Users"
[printers]
comment = Impresoras
path = /var/spool/samba
guest ok = Yes
printable = Yes
use client driver = no
browseable = Yes
public = Yes
printer name = 1600n_192.168.1.15
printer name = HPColorJet
[print$]
path = /var/lib/samba/printers
browseable = yes
guest ok = yes
read only = yes
public = Yes
[pdf-generator]
comment = Generador de PDF
path = /var/tmp
printable = Yes
print command = /usr/share/samba/scripts/print-pdf %s ~%u \\\\\\\\%L\\\\%u %m %I &
|
Este fichero es largo así que iremos poco a poco.
La mayoría de opciones son autoexplicativas, aunque algunas si conviene conocerlas.
Dentro de la configuración global, domain logons configura Samba para aceptar accesos por dominios actuando como PDC, junto a esta opción se ha de añadir la categoría [netlogon] dentro del fichero de configuración y con eso las máquinas Windows serán capaces de autentificarse contra Samba.
| Atención: Domain logons funciona con security = user |
Ahora solo falta el método de autentificación, que en nuestro caso se realizará a través de Ldap, las directivas despues del comentario que abre la sección Ldap de la configuración global indicán los programas a ejecutarse para permitir la intercomunicación samba<->ldap (mediante smbldap-tools, que se verán posteriormente) y los sufijos en los que se encuentran los grupos y usuarios de la empresa.
El resto de la configuración más o menos se entiende, una vez lo tengamos cada uno personalizado a nuestro gusto, basta con arrancarlo y añadirlo al inicio:
| Código: Console |
# /etc/init.d/samba start * samba -> start: smbd ... [ ok ] * samba -> start: nmbd ... [ ok ] # rc-update add samba default * samba added to runlevel default |
[editar] Smbldap-tools
Tras instalar smbldap-tools con el típico
| Código: Console |
# emerge smbldap-tools |
Deberemos irnos al directorio /etc/smbldap-tools para configurarlo. El primer fichero a editar es el /etc/smbldap-tools/smbldap_bind.conf donde indicaremos el servidor y principal usuario (así como contraseña) del servidor Ldap para permitir conexiones posteriores
| Archivo: /etc/smbldap-tools/smbldap_bind.conf |
############################ # Credential Configuration # ############################ # Notes: you can specify two differents configuration if you use a # master ldap for writing access and a slave ldap server for reading access # By default, we will use the same DN (so it will work for standard Samba # release) slaveDN="cn=root,dc=aplica,dc=intra" slavePw="pwdinventada1" masterDN="cn=root,dc=aplica,dc=intra" masterPw="pwdinventada1" |
El siguiente fichero guarda la parte de configuración de los scripts de smbldap-tools
| Archivo: /etc/smbldap-tools/smbldap.conf |
##############################################################################
#
# General Configuration
#
##############################################################################
# Put your own SID. To obtain this number do: "net getlocalsid".
# If not defined, parameter is taking from "net getlocalsid" return
SID="S-1-5-21-1445362322-1682322293-238168389"
sambaDomain="aplica"
##############################################################################
#
# LDAP Configuration
#
##############################################################################
slaveLDAP="ldap.aplica.intra"
slavePort="389"
masterLDAP="ldap.aplica.intra"
masterPort="389"
hash_encrypt="MD5"
ldapTLS="0"
verify="none"
suffix="dc=aplica,dc=intra"
usersdn="ou=Users,${suffix}"
computersdn="ou=Computers,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=aplica,${suffix}"
scope="sub"
crypt_salt_format="%s"
##############################################################################
#
# Unix Accounts Configuration
#
##############################################################################
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="45"
##############################################################################
#
# SAMBA Configuration
#
##############################################################################
userSmbHome="\\SAMBA\%U"
userProfile="\\SAMBA\profiles\%U"
userHomeDrive="H:"
mailDomain="aplicatec.com"
##############################################################################
#
# SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
#
##############################################################################
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
# comment out the following line to get rid of the default banner
# no_banner="1"
|
Ya hemos configurado el smbldap-tools, ahora es necesario crear cuentas y grupos que permitan autentificarse bajo Samba dentro de Ldap, para eso primero estableceremos la clave de administrador de ldap y luego usaremos los scripts provistos por smbldap-tools
| Código: Console |
# echo "pwdinventada1" `slappasswd -h {MD5}` >> /etc/openldap/slapd.conf
# smbpasswd -w pwdinventada1
Setting stored password for "cn=root,dc=aplica,dc=intra" in secrets.tdb
Samba will store this datas in /etc/samba/secrets.tbd.
|
y reiniciamos el ldap y samba
| Código: Console |
# /etc/init.d/slapd restart * Stopping ldap-server ... [ ok ] * Starting ldap-server ... [ ok ] # /etc/init.d/samba start * samba -> start: smbd ... [ ok ] * samba -> start: nmbd ... [ ok ] |
con esto, ya estamos listos para comenzar la generación de usuarios ldap:
| Código: Console |
# smbldap-populate Populating LDAP directory for domain APLICA (S-1-5-21-1445362322-1682322293-238168389) (using builtin directory structure) adding new entry: dc=aplica,dc=intra adding new entry: ou=Users,dc=aplica,dc=intra adding new entry: ou=Groups,dc=aplica,dc=intra adding new entry: ou=Computers,dc=aplica,dc=intra adding new entry: uid=root,ou=Users,dc=aplica,dc=intra adding new entry: uid=nobody,ou=Users,dc=aplica,dc=intra adding new entry: cn=Domain Admins,ou=Groups,dc=aplica,dc=intra adding new entry: cn=Domain Users,ou=Groups,dc=aplica,dc=intra adding new entry: cn=Domain Guests,ou=Groups,dc=aplica,dc=intra adding new entry: cn=Domain Computers,ou=Groups,dc=aplica,dc=intra adding new entry: cn=Administrators,ou=Groups,dc=aplica,dc=intra adding new entry: cn=Account Operators,ou=Groups,dc=aplica,dc=intra adding new entry: cn=Print Operators,ou=Groups,dc=aplica,dc=intra adding new entry: cn=Backup Operators,ou=Groups,dc=aplica,dc=intra adding new entry: cn=Replicators,ou=Groups,dc=aplica,dc=intra adding new entry: sambaDomainName=APLICA,dc=aplica,dc=intra Please provide a password for the domain root: Changing password for root New password : Retype new password : |
| Explicación: Pero... ¿qué hemos hecho hasta ahora? |
Antes de seguir metiendo ficheros de configuración y paquetes a lo loco, vamos a detenernos para ver
que hemos hecho, ya que esto nos ayudará a comprender que es lo que vamos a hacer a partir de ahora.
Tras configurar las USE que usaremos para compilar e instalar los paquetes, se comenzó por el servidor
DHCP, este servidor ofrecerá IP a todo equipo de la subred que la pida, además nos permitirá dar IP's
fijas a ciertos equipos filtrandolos por sus direcciones MAC, esto es útil ya que nos permite controlar
las IP's asignadas a los equipos desde el propio servidor, sin tener que configurar equipo por equipo
su IP.
El siguiente paso es el servidor DNS de la empresa, gracias al cual podremos designar nombres para
los equipos o máquinas según su funcionalidad dentro de la empresa. De esa forma al servidor
de subversion lo llamaremos svn.aplica.intra, a la impresora dellprint.aplica.intra y asi con todo,
consiguiendo una interfaz de red mas "amena y humana" por decirlo de alguna forma.
A partir de aquí empieza el verdadero trabajo de centralización, lo primero es crear un esquema jerárquico
de usuarios dentro de LDAP, para comenzar a dar usuarios y máquinas de alta dentro de la organización.
El esquema seguido es:
intra (dc: dominio)
|
aplica (dc: organización)
-------------------
| | |
Groups Computers Users (ou: Unidades organizativas)
| |
Domain Users... Pepito... (de aqui puede colgar datos especificos de una UO)
Es decir, cuando se contrate a un nuevo empleado de la empresa, se le creará una cuenta dentro
de "Domain Users", se creará una cuenta dentro de "Domain Computers" para su pc, y se colocará
el usuario en los grupos adicionales necesarios dependiendo de su cargo.
"Domain Users" y "Domain Computers" son grupos del Samba, cuando un usuario de Windows vaya a
entrar en la red, si en Sistema (dentro del panel de control) le damos a cambiar el dominio
y le ponemos en el dominio de APLICA (fijense en la entrada que crea smbldap-populate que dice
adding new entry: sambaDomainName=APLICA,dc=aplica,dc=intra ya que es la que especifica el dominio)
nos pedira la contraseña de administrador de ldap del servidor, y al introducirla automáticamente
dará de alta el equipo en Domain Computers, y prepara el equipo para identificarse contra el servidor.
Algunas cosas no tienen aun razón de ser, como el hecho de poner "@Domain Users" en el acceso a un disco
compartido con Samba (la "@" indica que es un grupo) ya que este grupo aun no es reconocido por el
sistema de identificación del servidor, este será el siguiente paso.
|
[editar] Gestionando Ldap + Samba en los equipos
Ahora que tenemos configurado correctamente el servidor, vamos a indicarle a un equipo de la subred que debe autentificarse de ahora en adelante mediante LDAP (por supuesto sin quitar la autentificación local, ya que el servidor puede caerse y se denegaría el acceso total a las máquinas). Lo primero es instalar el soporte LDAP para el pam y el nss
| Código: Console |
# emerge pam_ldap nss_ldap -pv These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] sys-auth/pam_ldap-183 USE="ssl -sasl" 0 kB [ebuild N ] sys-auth/nss_ldap-253 USE="-debug -sasl" 0 kB |
y a continuación procedemos a configurarlo.
Hay tres archivos básicos para la autentificación contra el servidor, éstos ficheros y las configuraciones que deben tener son:
| Archivo: /etc/ldap.conf |
host ldap.aplica.intra base dc=aplica,dc=intra bind_policy soft |
Que es un indicador de la conexión al servidor Ldap, la directiva bind_policy sirve para indicar que la conexión debe intentarla una vez y en caso de fracasar, no volver a intentarlo, algo necesario para que no tarde demasiado cada equipo cuando arranque y, antes de tener conexión a red, intentar acceder al servicio LDAP.
| Archivo: /etc/nsswitch.ldap |
passwd: files ldap group: files ldap hosts: files dns ldap services: ldap [NOTFOUND=return] files networks: ldap [NOTFOUND=return] files protocols: ldap [NOTFOUND=return] files rpc: ldap [NOTFOUND=return] files ethers: ldap [NOTFOUND=return] files |
Lo demás puede dejarse como está. Este fichero establece el órden de búsqueda para cada parámetro.
| Archivo: /etc/system.auth |
#%PAM-1.0 auth required pam_env.so auth sufficient pam_unix.so likeauth nullok auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so #account sufficient pam_localuser.so account sufficient pam_ldap.so password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 password sufficient pam_unix.so nullok md5 shadow use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session required pam_limits.so session required pam_unix.so session optional pam_ldap.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 |
Este fichero, nombrado como common-auth en varios sistemas, establece las directrices de autentificación del sistema, una vez instalado el módulo de LDAP del PAM, se ha de activar para el registro, la clave y la sesión.
[editar] Creación de un usuario
Para crear un usuario y darlo de alta, se debera usar el comando smbldap-useradd
| Código: Console |
# smbldap-useradd -a -m -P -N "Pepito" -S "Gonzalez" -M pepito@correo.es |
[editar] Instalación de cups
Como paso adicional, instalaremos el sistema cups configurado con soporte samba para permitir la gestión de impresoras. Para instalarlo bastará con el típico
| Código: Console |
# emerge cups |
http://localhost:631y dar de alta alguna impresora, que posteriormente colocaremos en el fichero smb.conf para indicarle a samba que debe compartir esa impresora, las impresoras a compartir irán al final de la sección [printers] y seguirán el formato:
| Archivo: /etc/samba/smb.conf |
[printers]
...
printer name = 1600n_192.168.1.15
printer name = HPColorJet
|
[editar] Gestión de Ldap
Para gestionar los usuarios, añadirlos a algún grupo o cambiarle algun parámetro, lo recomendable (o lo que yo recomiendo más bien) es instalarse alguna aplicación de gestión de Ldap. Yo he probado varias y personalmente recomiendo Luma y Jxplorer (cuidado con Lat, una vez me inutilizó todos los registro que modifiqué usándolo) pero me quedo con phpldapadmin.
Tras instalar el paquete con
| Código: Console |
# emerge phpldapadmin |
http://ldapadmin.aplica.intra.
[editar] Copia de seguridad de Ldap
Como nota adicional, indicar que en el caso de que se deseé guardar una copia de seguridad de todo el árbol de Ldap, puede hacerse mediante los comandos slapcat y ldapsearch , por ejemplo el comando
| Código: Console |
# ldapsearch -L > everybody.ldif |
almacenará todos los contactos en formato ldif en el fichero everybody.ldif.
