241
правка
Dkirienko (обсуждение | вклад) |
Dkirienko (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| Строка 179: | Строка 178: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | ===Создание групп пользователей=== | ||
Пусть мы ходим создать группы пользователей admins (администраторы), teachers (учителя), misc (другие сотрудники) и students (учащиеся). | Пусть мы ходим создать группы пользователей admins (администраторы), teachers (учителя), misc (другие сотрудники) и students (учащиеся). | ||
| Строка 224: | Строка 223: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | ===Создание пользователей=== | ||
Пусть мы ходим создать пользователя teacher1 c uid=2001 и пользователя student1 с uid=4001. При этом для каждого пользователя будет создана группа с таким же именем. | Пусть мы ходим создать пользователя teacher1 c uid=2001 и пользователя student1 с uid=4001. При этом для каждого пользователя будет создана группа с таким же именем. | ||
| Строка 378: | Строка 377: | ||
</syntaxhighlight>Параметр -pw задаёт пароль принципала, то есть эти команды создадут принципал teacher1 с паролем qwerrty456 и принципал student1 с паролем qwerty789. | </syntaxhighlight>Параметр -pw задаёт пароль принципала, то есть эти команды создадут принципал teacher1 с паролем qwerrty456 и принципал student1 с паролем qwerty789. | ||
Вывести список всех принципалов, хранящихся в Kerberos, можно командой.<syntaxhighlight lang="bash"> | |||
kadmin.local -q list_principals | |||
</syntaxhighlight> | |||
==Интеграция LDAP и Kerberos через SSSD== | ==Интеграция LDAP и Kerberos через SSSD== | ||
Эти шаги нужно сделать и на сервере, и на клиенте. | |||
'''На клиенте также нужно настроить файл /etc/krb5.conf так же, как и на сервере (пример выше).''' | |||
===Установка пакетов=== | ===Установка пакетов=== | ||
| Строка 387: | Строка 393: | ||
===Конфигурация SSSD=== | ===Конфигурация SSSD=== | ||
Служба sssd получает информацию о пользователях и их паролях через ldap и kerberos. | |||
Создайте файл /etc/sssd/sssd.conf и запишите в него следующий текст, внеся нужные правки. | |||
<syntaxhighlight lang="ini"> | <syntaxhighlight lang="ini"> | ||
[sssd] | [sssd] | ||
| Строка 397: | Строка 405: | ||
auth_provider = krb5 | auth_provider = krb5 | ||
ldap_uri = ldap:// | ldap_uri = ldap://server.sch179.local | ||
ldap_search_base = dc=sch179,dc=local | ldap_search_base = dc=sch179,dc=local | ||
ldap_id_use_start_tls = false | ldap_id_use_start_tls = false | ||
| Строка 403: | Строка 411: | ||
krb5_realm = SCH179.LOCAL | krb5_realm = SCH179.LOCAL | ||
krb5_server = | krb5_server = server.sch179.local | ||
cache_credentials = true | cache_credentials = true | ||
| Строка 409: | Строка 417: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Установите на этот файл права. | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
chmod 600 /etc/sssd/sssd.conf | chmod 600 /etc/sssd/sssd.conf | ||
| Строка 415: | Строка 423: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===NSS | ===Настройка NSS=== | ||
Измените `/etc/nsswitch.conf, заменив в нём три строки на следующие: | Измените `/etc/nsswitch.conf, заменив в нём три строки на следующие: | ||
| Строка 424: | Строка 432: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Измените | === Настройка PAM === | ||
Измените файл /etc/pam.d/system-auth, добавив несколько строк. | |||
Первое слово каждой строки (auth, account, password, session) - это интерфейс (тип взаимодействия): аутентификация, проверка учетной записи, управление паролями, управление сеансами. Добавляйте указанные строки после всех строк такого же интерфейса, но перед строкой pam_deny.so, если она есть для данного интерфейса (она присутствует в интерфейсах auth и password). | |||
<syntaxhighlight> | <syntaxhighlight> | ||
auth sufficient pam_sss.so use_first_pass | auth sufficient pam_sss.so use_first_pass | ||
| Строка 432: | Строка 443: | ||
session required pam_mkhomedir.so skel=/etc/skel umask=0077 | session required pam_mkhomedir.so skel=/etc/skel umask=0077 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Четыре строки с pam_sss.so получают информацию об учётной записи через модуль pam_sss. Строка pam_mkhomedir.so создаёт домашний каталог пользователя, если он не существует. | |||
Скорее всего у вас получится такой файл.<syntaxhighlight> | |||
<syntaxhighlight | #%PAM-1.0 | ||
auth required pam_env.so | |||
auth sufficient pam_unix.so try_first_pass likeauth nullok | |||
auth sufficient pam_sss.so use_first_pass | |||
auth required pam_deny.so | |||
=== | account required pam_unix.so | ||
account [default=bad success=ok user_unknown=ignore] pam_sss.so | |||
password sufficient pam_unix.so try_first_pass nullok sha512 shadow | |||
password sufficient pam_sss.so use_authtok | |||
password required pam_deny.so | |||
session optional pam_keyinit.so revoke | |||
[ | session required pam_limits.so | ||
session optional pam_env.so | |||
session optional pam_umask.so | |||
session optional pam_systemd.so | |||
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid | |||
session required pam_unix.so | |||
session optional pam_sss.so | |||
session required pam_mkhomedir.so skel=/etc/skel umask=0077 | |||
</syntaxhighlight>'''Сделайте такие же правки в файле /etc/pam.d/pasword-auth''' | |||
Возможно, вы не хотите, чтобы пользователи входили в систему на сервере - вряд ли вы хотите давать пользователям такую возможность, в том числе и по ssh. Тогда на сервере правки в конфиги pam вносить не нужно - и у пользователей не будет возможности использовать LDAP + Kerberos для авторизации. Но поскольку пользователи должны быть в системе (пусть и без возможности входа), иные настройки (sssd, nsswitch.conf) необходимо сделать. ''(проверить информацию).'' | |||
===Запуск служб=== | |||
Служба oddjobd нужна для создания домашнего каталога.<syntaxhighlight lang="bash"> | |||
systemctl enable --now sssd | systemctl enable --now sssd | ||
systemctl enable --now oddjobd | systemctl enable --now oddjobd | ||
</syntaxhighlight> | |||
< | ===Проверка=== | ||
Проверка ldap. Эта команда должна вывести информацию о пользователе teacher1.<syntaxhighlight lang="bash"> | |||
getent passwd teacher1 | |||
</syntaxhighlight>Получение билета Kerberos для пользователя. Выполните эту команду на клиенте. Нужно ввести пароль пользователя teacher1.<syntaxhighlight> | |||
</syntaxhighlight>Получение | |||
kinit dk | kinit dk | ||
| Строка 516: | Строка 491: | ||
kdestroy | kdestroy | ||
</syntaxhighlight>Попробуйте переключиться в пользователя.<syntaxhighlight lang="bash"> | </syntaxhighlight>Попробуйте переключиться в пользователя.<syntaxhighlight lang="bash"> | ||
su - | su - teacher1 | ||
</syntaxhighlight>Наконец. попробуйте войти в систему в консоли и в десктоп-менеджере. | </syntaxhighlight>Наконец. попробуйте войти в систему в консоли и в десктоп-менеджере. | ||
== | == Настройка NFS на сервере == | ||
=== Установка пакетов === | |||
Установите нужные пакеты.<syntaxhighlight lang="bash"> | Установите нужные пакеты.<syntaxhighlight lang="bash"> | ||
dnf install -y nfs-utils krb5-server krb5-workstation | dnf install -y nfs-utils krb5-server krb5-workstation | ||
</syntaxhighlight>Включите и запустите нужные службы.<syntaxhighlight lang="bash"> | </syntaxhighlight> | ||
=== Включение и запуск служб === | |||
Включите и запустите нужные службы.<syntaxhighlight lang="bash"> | |||
systemctl enable --now nfs-server | systemctl enable --now nfs-server | ||
systemctl enable --now rpcbind | systemctl enable --now rpcbind | ||
systemctl enable --now gssproxy | systemctl enable --now gssproxy | ||
</syntaxhighlight> | </syntaxhighlight> | ||
От имени пользователя root нужно запустить команду<syntaxhighlight lang="bash"> | === Создание ключей Kerberos === | ||
На сервере необходимо создать ключи kerberos, которые будет необходимо скопировать на клиентов. | |||
От имени пользователя root нужно запустить на сервере команду<syntaxhighlight lang="bash"> | |||
kadmin.local | kadmin.local | ||
</syntaxhighlight>В | </syntaxhighlight>В консоли kadmin.local нужно ввести команды (не забудьте заменить server.sch179.local на имя своего сервера).<syntaxhighlight lang="bash"> | ||
addprinc -randkey nfs/server.sch179.local | addprinc -randkey nfs/server.sch179.local | ||
ktadd -k /etc/krb5.keytab nfs/server.sch179.local | ktadd -k /etc/krb5.keytab nfs/server.sch179.local | ||
| Строка 551: | Строка 535: | ||
</syntaxhighlight>'''Созданный в результате файл /etc/krb5.keytab необходимо будет скопировать на каждый клиентский компьютер - иначе kerberos будет отказываться устанавливать соединение с этим компьютером.''' | </syntaxhighlight>'''Созданный в результате файл /etc/krb5.keytab необходимо будет скопировать на каждый клиентский компьютер - иначе kerberos будет отказываться устанавливать соединение с этим компьютером.''' | ||
=== Экспорт /home на сервере === | |||
Теперь настроим экспорт файловой системы /home сервера по сети. Для этого в файле /etc/exports напишем строку<syntaxhighlight> | Теперь настроим экспорт файловой системы /home сервера по сети. Для этого в файле /etc/exports напишем строку<syntaxhighlight> | ||
/home 192.168.0.0/16(rw,sec=krb5p,sync,no_subtree_check) | /home 192.168.0.0/16(rw,sec=krb5p,sync,no_subtree_check) | ||
| Строка 556: | Строка 541: | ||
</syntaxhighlight>192.168.0.0/16 - сеть, из которой разрешён доступ (можете поменять) | </syntaxhighlight>192.168.0.0/16 - сеть, из которой разрешён доступ (можете поменять) | ||
krb5p - уровень безопасности Kerberos, означающий полное шифрование всех передаваемых данных. Это наиболее безопасно | krb5p - уровень безопасности Kerberos, означающий полное шифрование всех передаваемых данных. Это наиболее безопасно, но создаёт дополнительную нагрузку на процессор. Для уменьшения нагрузки можно использовать варианты без шифрования (но тогда возможен перехват данных): krb5 (только авторизация) или krb5i (проверка контрольных сумм данных для защиты от подмены). | ||
Вы можете указать сразу несколько возможных уровней безопасности Kerberos, которые будет поддерживать сервер, например: sec=krb5,sec=krb5i,sec=krb5p | |||
Примените изменения командой<syntaxhighlight lang="bash"> | Примените изменения командой<syntaxhighlight lang="bash"> | ||
| Строка 565: | Строка 552: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == Настройка NFS на клиенте == | ||
=== Установка пакетов === | |||
Установите нужные пакеты.<syntaxhighlight lang="bash"> | Установите нужные пакеты.<syntaxhighlight lang="bash"> | ||
dnf install nfs-utils krb5-workstation | dnf install nfs-utils krb5-workstation | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Копирование ключей Kerberos === | |||
Скопируйте файл с ключами /etc/krb5.keytab с сервера на клиентскую машину. Установите владельца root:root и права доступа 600 на этот файл. | |||
Проверьте наличие ключей в этом файле командой<syntaxhighlight lang="bash"> | |||
klist -k /etc/krb5.keytab | |||
</syntaxhighlight> | |||
=== Включение и запуск служб === | |||
Запустите нужные службы.<syntaxhighlight lang="bash"> | Запустите нужные службы.<syntaxhighlight lang="bash"> | ||
systemctl enable --now nfs-client.target | systemctl enable --now nfs-client.target | ||
systemctl enable --now gssproxy | systemctl enable --now gssproxy | ||
</syntaxhighlight>Теперь попробуем подмонтировать каталог /home с сервера. Это тестовая процедура, чтобы убедиться в том, что связка NFS + Kerberos настроена правильно. | </syntaxhighlight> | ||
=== Проверка монтирования файловой системы === | |||
Теперь попробуем подмонтировать каталог /home с сервера. Это тестовая процедура, чтобы убедиться в том, что связка NFS + Kerberos настроена правильно. | |||
Выполняйте все последующие действия под пользователем root. | Выполняйте все последующие действия под пользователем root. | ||
Монтирование разделов при помощи NFS+Kerberos требует, чтобы у пользователя был действующий билет Kerberos. Этот билет нужно получить командой (выполним её от root)<syntaxhighlight lang="bash"> | Монтирование разделов при помощи NFS+Kerberos требует, чтобы у пользователя был действующий билет Kerberos. Этот билет нужно получить командой (выполним её от root)<syntaxhighlight lang="bash"> | ||
kinit | kinit teacher1 | ||
</syntaxhighlight>Понадобится ввести пароль пользователя dk. Убедитесь, что билет получен, введя команду <syntaxhighlight lang="bash"> | </syntaxhighlight>Понадобится ввести пароль пользователя dk. Убедитесь, что билет получен, введя команду <syntaxhighlight lang="bash"> | ||
klist | klist | ||
| Строка 590: | Строка 591: | ||
== Автомонтирование домашних каталогов при помощи autofs == | == Автомонтирование домашних каталогов при помощи autofs == | ||
Поскольку монтирование раздела через NFS+Kerberos требует получение билета, а получение билета происходит при авторизации в системе, домашние каталоги пользователей могут монтироваться только после авторизации в системе. Настроим на клиенте autofs, чтобы домашний каталог пользователя монтировался автоматически после входа. | Поскольку монтирование раздела через NFS+Kerberos требует получение билета, а получение билета происходит при авторизации в системе, домашние каталоги пользователей могут монтироваться только после авторизации в системе. Настроим на клиенте autofs, чтобы домашний каталог пользователя монтировался автоматически после входа. Настройка выполняется на клиенте. | ||
Установим нужные пакеты.<syntaxhighlight lang="bash"> | Установим нужные пакеты.<syntaxhighlight lang="bash"> | ||
| Строка 602: | Строка 603: | ||
</syntaxhighlight>Включим и запустим службу autofs<syntaxhighlight lang="bash"> | </syntaxhighlight>Включим и запустим службу autofs<syntaxhighlight lang="bash"> | ||
systemctl enable --now autofs | |||
</syntaxhighlight> | </syntaxhighlight> | ||