Curso avanzado de administración de sistemas Linux

Rafael Varela Pet

Unidad de Sistemas

Área de Tecnologías de la Información y Comunicaciones

Universidad de Santiago de Compostela

Versión 0.1

Curso avanzado de administración de sistemas Linux

Integración con Windows: SAMBA

SAMBA

Paquete Open Source que permite a los sistemas UNIX comunicarse mediante SMB/CIFS.
SMB=Server Message Block
CIFS=Common Internet FileSystem

Compartición de archivos e impresoras

Funcionamiento como cliente y/o servidor

SAMBA. Nomenclatura

NetBEUI: Protocolo de transporte. Actúa al mismo nivel que TCP/IP. No empleado por SAMBA

NetBIOS: API para operaciones en red

NBT: NetBIOS sobre TCP/IP

SMB/CIFS funciona sobre NetBIOS en sistemas Windows

SAMBA es una implementación de NBT y SMB/CIFS

SAMBA. Servicios

Servicios presentes en NBT:

Servicio de nombres: permite que los equipos se puedan localizar por sus nombres

Servicio de datagramas: intercambio de datos en modo desconexión (se usan paquetes UDP)

Servicio de sesión: intercambio de datos orientado a conexión (se usa TCP). Es el servicio usado para intercambio de ficheros

SAMBA. Puertos

Puertos empleados en NBT:

137/udp: servicio de nombres

138/udp: servicio de datagramas

Servicio de sesión:

139/tcp: modo clásico a través de NetBIOS

445/tcp: SMB/CIFS directamente por TCP/IP sin usar NetBIOS

SAMBA. Resolución de nombres

Broadcast

WINS

Fichero lmhosts

DNS

SAMBA
Problemas en la compartición de archivos

Mayúsculas/minúsculas
UNIX es sensible a mayúsculas
Windows “retiene” las mayúsculas
DOS solo trabaja en mayúsculas

Juego de caracteres

Longitud máxima de los nombres de fichero

Propietario de los ficheros

Permisos de acceso /ACLs

SAMBA
Problemas en la autentificación

Los sistemas Windows antiguos enviaban las claves en claro => podemos calcular el hash y comparar con lo que tenemos en /etc/shadow

Actualmente las claves se envían cifradas con un sistema incompatible con el de UNIX.

La soluciones:

mantener una base de datos separada

delegar la autentificación a otra máquina

SAMBA. Demonios

smbd: hace prácticamente todo el trabajo ya que es el que maneja la compartición de archivos e impresoras

nmbd: incorpora el servicio de nombres

SWAT (Samba Web Administration Tool)

SAMBA. Fichero smbpasswd

passdb backend = smbpasswd guest

En /etc/samba/smbpasswd

Formato:
username:uid:HASH LANMAN:HASH NT:Flags:Fecha de modificación

Flags:
U: Usuario normal
N: Usuario sin clave
D: Cuenta desactivada
W: Cuenta de estación de trabajo
Ejemplo: [U ]

SAMBA. Alternativas smbpasswd

passdb backend =

tdbsam: Trivial Database (TDB)

ldapsam

nisplussam

mysql

Ejemplo:
passdb backend=ldapsam:ldap://localhost

SAMBA. Configuración

En /etc/samba/smb.conf

Tres bloques:

Global

Compartición de ficheros

Compartición de impresoras

Secciones especiales:
[global] [homes] [printers]

Podemos comprobar nuestra configuración con el comando testparm.

SAMBA. Configuración

Identificación de nuestra máquina
workgroup =
netbios name =
netbios aliases =

Alias: Podemos usar ficheros específicos para cada alias:
include = %L.conf

Elección del master browser.
os level =
local master =
preferred master =

SAMBA. Autentificación

Encriptación passwords
encrypt passwords = yes

Métodos de autentificación (param. security=)

share: no hay usuarios. Se asignan contraseñas a los recursos

user: se necesita un usuario UNIX en el servidor

server: se le reenvía la petición de autentificación a otra máquina.

