Service – LDAP with TLS | Ubuntu

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/ to define the CA:

cn = Example Company
expiration_days = 3650

Create the self-signed CA certificate:

sudo certtool --generate-self-signed 
--load-privkey /etc/ssl/private/mycakey.pem 
--template /etc/ssl/ 
--outfile /usr/local/share/ca-certificates/mycacert.crt


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...

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


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/ info file containing:

organization = Example Company
cn =
expiration_days = 365

The above certificate is good for 1 year, and it’s valid only for the 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/ 
--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://


$ ldapwhoami -x -H ldaps://

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,, for the Consumer server, adjusting its values accordingly:

organization = Example Company
cn =
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 
--outfile ldap02_slapd_cert.pem


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://


$ ldapwhoami -x -H ldaps://

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.

Похожее:  Особенности входа на сайты при помощи WebMoney Keeper WinPro - WebMoney Wiki

Индексы 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/
sudo perl /usr/share/doc/smbldap-tools/

Если у вас есть резервная копия, продолжайте наполнять директорию:

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, которые тут не рассматривались. Здесь полный список:


Схема 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*'
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 4,00 из 5)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *