Curso avanzado de Linux
SAMBA
Rafael Varela Pet
Unidad de Sistemas
Área de Tecnologías de la Información y Comunicaciones
Universidad de Santiago de Compostela
Curso avanzado de GNU/Linux
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
Curso avanzado de GNU/Linux
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
Curso avanzado de GNU/Linux
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
Curso avanzado de GNU/Linux
Demonios y utilidades
● 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
● Utilidades
– smbclient
– nmblookup: permite encontrar nombres NetBIOS en
una red, buscar sus dir. IP (entre otras cosas)
– SWAT (Samba Web Administration Tool)
Curso avanzado de GNU/Linux
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
Curso avanzado de GNU/Linux
Instalación en Debian
● Paquetes
– samba: servidores
– smbclient: herramientas cliente
– samba-common: componentes comunes a la parte de
servidor y la de cliente
Curso avanzado de GNU/Linux
Resolución de nombres
● Broadcast en la red local
● WINS: Windows Internet Name Service. Servicio
semejante al DNS
● Fichero lmhosts: equivalente al fichero hosts de
UNIX
● DNS: Método preferido en Windows 2000 en
adelante
Curso avanzado de GNU/Linux
Problemática en 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
Curso avanzado de GNU/Linux
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.
● Las soluciones:
– mantener una base de datos separada
– delegar la autentificación a otra máquina
Curso avanzado de GNU/Linux
Bases de datos de usuarios
● Parámetro passdb backend
– tdbsam: Trivial Database (TDB)
– ldapsam
– nisplussam
– mysql
● Por defecto, en Debian se utiliza tdbsam
● Ejemplos:
passdb backend =
tdbsam:/etc/samba/passdb.tdbpassdb
passdb backend=ldapsam:ldap://localhost
Curso avanzado de GNU/Linux
tdbsam
● Bases de datos en /var/lib/samba. Ejemplos:
secrets.tdb, passdb.tdb
● tdbbackup permite
– hacer copias de seguridad
> tdbbackup *.tdb
– verificar la integridad de la base de datos
> tdbbackup v *.tdb
● Si instalamos el paquete tdb-tools podemos
emplear tdbtool y tdbdump
Curso avanzado de GNU/Linux
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 ]
Curso avanzado de GNU/Linux
Gestión usuarios
● Añadir un usuario
> smbpasswd a nombre_usuario
● Cambiar la contraseña a un usuario
> smbpasswd nombre_usuario
● Habilitar/Deshabilitar un usuario
> smbpasswd e nombre_usuario
> smbpasswd d nombre_usuario
● Borrar un usuario
> smbpasswd x nombre_usuario
Curso avanzado de GNU/Linux
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.
Curso avanzado de GNU/Linux
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 =
Curso avanzado de GNU/Linux
Autentificación
● Encriptación passwords
encrypt passwords = yes
● Métodos de autentificación (parámetro 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 a un dominio
– ads: el servidor pertenece a un dominio de Directorio
Activo
Curso avanzado de GNU/Linux
Autentificación “server”
● Delega la autenticación en un servidor
determinado
● En smb.conf
security=server
encrypt passwords = yes
password server =”nombre_servidor”
● Se requiere una cuenta UNIX local (puede estar
bloqueada)
Curso avanzado de GNU/Linux
Autentificación “domain”
● En smb.conf
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
Curso avanzado de GNU/Linux
Gestión de cuentas
● Automatizar creación de cuentas UNIX:
– 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
– Winbind: altas y bajas dinámicas. El equipo es
un miembro completo del dominio
Curso avanzado de GNU/Linux
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 independiente
(winbind_idmap.tdb) en la que se almacena la
asociación entre UIDs / GIDs UNIX y los SIDs de NT.
● Requisitos previos:
– Nuestro servidor debe estar unido al dominio
– Instalamos paquete winbind
Curso avanzado de GNU/Linux
Winbind. Configuración
● Editar smb.conf:
security = domain
winbind use default domain = yes
winbind separator = +
winbind cache time = 300
idmap uid = 1000020000
idmap gid = 1000020000
template shell = /bin/bash
template homedir = /home/%D/%U
winbind enum groups = yes
winbind enum users = yes
Curso avanzado de GNU/Linux
Winbind. Configuración
● En caso de tener muchos usuarios, puede
considerarse:
winbind enum groups = no
winbind enum users = no
– Pero puede provocar problemas a ciertas aplicaciones
● Ajustar el parámetro “valid users” en la sección
[homes]
valid users = %S
Curso avanzado de GNU/Linux
Winbind. Configuración
● Parámetro “winbind separator”:
– Define el carácter empleado cuando se muestra un
usuario en la forma DOMINIO\usuario.
– Sólo se aplica cuando usamos los módulos
pam_winbind.so y nss_winbind.so para los servicios
UNIX
– Algunos caracteres problemáticos
● + : También se emplea con NIS en /etc/group
● \
: Carácter de escape en el shell
Curso avanzado de GNU/Linux
Winbind. Configuración
● Con Windows Server 2003
– Editar sección [global] de smb.conf
client schannel = no
– Asignar usuario para establecer sesión con un
controlador de dominio. Ejecutar:
> wbinfo –setauthuser=usuario%clave
● Alternativa. Emplear Kerberos.
– En smb.conf:
security=ads
Curso avanzado de GNU/Linux
Winbind. Pruebas
● Unirnos al dominio e iniciar winbind
● Probar configuración:
● > wbinfo p (hace 'ping')
● > wbinfo t
(comprueba la cuenta de la máquina en el dominio)
● > wbinfo g (lista grupos)
● > wbinfo u (lista usuarios)
● El resolver UNIX tiene que encontrar la
información en DNS del Servidor de Dominio.
– Ajustar contenido de /etc/resolv.conf
Curso avanzado de GNU/Linux
Winbind. NSS.
● NSS (Name Service Switch): sistema modular
para acceder a las bases de datos usadas por la
librería C.
● Configurar NSS
– Editar /etc/nsswitch.conf
passwd: files winbind
group: files winbind
● Probar NSS:
> getent group
> getent passwd
Curso avanzado de GNU/Linux
Winbind. PAM
● Podemos autenticar otros servicios vía PAM
● Editar el fichero /etc/pam.d correspondiente al servicio
que queremos modificar
● Ejemplo: OpenSSH, editar /etc/pam.d/ssh:
auth sufficient pam_winbind.so
@include commonauth
...
account sufficient pam_winbind.so
@include commonaccount
...
● Conectar al servidor SSH:
> ssh DOMINIO+usuario@servidor_ssh
Curso avanzado de GNU/Linux
Winbind y Kerberos
● El método anterior es compatible con dominios
pre-windows 2000
● Con Directorio Activo podemos emplear
Kerberos
● En smb.conf:
realm = CURSOLINUX.LOCAL
security = ADS
encrypt paswords = yes
password server = servidor_kerberos
(esto último, sólo si no es capaz de localizarlo)
Curso avanzado de GNU/Linux
Winbind. Kerberos
● Instalar krb5-user, krb5-clients y krb5-config
● /etc/krb5.conf
[libdefaults]
default_realm = CURSOLINUX.LOCAL
[realms]
CURSOLINUX.LOCAL = {
kdc = 192.168.253.21
admin_server = 192.168.253.21
}
[domain_realm]
.cursolinux.local = CURSOLINUX.LOCAL
cursolinux.local = CURSOLINUX.LOCAL
Curso avanzado de GNU/Linux
Winbind. Kerberos
● Sincronizar reloj del equipo Debian
> net time set
● Probar kerberos:
> kinit
[email protected]
> klist
● Unirse al dominio y almacenar la cuenta del
equipo en la unidad organizativa “comput
Comentarios de: Curso avanzado de Linux SAMBA (0)
No hay comentarios