GNOME на производстве

(история моей жизни)

 

Александр Боковой

Principal Software Engineer, Red Hat Ltd.

18 октября 2015 // Калуга, #OSSDevConf

На производстве?

 

Я работаю из дома*

*практически

 

сеть местного офиса
не управляется
ИТ службой
компании

*практически

в компании используются облачные службы

(и ни одно облако не накрывает их целиком)

*практически

У меня много лиц:

  • Корпоративная учетная запись
  • Учетные записи в домашней сети
  • Учетные записи в облаках и социальных сетях
  • Разные учетные записи для проектов СПО
  • Сертификаты и смарткарты для общения с государством
  • Архивы и шифрованные личные данные

хотелось бы иметь доступ ко всему одновременно

Я работаю над FreeIPA

Управление учтеными записями и политиками: централизованное хранение, локальное применение

https://www.freeipa.org

Стек приложений FreeIPA доступен в

 

Процесс

каждой перезагрузки

  • войти в локальную учетную запись
  • подключиться к корпоративному VPN
  • получить билет Kerberos
  • использовать корпоративные приложения

 

Можем ли мы сделать проще?

Насколько далеко мы от

  • Подключиться к корпоративной сети
  • Использовать корпоративне приложения

?

Давайте попробуем!

Демонстрация интерактивного входа

Что это было?

  1. Система настроена как клиент FreeIPA

  2. Демон SSSD отвечает за вход в систему и билеты Kerberos

  3. Доступ в систему верифицируется через публичную сеть, используя прокси для протокола Kerberos

  4. Полученный билет Kerberos позволил подключиться по VPN

Пароль пользователя был запрошен один раз

Прокси Kerberos

  • Клиентская часть доступна с Microsoft Active Directory и MIT Kerberos 1.13

    • позволяет пробрасывать трафик Kerberos, не открывая доступ к внутренней сети
    • протокол MS-KKDCP: https://msdn.microsoft.com/en-us/library/hh553774.aspx
    • прозрачен для приложений Kerberos и GSS-API
  • Kerberos прокси реализован FreeIPA 4.2, OpenConnect Server 7.05, и как отдельный сервер
  • Требует соединение HTTPS (сертификаты), настроен в FreeIPA 4.2 по умолчанию, настройка клиента -- одна строчка в krb5.conf

VPN и Kerberos

  • Клиент OpenConnect поддерживает аутентификацию по GSS-API

  • OpenVPN не поддерживает GSS-API
    • пользователи просят с 2005, разработчики отнекиваются
  • Можно ли требовать повышенный уровень надежности от Kerberos на стороне VPN сервера?
    • да, это станет возможно с Kerberos 1.14

Двухфакторная аутентификация (2FA)

  • FreeIPA 4.x поддерживает HOTP и TOTP

    • Yubikey, FreeOTP для Android и iOS, любой HOTP/TOTP совместимый клиент и аппаратный токен
  • Двухфакторная аутентификация на уровне Kerberos
    • При получении запроса на TGT сервер может потребовать ввод второго фактора как пре-аутентификацию
  • В MIT Kerberos 1.14 добавлены Authentication Indicators
    • Модули пре-аутентификации могут записывать в билет TGT указатель (auth indicator) об условиях выдачи билета

Демонстрация интерактивного входа с 2FA

Что это было?

  1. Токен HOTP был запрограммирован в Yubikey и назначен пользователю FreeIPA

  2. SSSD обрабатывает вход пользователя и видит необходимость пре-аутентификации OTP при общении с Kerberos KDC

  3. Пользователь вводит отдельно пароль и значение токена

  4. Билет Kerberos получен через прокси Kerberos, первый фактор передается в GDM для разблокирования хранилища паролей и ключей GNOME

Пароль пользователя был запрошен один раз

Приложения

Что можно сделать с билетом Kerberos?

  • Аутентификация посредством GSS-API
  • Получение уведомления SAML для других веб-служб
  • Доступ к сетевым файловым системам
  • Отображение свойств билета
  • Обновить билет

