Thank you for reading this post, don't forget to subscribe!
Kerberos остается одним из самых надежных протоколов аутентификации для большинства рабочих сред.
Он обеспечивает надежную однократную регистрацию или вход в сеть для пользователей в незащищенных сетях.
В идеале Kerberos предоставляет пользователям билеты или тикеты, чтобы помочь им минимизировать частое использование паролей в сетях.
Частое использование паролей увеличивает вероятность утечки данных или кражи пароля.
Но, как и большинство протоколов аутентификации, успех работы с Kerberos зависит от правильной установки и настройки.
Следующие шаги помогут вам настроить Linux для аутентификации с помощью Kerberos
Шаг 1: Убедитесь, что обе машины отвечают предварительным требованиям для настройки Kerberos Linux
Прежде всего, перед началом процесса настройки вам необходимо убедиться, что вы выполнили следующие действия:
- У вас должна быть функциональная среда Kerberos Linux. В частности, вы должны убедиться, что у вас есть сервер Kerberos (KDC) и клиент Kerberos, установленные на разных машинах. Предположим, что сервер обозначен следующими адресами интернет-протокола: 192.168.1.14, а клиент работает на следующем адресе 192.168.1.15. Клиент запрашивает тикеты у KDC.
- Синхронизация времени является обязательной. Вы должны использовать сетевую синхронизацию времени (NTP) для обеспечения того, чтобы обе машины работали в одном временном интервале. Любая разница во времени более чем на 5 минут приведет к неудачному процессу аутентификации.
- Для аутентификации вам понадобится DNS. Служба доменной сети поможет разрешить конфликты в системной среде.
Шаг 2: Настройка центра распределения ключей
У вас уже должен быть функциональный KDC, который вы настроили во время установки.
Вы можете выполнить приведенную ниже команду на своем KDC:
1 |
yum install krb5-server |
Конфигурация Kerberos V5
1. Установите пакеты krb5-libs, krb5-server и krb5-workstation
2.Отредактируйте /etc/krb5.conf и /var/kerberos/krb5kdc/kdc.conf, чтобы отразить ваше имя и домен в отображениях областей.
Простую область можно создать, заменив экземпляры EXAMPLE.COM и example.com именем вашего домена (убедившись, что вы сохраняете тот же случай), и изменив kerberos.example.com на полное имя хоста сервера.
Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] ticket_lifetime = 24000 default_realm = UK.ORACLE.COM [realms] UK.ORACLE.COM = { kdc = ukp9174.uk.oracle.com:88 admin_server = ukp9174.uk.oracle.com:749 default_domain = uk.oracle.com } [domain_realm] .uk.oracle.com = UK.ORACLE.COM uk.oracle.com = UK.ORACLE.COM [kdc] profile = /var/kerberos/krb5kdc/kdc.conf [pam] debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false # cat /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab [realms] UK.ORACLE.COM = { master_key_type = des-cbc-crc database_name = /var/kerberos/krb5kdc/principal admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = des-cbc-crc:normal des3-cbc-raw:normal des3-cbc-sha1:norm al des-cbc-crc:v4 des-cbc-crc:afs3 kadmind_port = 749 acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/dict/words } |
3. Отредактируйте /var/kerberos/krb5kdc/kadm5.acl, чтобы определить, какие участники имеют права на доступ к базе данных Kerberos.
# vi /var/kerberos/krb5kdc/kadm5.acl
1 2 |
*/admin@UK.ORACLE.COM * |
4. Создайте базу данных kerberos с помощью команды kdb5_util:
# kdb5_util create -s
1 2 3 4 5 6 |
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'UK.ORACLE.COM', master key name 'K/M@UK.ORACLE.COM' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter KDC database master key: admin Re-enter KDC database master key to verify: admin |
5. Запустите службы Kerberos:
1 2 3 |
# service krb5kdc start Starting Kerberos 5 KDC: [ OK ] |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# service kadmin start Extracting kadm5 Service Keys Authenticating as principal root/admin@UK.ORACLE.COM with password. Entry for principal kadmin/admin with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/var/kerberos/krb5kdc/kadm5.keytab. Entry for principal kadmin/admin with kvno 3, encryption type Triple DES cbc mode raw added to keytab WRFILE:/var/kerberos/krb5kdc/kadm5.keytab. Entry for principal kadmin/changepw with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/var/kerberos/krb5kdc/kadm5.keytab. Entry for principal kadmin/changepw with kvno 3, encryption type Triple DES cbc mode raw added to keytab WRFILE:/var/kerberos/krb5kdc/kadm5.keytab. [ OK ] Starting Kerberos 5 Admin Server [ OK ] |
1 2 |
# service krb524 start Starting Kerberos 5-to-4 Server: [ OK ] |
6. Добавьте принципалы Kerberos:
1 2 3 4 5 6 7 8 |
# kadmin.local Authenticating as principal root/admin@UK.ORACLE.COM with password. > kadmin.local: addprinc host/ukp9174.uk.oracle.com WARNING: no policy specified for host/ukp9174.uk.oracle.com@UK.ORACLE.COM; defaulting to no policy Enter password for principal "host/ukp9174.uk.oracle.com@UK.ORACLE.COM": admin Re-enter password for principal "host/ukp9174.uk.oracle.com@UK.ORACLE.COM": admin Principal "host/ukp9174.uk.oracle.com@UK.ORACLE.COM" created. |
Обратите внимание, что host – это слово «host», а не имя хоста сервера, а ukp9174.uk.oracle.com – это полное имя хоста сервера.
1 2 3 4 5 |
> kadmin.local: addprinc root WARNING: no policy specified for root@UK.ORACLE.COM; defaulting to no policy Enter password for principal "root@UK.ORACLE.COM": admin Re-enter password for principal "root@UK.ORACLE.COM": admin Principal "root@UK.ORACLE.COM" created. |
7. Добавьте хост в таблицу ключей keytab:
1 2 3 4 5 6 7 |
# kadmin.local: ktadd -k /etc/krb5.keytab host/ukp9174.uk.oracle.com Entry for principal host/ukp9174.uk.oracle.com with kvno 2, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/ukp9174.uk.oracle.com with kvno 2, encryption type Triple DES cbc mode raw added to keytab WRFILE:/etc/krb5.keytab. > kadmin.local: exit |
8. Протестируйте можете ли вы получить билет:
1 2 |
# kinit Password for root@UK.ORACLE.COM: admin |
9. Докажите, что у вас есть билет:
1 2 3 4 5 6 7 8 |
# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: root@UK.ORACLE.COM Valid starting Expires Service principal 01/02/01 11:14:15 01/02/01 21:14:15 krbtgt/UK.ORACLE.COM@UK.ORACLE.COM Kerberos 4 ticket cache: /tmp/tkt0 |
Как только это сработает, у вас все настроено правильно.
Шаг 3: Проверьте установленные пакеты
Проверьте файл /etc/krb5.conf.
Ниже приведена копия конфигурации по умолчанию:
Шаг 4: Редактирование файла по умолчанию /var/kerberos/krb5kdc/kdc.conf
После успешной настройки вы можете отредактировать файл /var/Kerberos/krb5kdc/kdc.conf, удалив все комментарии в разделе realm, default_reams, и изменив их в соответствии с вашей средой Kerberos.
Шаг 5: Создание базы данных Kerberos
После успешного подтверждения вышеуказанных деталей, мы переходим к созданию базы данных Kerberos с помощью kdb_5.
Здесь очень важен пароль, который вы создали.
Он будет служить нашим главным ключом, который мы будем использовать для шифрования базы данных для безопасного хранения.
1 |
kdb5_util create -s |
Приведенная выше команда будет выполняться в течение одной минуты или около того для загрузки случайных данных.
Перемещение мыши потенциально ускорит процесс.
Шаг 6: Управление службами
Следующий шаг – управление службами.
Вы можете автоматически запустить свою систему с включением серверов kadmin и krb5kdc.
Ваши службы KDC будут автоматически настроены после перезагрузки системы.
1 2 3 |
enable kadmin krb5kdc systemctl start kadmin krb5kdc |
Шаг 7: Настройка брандмауэра
Если выполнение вышеперечисленных шагов прошло успешно, следует перейти к настройке брандмауэра.
Настройка фаерволла включает в себя установку правильных правил, которые позволят системе взаимодействовать со службами kdc.
Нижеприведенная команда должна быть полезной:
1 2 3 |
firewalld-cmd --permanent --add-service=kerberos firewalld-cmd reload |
Шаг 8: Проверьте, взаимодействует ли krb5kdc с портами
Инициализированная служба Kerberos должна прослушиваться на TCP и UDP на порту 80.
1 |
netstat -atulpn | grep krb |
Шаг 9: Администрирование Kerberos
Администрируйте KDC с помощью команды kadnim.local.
Вы можете получить доступ и просмотреть содержимое в kadmin.local.
Вы можете использовать команду “?”, чтобы увидеть, как применяется addprinc в учетной записи пользователя для добавления принципала.
Шаг 10: Настройка клиента
До этого KDC будет принимать соединения и предлагать пользователям тикеты.
Для настройки клиентского компонента можно использовать несколько методов.
Однако для данной демонстрации мы будем использовать графический пользовательский протокол, так как его легко и быстро реализовать.
Во-первых, мы должны установить приложение authconfig-gtk с помощью команд, приведенных ниже:
1 |
yum install authconfig-gtk -y |
После завершения настройки и выполнения вышеуказанной команды в окне терминала появится окно конфигурации аутентификации.
Следующим шагом будет выбор элемента LDAP из выпадающего меню идентификации и аутентификации и ввод Kerberos password, соответствующего информации о realm и kdc.
Как обновить тикет Kerberos
Обновление билета Kerberos.
Перечислим кэшированные билеты Kerberos.
1 2 |
$ klist |
1 2 3 4 5 6 |
Ticket cache: KEYRING:persistent:10000:krb_ccache_Nv2FjQZ Default principal: octo@OCTOCAT.LAB Valid starting Expires Service principal 10/03/2021 18:06:02 10/04/2021 04:06:02 krbtgt/OCTOCAT.LAB@OCTOCAT.LAB renew until 10/04/2021 18:06:02 |
Этот билет действителен до 4 октября 04:06 и может быть продлен до 4 октября 18:06, но это необходимо сделать до истечения срока его действия.
Запрашиваем продление билета.
1 2 |
$ kinit -R |
3 октября 22:24 тикет был продлен до 4 октября 08:24.
1 2 |
$ klist |
1 2 3 4 5 6 |
Ticket cache: KEYRING:persistent:10000:krb_ccache_Nv2FjQZ Default principal: octo@OCTOCAT.LAB Valid starting Expires Service principal 10/03/2021 22:24:16 10/04/2021 08:24:16 krbtgt/OCTOCAT.LAB@OCTOCAT.LAB renew until 10/04/2021 18:06:02 |
После истечения срока действия билет не может быть продлен, как я уже говорил ранее.
1 2 3 |
$ date Mon 04 Oct 2021 09:03:20 AM CEST |
1 2 |
$ kinit -R kinit: No credentials cache found while renewing credentials |
Получение и кэширование нового билета Kerberos.
1 2 |
$ kinit Password for octo@OCTOCAT.LAB: ********** |