Uwierzytelnianie Samby protokołem Kerberos - konfiguracja

Konfiguracja serwerów, usług, itp.
zszpiegz
Posty: 2
Rejestracja: 21 marca 2017, 12:47

Uwierzytelnianie Samby protokołem Kerberos - konfiguracja

Post autor: zszpiegz »

Witam.
Od kilku dni mam problem z poprawną konfiguracją Samby i Kerberosa.
Sama Samba bez uwierzytelniania działa. Testowałem publiczne udostępnianie sieci LAN i na drugim laptopie z linuxem i windowsem działa bez zarzutu. Problem pojawia się przy próbie zintegrownia Kerberosa z Sambą.

Po zainstalowaniu kerberos-server skonfigurowałem go, dodałem konto admina, utworzyłem potem odpowiednie królestwo cifs/[MY_REALM] i keytab dla niego. Na końcu dodałem jeszcze użytkownika, który generalnie powinien mieć dostęp do usług serwera Samba.
Wpisując komendę "klist" wyświetla mi się komunikat, że mam ważny bilet 24h więc niby jest ok, ale jak chcę uzyskać listę udostępnianych zasobów: smbclient -k -L //adres_swojej_maszyny/ to wyrzuca mi błąd:
session_setup_failed: NT_STATUS_IO_TIMEOUT
albo
session setup failed: NT_STATUS_INTERNAL_ERROR

Szukałem w internecie informacji na temat tych błędów, kombinowałem z konfiguracjami i wraz nic sensownego nie wymyśliłem.
Czy jest ktoś, kto dobrze jest ogarnięty w tym temacie?
Jeśli trzeba to nawet mogę wyznaczyć jakieś wynagrodzenie za pomoc, gdyż jest to dla mnie bardzo ważne.

Adres lokalny mojej maszyny:
192.168.43.139

Moje pliki konfiguracyjne:

Kod: Zaznacz cały

/etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = UCZELNIA.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = false
 kdc_timesync = 1
 ccache_type = 4
 forwardable = true
 proxiable = true

[realms]
 UCZELNIA.LOCAL = {
  kdc = licencjat.uczelnia.local
  admin_server = licencjat.uczelnia.local
  default_domain = uczelnia.local
 }

[domain_realm]
 .uczelnia.local = UCZELNIA.LOCAL
 uczelnia.local = UCZELNIA.LOCAL
 
http://wklej.org/hash/5a07b2419b3/

Kod: Zaznacz cały

/etc/krb5kdc/kdc.conf
[kdcdefaults]
    kdc_ports = 750,88
    default_realm = UCZELNIA.LOCAL

[realms]
    UCZELNIA.LOCAL = {
        database_name = /var/lib/krb5kdc/principal
        admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
        acl_file = /etc/krb5kdc/kadm5.acl
        key_stash_file = /etc/krb5kdc/stash
        kdc_ports = 750,88
        max_life = 10h 0m 0s
        max_renewable_life = 7d 0h 0m 0s
        master_key_type = des3-hmac-sha1
        supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
        default_principal_flags = +preauth
    }
http://wklej.org/hash/b43e8948f6a/

Kod: Zaznacz cały

/etc/bind/named.conf.options
options {
	directory "/var/cache/bind";

	forwarders {
		8.8.8.8;
		8.8.4.4;
	};

	//========================================================================
	// 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
	//========================================================================
	dnssec-validation auto;

	auth-nxdomain no;    # conform to RFC1035
	listen-on-v6 { any; };
	listen-on port 53 { any; };
	allow-query { any; };
	tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
};
http://wklej.org/id/3067238/

Kod: Zaznacz cały

/etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.43.139
domain licencjat.uczelnia.local
search licencjat.uczelnia.local
http://wklej.org/id/3067240/

Kod: Zaznacz cały

/etc/samba/smb.conf
[global]
   workgroup = UCZELNIA
   password server = licencjat.uczelnia.local
   security = ads
   realm = UCZELNIA.LOCAL
   encrypt passwords = yes
   kerberos method = secrets and keytab
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   netbios name = LICENCJAT
   server role = active directory domain controller
   allow dns updates = nonsecure and secure
   server services = smb, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, dns
   
#======================= Share Definitions =======================

[homes]
   comment = Home Directories
   browseable = no
   read only = no
   create mode = 0750
   valid users = %S
   inherit acls = Yes	

[public]
   path = /media/storage/
   public = yes
   writable = yes
   comment = smb share
   printable = no

[private]
comment = "Private share"
path = /media/priv_storage/
browsable = yes
quest ok = no
read only = no
create mask = 0755


#[netlogon]
#   path = /var/lib/samba/sysvol/uczelnia.local/scripts
#   read only = No

#[sysvol]
#   path = /var/lib/samba/sysvol
#   read only = No
http://wklej.org/hash/ddace421534/

Kod: Zaznacz cały

/etc/hosts
127.0.0.1	localhost
192.168.43.139  	licencjat.uczelnia.local	licencjat

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
http://wklej.org/hash/73c0d7007a0/

Posiłkowałem się tym poradnikiem:
https://help.ubuntu.com/community/Samba/Kerberos
Będę bardzo wdzięczny za pomoc.
Pozdrawiam.

Moderowano: Logi proszę umieszczać w znacznikach code. Jeśli się nie mieszczą na forum wtedy na serwis zewnętrzny.
liske1
Beginner
Posty: 110
Rejestracja: 12 maja 2012, 13:54