Аутентификация в браузере

НЕ ПОДДЕРЖИВАЕТСЯ в Epiphany

  • Поддержка GSSAPI зависит от libsoup
  • WebkitGtk не может использовать билет Kerberos для взаимодействий с SAML/OAuth2
    • Пример: нельзя подключить приложения Google посредством GSSAPI в Gnome Online Accounts, нужно вводить пароль

 

Можно ли сделать лучше?

Авторизация

HBAC и Auth Indicators

  • SSSD поддерживает разграничение доступа на основе правил HBAC (host-based access rules), позволяет авторизовать доступ к сервисам PAM. Правила хранятся централизовано на LDAP сервере FreeIPA.
    • В FreeIPA 4.4 появится поддержка временных интервалов в HBAC
  • polkit можно настроить на использование правил HBAC для ограничения доступа к рабочему месту
    • Kerberos Auth Indicators можно было бы использовать для определения "повышенного" и "нормального" уровней доступа

Авторизация

HBAC и Auth Indicators

  • SSSD предоставляет доступ к пользовательской информации через D-Bus, SSSD InfoPipe
    • позволяет передавать информацию о сертификатах и не-POSIX атрибутах
    • (почти полный набор возможностей GNOME Accounts Service)
  • В SSSD можно было бы предоставить и AuthPipe, чтобы получить информацию о свойствах пользовательского билета, и проверить доступ по правилам HBAC
    • здесь пригодился бы kdbus, для надежности обмена между SSSD и доверяемым приложением

Сертификаты

  • FreeIPA 4.2 позволяет выпускать сертификаты x.509 пользователям
  • FreeIPA 4.2 позволяет заводить "сейфы" пользователей для централизованного хранения ключей и данных в шифрованном виде централизованно
    • аутентификация к сейфу на основе GSS-API
    • можно назначить уникальные пары ключей для клиентов, обращающихся к сейфу (депонирование данных)
  • SSSD 1.13.1+ поддерживает авторизацию по сертификатам
    • Сертификаты могут храниться на любых устройствах, совместимых с OpenSC и coolkey, например, Yubikey Neo
    • Подробности вот здесь

Отображение

  • Интерфейс GNOME Online Accounts мог бы показывать свойства билетов Kerberos
    • Время действия билета TGT, его флаги
    • Authentication indicators
    • Существующие билеты к службам в связке и возможность их удалить индивидуально
    • Автоматическое обновление, если это позволяет KDC

Обновление билетов Kerberos

  • SSSD поддерживает автоматическое обновление TGT для однофакторного случая
    • Для обновления TGT с использованием 2FA требуется взаимодействие с пользователем
    • Автоматическое обновление TGT должно быть разрешено на стороне сервера KDC
  • В GNOME Online Accounts можно было бы интегрироваться с SSSD и запросить у пользователя необходимую информацию

Поддержка Kerberos в браузерах

  • Настройка Kerberos в Firefox неидеальна
    • требует модификаций в about:config
  • Необходимость в Kerberos возникает только при ответе сервера 401 "WWW-Authenticate: Negotiate"
    • В этот момент можно проверить, есть ли валидный TGT в связке по умолчанию
    • Запросить билет для сервера у своего KDC
    • Если KDC не знает о сервере, Kerberos можно не использовать
  • Проблема в том, что вызовы GSS-API синхронны, Firefox пока не умеет не блокировать остальные окна

Демонстрация IPSILON

Что это было?

  1. Ipsilon -- Identity provider, поддерживающий GSSAPI, SAML, OpenID и другие методы аутентификации

  2. Epiphany не может передать существующий билет Kerberos в IPSILON

  3. Невозможно обеспечить вход "без пароля" средствами EPIPHANY

Интеграция

Cockpit и FreeIPA

  • В панели управления GNOME можно было бы добавить ссылки на FreeIPA и Cockpit
  • Службы управления можно легко обнаруживать и их интерфейсы управления показывать администратору

Спасибо!

 

Alexander Bokovoy <ab@samba.org>