domain: el servidor SAMBA pertenece al dominio

SAMBA. Autentificación

security=server

encrypt passwords = yes

password server =”nombre netbios”

se requieres una cuenta UNIX (puede estar bloqueada)

SAMBA. Autentificación

security=domain

encrypt passwords = yes

workgroup = “nombre_grupo”

password server = *

La máquina tiene que estar registrada en el dominio:

net rpc join -U administrador

Tienen que existir cuentas UNIX locales

SAMBA. Gestión de cuentas

Creación de cuentas UNIX:

Winbind: altas y bajas dinámicas

Usar parámetro add user script: Crea cuentas cuando un usuario se autentifica correctamente. Las bajas son manuales.
Ejemplo:
add user script = /usr/sbin/useradd %u

SAMBA. Winbind

Winbind permite:

Verificar las credenciales de un usuario (vía PAM).

Resolución de la identidad (vía NSS).

Winbind mantiene una base de datos (winbind_idmap.tdb) en la que se almacena las asociaciones entre UIDs / GIDs UNIX y los SIDs de NT.

Requisitos previos:

Nuestro servidor debe estar unido al dominio

Instalamos paquete winbind

SAMBA. Configuración

Editar smb.conf:

security = domain

password server = *

winbind use default domain = yes

winbind separator = /

winbind cache time = 300

idmap uid = 10000-20000

idmap gid = 10000-20000

template shell = /bin/bash

template homedir = /home/%D/%U

SAMBA. Configuración

Con Windows Server 2003

Editar smb.conf
client schannel = no

wbinfo –set-auth-user=usuario%clave

Alternativa:

Usar modo security=ads

Winbind. Config. NSS.

NSS (Name Service Switch): sistema modular para acceder a las bases de datos usadas por la librería C.

Configurar NSS (/etc/nsswitch.conf)
passwd: files winbind
group: files winbind

Winbind. Pruebas

Unirnos al dominio

Arrancar winbind

Probar configuración:

wbinfo -p (hace 'ping')

wbinfo -t
(comprueba la cuenta de la máquina en el dominio)

'wbinfo -g' (lista grupos)

ejecutar -u (lista usuarios)

Probar NSS:

getent group

getent passwd

Winbind. PAM

Editar el fichero /etc/pam.d correspondiente al servicio que queremos modificar

Ejemplo: openSSH

En /etc/pam.d/ssh:
auth sufficient pam_winbind.so
@include common-auth
...
account sufficient pam_winbind.so
@include common-account
...
session required pam_mkhomedir.so skel=/etc/skel umask=0027

Winbind. Directorio Activo

smb.conf:
realm = USC.ES
security = ADS
encrypt paswords = yes
password server = servidor_kerberos
(sólo si no es capaz de localizarlo)

Winbind. Directorio Activo

Instalar krb5-user krb5-clients krb5-config

/etc/krb5.conf
[libdefaults]
default_realm = USC.ES
[realms]
USC.ES = {
kdc = raiz.usc.es
admin_server = raiz.usc.es
}
[domain_realm]
.usc.es = USC.ES
usc.es = USC.ES

Winbind. Directorio Activo

Probar kerberos:
kinit usuario@USC.ES
klist

Unirse al dominio:
kinit administrador@USC.ES
net ads join “unidad_organizativa”
Using short domain name -- USC
Joined 'equipo' to realm 'USC.ES'

Winbind. Directorio Activo

Probar winbind:
/etc/init.d/winbind restart
> wbinfo -p
Ping to winbindd succeeded on fd 4
> wbinfo -t
checking the trust secret via RPC calls succeeded
> wbinfo -g

Winbind. Directorio Activo

Pruebas desde clientes Windows 2000:
net use * //servidorSamba/share

Pruebas con smbclient:
smbclient -k //servidor/share

samba

Curso avanzado de administración de sistemas Li

Autor:
Rafael Varela Pet
Area de Tecnologías de la Información y Comunicaciones
Universidad de Santiago de Compostela

Rafael Varela Pet

2006-02-13T17:54:30