Create sssd configuration file
SSSD do not ship with any configuration file by default. As such, you need to create your configuration file that defines your LDAP authentication specifics.
Below is our sample configuration options;
cat /etc/sssd/sssd.conf
Install openldap server ca certificate on ubuntu 20.04 ldap client
SSSD authentication can only work over an encrypted communication channel. Therefore, your OpenLDAP server must be configured SSL/TLS.
If you have done this already, download the CA certificate from the LDAP server to the LDAP client by executing the command below;
Install sssd on ubuntu 20.04
To install SSSD and other required SSSD tools on Ubuntu 20.04, run the command below;
apt install sssd libpam-sss libnss-sss
Related tutorials
Configure SSSD for OpenLDAP Authentication on Ubuntu 18.04
Run system update
Ensure that your system package cache is up-to-date.
apt update
Service – ldap with tls | ubuntu
When authenticating to an OpenLDAP server it is best to do so using an encrypted session. This can be accomplished using Transport Layer Security (TLS).
Here, we will be our own Certificate Authority and then create and sign our LDAP server certificate as that CA. This guide will use the certtool utility to complete these tasks. For simplicity, this is being done on the OpenLDAP server itself, but your real internal CA should be elsewhere.
Install the gnutls-bin and ssl-cert packages:
sudo apt install gnutls-bin ssl-cert
Create a private key for the Certificate Authority:
sudo certtool --generate-privkey --bits 4096 --outfile /etc/ssl/private/mycakey.pem
Create the template/file /etc/ssl/ca.info
to define the CA:
cn = Example Company
ca
cert_signing_key
expiration_days = 3650
Create the self-signed CA certificate:
sudo certtool --generate-self-signed
--load-privkey /etc/ssl/private/mycakey.pem
--template /etc/ssl/ca.info
--outfile /usr/local/share/ca-certificates/mycacert.crt
Note
Yes, the –outfile path is correct, we are writing the CA certificate to /usr/local/share/ca-certificates. This is where update-ca-certificates will pick up trusted local CAs from. To pick up CAs from /usr/share/ca-certificates, a call to dpkg-reconfigure ca-certificates
is necessary.
Run update-ca-certificates
to add the new CA certificate to the list of trusted CAs. Note the one added CA:
$ sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
This also creates a /etc/ssl/certs/mycacert.pem
symlink pointing to the real file in /usr/local/share/ca-certificates
.
Make a private key for the server:
sudo certtool --generate-privkey
--bits 2048
--outfile /etc/ldap/ldap01_slapd_key.pem
Note
Replace ldap01 in the filename with your server’s hostname. Naming the certificate and key for the host and service that will be using them will help keep things clear.
Create the /etc/ssl/ldap01.info
info file containing:
organization = Example Company
cn = ldap01.example.com
tls_www_server
encryption_key
signing_key
expiration_days = 365
The above certificate is good for 1 year, and it’s valid only for the ldap01.example.com
hostname. Adjust accordingly.
Create the server’s certificate:
sudo certtool --generate-certificate
--load-privkey /etc/ldap/ldap01_slapd_key.pem
--load-ca-certificate /etc/ssl/certs/mycacert.pem
--load-ca-privkey /etc/ssl/private/mycakey.pem
--template /etc/ssl/ldap01.info
--outfile /etc/ldap/ldap01_slapd_cert.pem
Adjust permissions and ownership:
sudo chgrp openldap /etc/ldap/ldap01_slapd_key.pem
sudo chmod 0640 /etc/ldap/ldap01_slapd_key.pem
Your server is now ready to accept the new TLS configuration.
Create the file certinfo.ldif
with the following contents (adjust paths and filenames accordingly):
dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/mycacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ldap01_slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ldap01_slapd_key.pem
Use the ldapmodify command to tell slapd about our TLS work via the slapd-config database:
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif
Next, to enable LDAPS (LDAP over SSL) support, you need to edit /etc/default/slapd
and include ldaps:///
in SLAPD_SERVICES
:
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
Note that StartTLS will be available without the change above.
Test StartTLS:
$ ldapwhoami -x -ZZ -H ldap://ldap01.example.com
anonymous
Test LDAPS:
$ ldapwhoami -x -H ldaps://ldap01.example.com
anonymous
To generate a certificate pair for an OpenLDAP replica (consumer), create a holding directory (which will be used for the eventual transfer) and:
mkdir ldap02-ssl
cd ldap02-ssl
certtool --generate-privkey
--bits 2048
--outfile ldap02_slapd_key.pem
Create an info file, ldap02.info
, for the Consumer server, adjusting its values accordingly:
organization = Example Company
cn = ldap02.example.com
tls_www_server
encryption_key
signing_key
expiration_days = 365
Create the Consumer’s certificate:
sudo certtool --generate-certificate
--load-privkey ldap02_slapd_key.pem
--load-ca-certificate /etc/ssl/certs/mycacert.pem
--load-ca-privkey /etc/ssl/private/mycakey.pem
--template ldap02.info
--outfile ldap02_slapd_cert.pem
Note
We had to use sudo to get access to the CA’s private key. This means the generated certificate file is owned by root. You should change that ownership back to your regular user before copying these files over to the Consumer.
Get a copy of the CA certificate:
cp /etc/ssl/certs/mycacert.pem .
We’re done. Now transfer the ldap02-ssl
directory to the Consumer. Here we use scp (adjust accordingly):
cd ..
scp -r ldap02-ssl user@consumer:
On the Consumer side, install the certificate files you just transferred:
sudo cp ldap02_slapd_cert.pem ldap02_slapd_key.pem /etc/ldap
sudo chgrp openldap /etc/ldap/ldap02_slapd_key.pem
sudo chmod 0640 /etc/ldap/ldap02_slapd_key.pem
sudo cp mycacert.pem /usr/local/share/ca-certificates/mycacert.crt
sudo update-ca-certificates
Create the file certinfo.ldif
with the following contents (adjust accordingly regarding paths and filenames, if needed):
dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/mycacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ldap02_slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ldap02_slapd_key.pem
Configure the slapd-config database:
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif
Like before, if you want to enable LDAPS, edit /etc/default/slapd
and add ldaps:///
to SLAPD_SERVICES
, and then restart slapd
.
Test StartTLS:
$ ldapwhoami -x -ZZ -H ldap://ldap02.example.com
anonymous
Test LDAPS:
$ ldapwhoami -x -H ldaps://ldap02.example.com
anonymous
Verify gui authentication via openldap sssd
Reboot your Ubuntu 20.04 desktop after SSSD setup and and verify authentication.
Verify ssh authentication via openldap sssd
ssh [email protected]
Verify sssd openldap authentication
The installation and configuration of SSSD is done. To verify that you can login, try to authenticate against your LDAP server.
Индексы samba
Теперь, когда slapd знает о атрибутах Samba, мы можем создать несколько индексов на их основе. Индексация записей является способом повышения производительности, когда клиент осуществляет выборочный поиск в дереве (DIT).
Создайте файл samba_indices.ldif следующего содержания:
dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: uidNumber eq olcDbIndex: gidNumber eq olcDbIndex: loginShell eq olcDbIndex: uid eq,pres,sub olcDbIndex: memberUid eq,pres,sub olcDbIndex: uniqueMember eq,pres olcDbIndex: sambaSID eq olcDbIndex: sambaPrimaryGroupSID eq olcDbIndex: sambaGroupType eq olcDbIndex: sambaSIDList eq olcDbIndex: sambaDomainName eq olcDbIndex: default sub
Используйте утилиту ldapmodify для загрузки новых индексов:
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f samba_indices.ldif
Если все настроено правильно, вы увидите новые индексы используя утилиту ldapsearch:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase={1}hdb olcDbIndex
Добавление объектов Samba к LDAP
Далее настройте пакет smbldap-tools для соответствия среды работы. Пакет поставляется со скриптом конфигурации, в котором указаны вопросы о необходимых опциях установки. Для запуска скрипта введите в терминале:
sudo gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz sudo perl /usr/share/doc/smbldap-tools/configure.pl
Если у вас есть резервная копия, продолжайте наполнять директорию:
sudo smbldap-populate
Вы можете создать файл LDIF содержащий новые объекты Samba выполнив sudo smbldap-populate -e samba.ldif. Это позволит просматривать изменения, убедившись, что все работает правильно. Если это так, перезапустите скрипт без опции ‘-e’. Либо вы можете взять файл LDIF и импортировать его данные в обычном режиме.
Сейчас ваша директория LDAP имеет всю необходимую информацию для авторизации пользователей Samba.
Конфигурация samba
Есть несколько способов настройки Samba. Более подробную информацию смотри в разделе «Windows Networking». Чтобы настроить Samba для использования LDAP необходимо отредактировать конфигурационный файл /etc/samba/smb.conf указав комментарий в значении passdb и добавив некоторые значения для работы LDAP:
# passdb backend = tdbsam # LDAP Settings passdb backend = ldapsam:ldap://hostname ldap suffix = dc=example,dc=com ldap user suffix = ou=People ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ldap admin dn = cn=admin,dc=example,dc=com ldap ssl = start tls ldap passwd sync = yes ... add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"
Измените значения для вашей конфигурации.
Перегрузите сервер Samba для применения изменений.
sudo restart smbd sudo restart nmbd
Теперь укажите Samba пароль DN пользователя root (который указывается при установке пакета slapd):
sudo smbpasswd -w password
Если у вас уже есть существующие пользователи LDAP, которых вы хотите включить в вашу конфигурацию Samba, они должны иметь необходимые атрибуты. Утилита smbpasswd подойдет для этого наилучшим образом (ваш компьютер должен иметь возможность видеть (нумеровать) этих пользователей через NSS; или же должны быть установлены и настроены пакеты libnss-ldapd или libnss-ldap):
sudo smbpasswd -a username
Вам будет предложено ввести пароль. Это рассматривается как выдача нового пароля пользователю, что делает его таким как прежде и является разумным решением.
Для настройки пользователей, групп и учётных записей на компьютерах используйте стандартные утилиты предоставляемые пакетом smbldap-tools. Вот несколько примеров:
1. Добавление нового пользователя:
sudo smbldap-useradd -a -P username
Опция ‘-a’ добавляет атрибут Samba, а опция ‘-P’ вызывает утилиту smbldap-passwd, после того как пользователь создан, позволяя создать новый пароль для этого пользователя.
2. Удаление пользователя:
sudo smbldap-userdel username
В этой команде также можно использовать опцию ‘-r’ для удаления домашней директории пользователя.
3. Добавление группы:
sudo smbldap-groupadd -a groupname
В smbldap-useradd опция ‘-a’ добавляет атрибуты Samba.
4. Сделать существующего пользователя членом группы:
sudo smbldap-groupmod -m username groupname
Опция -m может добавлять более одного пользователя за раз, если использовать список, разделенный запятыми.
5. Удаление пользователя из группы:
sudo smbldap-groupmod -x username groupname
6. Добавить в Samba учетную запись компьютера:
sudo smbldap-useradd -t 0 -w username
Замените username на имя рабочей станции. Опция -t 0 создает учетную запись без задержки, в то время как опция -w определяет пользователя как учетную запись компьютера. Также обратите внимание, что параметр add machine script в /etc/samba/smb.conf изменен чтобы использовался smbldap-useradd.
Существуют утилиты в пакете smbldap-tools, которые тут не рассматривались. Здесь полный список:
smbldap-groupadd
smbldap-groupdel
smbldap-groupmod
smbldap-groupshow
smbldap-passwd
smbldap-populate
smbldap-useradd
smbldap-userdel
smbldap-userinfo
smbldap-userlist
smbldap-usermod
smbldap-usershow
Схема samba
Для того чтобы OpenLDAP использовался как дополнение к Samba, теоретически в дереве (DIT) должны присутствовать атрибуты которые корректно описывают данные Samba. Такие атрибуты могут быть получены путем введения схемы Samba в LDAP. Сейчас мы это сделаем.
1. Такая схема находится в свежеустановленном вами пакете samba-doc. Ее требуется скопировать и разархивировать в директорию /etc/ldap/schema следующим образом:
sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema sudo gzip -d /etc/ldap/schema/samba.schema.gz
2. Получаем файл конфигурации schema_convert.conf, который должен содержать следующие строки:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/ldapns.schema include /etc/ldap/schema/pmi.schema include /etc/ldap/schema/samba.schema
3. Оставляем каталог ldif_output для вывода.
4. Определяем индекс для схемы:
slapcat -f schema_convert.conf -F ldif_output -n 0 | grep samba,cn=schema dn: cn={14}samba,cn=schema,cn=config
5. Конвертируем схему в формат LDIF:
slapcat -f schema_convert.conf -F ldif_output -n0 -H ldap:///cn={14}samba,cn=schema,cn=config -l cn=samba.ldif
6. Редактируем созданный файл cn=samba.ldif, удаляя индексную информацию, по достижению:
dn: cn=samba,cn=schema,cn=config ... cn: samba
удалите строки в конце:
structuralObjectClass: olcSchemaConfig entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95 creatorsName: cn=config createTimestamp: 20080827045234Z entryCSN: 20080827045234.341425Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20080827045234Z
Внимание: Ваши данные могут отличаться!
7. Добавляем новую схему:
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn=samba.ldif
Для запроса и просмотра новой схемы введите:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config 'cn=*samba*'