Re: Uwierzytelnianie Samby protokołem Kerberos - konfiguracja

Post autor: liske1 »

Możesz udostępnić jeszcze logi samby i kerberosa ?
zszpiegz
Posty: 2
Rejestracja: 21 marca 2017, 12:47

Re: Uwierzytelnianie Samby protokołem Kerberos - konfiguracja

Post autor: zszpiegz »

A tak w ogóle to muszę konfigurować Sambę jako kontrolera domeny?
Bo chodzi o to, że muszę zamontować jakiś zasób udostępniany przez Sambę z wykorzystaniem uwierzytelnienia Kerberosa. Klient również działa w oparciu o Linuksa także nie dałoby rady użyć Samby jako zwykłego serwera? Tam jest opcja "standalone server".
Moja konfiguracja wygląda teraz tak:

Kod: Zaznacz cały

#======================= Global Settings =======================

[global]
   workgroup = UCZELNIA
   realm = UCZELNIA.LOCAL
   netbios name = SERVER
   kerberos method = secrets and keytab
   encrypt passwords = yes
   security = ads
   server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbi$
   server role = standalone server
   
#======================= Share Definitions =======================

[netlogon]
        path = /var/lib/samba/sysvol/uczelnia.local/scripts
        read only = No

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No

[homes]
   comment = Home Directories
   browseable = no
   read only = no
   create mode = 0750

[public]
path = /media/storage/
public = yes
writable = yes
comment = smb share
printable = no
Polecenie "smbclient -L //server -U%" działa i są wyświetlane informacje o zasobach, jednak gdy próbuję zalogować się do admina to wyrzuca mi błąd:
session setup failed: NT_STATUS_NO_LOGON_SERVERS
Z kolei komenda "smbclient -k -L //server":

Kod: Zaznacz cały

gss_init_sec_context failed with [ Miscellaneous failure (see text): unable to reach any KDC in realm UCZELNIA.LOCAL]
SPNEGO(gse_krb5) creating NEG_TOKEN_INIT failed: NT_STATUS_INTERNAL_ERROR
session setup failed: NT_STATUS_INTERNAL_ERROR
Kerberos na pewno jest dobrze skonfigurowany, bo dla SSH działa uwierzytelnianie z użyciem biletów.

Logi samby:

Kod: Zaznacz cały

samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
[2017/05/04 14:24:36.971441,  0] ../source4/smbd/server.c:211(samba_terminate)
  samba_terminate: winbindd child process exited
[2017/05/04 14:52:23.469387,  0] ../source4/smbd/server.c:370(binary_smbd_main)
  samba version 4.2.14-Debian started.
  Copyright Andrew Tridgell and the Samba Team 1992-2014
[2017/05/04 14:52:25.320108,  0] ../source4/smbd/server.c:488(binary_smbd_main)
  samba: using 'standard' process model
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
[2017/05/04 14:52:25.343966,  0] ../lib/util/util_runcmd.c:324(samba_runcmd_io_handler)
  /usr/sbin/winbindd: Failed to exec child - No such file or directory
[2017/05/04 14:52:25.346163,  0] ../lib/util/become_daemon.c:124(daemon_ready)
  STATUS=daemon 'samba' finished starting up and ready to serve connections
samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor.
[2017/05/04 14:52:25.347227,  0] ../source4/winbind/winbindd.c:49(winbindd_done)
  winbindd daemon exited normally
Failed to listen on :::464 - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED
Failed to bind to :::464 TCP - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED
task_server_terminate: [winbindd child process exited]
Failed to listen on 0.0.0.0:464 - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED
Failed to bind to 0.0.0.0:464 TCP - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED
[2017/05/04 14:52:25.651787,  0] ../source4/smbd/server.c:211(samba_terminate)
  samba_terminate: winbindd child process exited
[2017/05/04 15:00:31.074810,  0] ../source4/smbd/server.c:370(binary_smbd_main)
  samba version 4.2.14-Debian started.
  Copyright Andrew Tridgell and the Samba Team 1992-2014
[2017/05/04 15:00:31.105575,  0] ../source4/smbd/server.c:475(binary_smbd_main)
  At this time the 'samba' binary should only be used for either:
  'server role = active directory domain controller' or to access the ntvfs file server with 'server services = +smb' or the rpc proxy with 'dcerpc endpoint servers = remote'
  You should start smbd/nmbd/winbindd instead for domain member and standalone file server tasks
[2017/05/04 15:00:31.105687,  0] ../lib/util/become_daemon.c:111(exit_daemon)
  STATUS=daemon failed to start: Samba detected misconfigured 'server role' and exited. Check logs for details, error code 22
[2017/05/04 15:04:49.812258,  0] ../source4/smbd/server.c:370(binary_smbd_main)
  samba version 4.2.14-Debian started.
  Copyright Andrew Tridgell and the Samba Team 1992-2014
[2017/05/04 15:04:49.843258,  0] ../source4/smbd/server.c:475(binary_smbd_main)
  At this time the 'samba' binary should only be used for either:
  'server role = active directory domain controller' or to access the ntvfs file server with 'server services = +smb' or the rpc proxy with 'dcerpc endpoint servers = remote'
  You should start smbd/nmbd/winbindd instead for domain member and standalone file server tasks
[2017/05/04 15:04:49.843397,  0] ../lib/util/become_daemon.c:111(exit_daemon)
  STATUS=daemon failed to start: Samba detected misconfigured 'server role' and exited. Check logs for details, error code 22
ODPOWIEDZ