[devel] ALT Local policy (was: Новый control для sshd: sshd-allow-gssapi)

Evgeny Sinelnikov sin на altlinux.org
Пт Ноя 8 21:56:14 MSK 2019


Добрый вечер.

Хочу продолжить прерванную переписку (привожу ниже текущие
результаты). Для сбора всех настроек по умолчанию, которые пока не
внесены в пакеты (через control или другие механизмы), оформлен пакет
local-policy.

Мы его только начали наполнять и подготовили несколько недостающих
ручек для настроек ssh и ldap. Я предлагаю постененно все специальные
неочевидные настройки, которые часто разложены по отдельным фичам
собрать и оформить в рамках общего интерфейса (тогда можно и по
зависимостям притянуть). Если получится, то в виде control'ов, если
нет, то как-то иначе.

Сейчас предлагаю определиться по двум моментам:

1. В пакете local-policy определены три новых политики для openssh
(две мы уже обcуждали, третью я описал в конце сообщения):
- sshd-gssapi-auth
- ssh-gssapi-auth
- sshd-allow-groups-list
и ещё две для клиентов openldap:
- ldap-reverse-dns-lookup
- ldap-tls-cert-check

Как нам лучше поступить с этими настройками? Оставляем в local-policy
или переносим в пакеты openldap и openssh-server-control?

Если sshd-gssapi-auth и sshd-allow-groups-list переносим в
openssh-server-control, то где оставляем ssh-gssapi-auth? В
local-policy? И какой пакет тогда создает группу remote (см. ниже)?

2. Второй момент связан с новыми вариантами control'ов, в которые
добавлен выбор default. Мы будем так переделывать все control'ы? Это
бы позволило сильно сократить головную боль о том, "как вернуть
исходные политки" (сделать unapply) в терминах групповых политик.

Пример:
~ # grep "new_help default" /etc/control.d/facilities/ -R
/etc/control.d/facilities/ldap-reverse-dns-lookup:new_help default
'Allow reverse DNS lookup functionality for LDAP queries'
/etc/control.d/facilities/sshd-gssapi-auth:new_help default 'Disable
GSSAPI authentication (Single Sign-On feature)'
/etc/control.d/facilities/ssh-gssapi-auth:new_help default 'Disable
GSSAPI authentication (Single Sign-On feature) in SSH client'
/etc/control.d/facilities/sshd-password-auth:new_help default 'Reset
password authentication setting to the package default'
/etc/control.d/facilities/ldap-tls-cert-check:new_help default 'The
default value is demand'
/etc/control.d/facilities/udisks2:new_help default "/run/media/\$user
used for mounting"


пн, 21 окт. 2019 г. в 16:15, Dmitry V. Levin <ldv at altlinux.org>:
>
> On Thu, Oct 10, 2019 at 09:04:04PM +0400, Evgeny Sinelnikov wrote:
> > чт, 10 окт. 2019 г., 19:36 Dmitry V. Levin <ldv at altlinux.org>:
> [...]
> > > По аналогии с sshd-password-auth предлагаю переименовать sshd-allow-gssapi
> > > в sshd-gssapi-auth.
> >
> > Почему бы и нет? Давайте так его назовём.
> >
> > А клиентский вариант, разрешающий gssapi аутентификацию тогда
> > ssh-gssapi-auth. Так получается?
>
> Выглядит нормально, никто не возразил, пусть будет так.

Запилили текущие наработки в пакет local-policy:
#240497 TESTED #1 [test-only] sisyphus local-policy.git=0.0.5-alt1
- http://git.altlinux.org/people/nir/packages/local-policy.git
- http://git.altlinux.org/people/sin/packages/local-policy.git

Добавил новый control sshd-allow-groups-list для выбора списка групп,
которыми ограничен доступ через ssh. Доступно четыре варианта
политики:

1) значение users (по умолчанию) - группы wheel and users:
Разрешает доступ пользователям из групп wheel and users. То есть для
администраторов и всех пользователей в группе users. Предполагается,
что все локальные пользователи (но не сервисы) попадают в эту группу.
Сейчас, по умолчанию, локальные пользователи в группу users не
добавляются и мне это странно (наверное, для этого нужна ещё одна
политика), хотя, при вводе в домен у нас пользователи домена в группу
users добавляются.

2) значение remote - группы wheel and remote:
Разрешает доступ пользователям из групп wheel and remote.
Дополнительная группа remote создаётся при установке в rpm-скрипте,
как обычно. Эта группа создана специально для того, чтобы отделить
всех пользователей от пользователей, которым разрешён удалённый
доступ.

3) значение wheelonly - группа wheel:
Разрешает доступ только пользователям из группы wheel. То есть, по
сути, локальным администраторам.

Хотя роль локальных администраторов у нас в домене (через
alterator-auth) явно определяется через группу localadmins (Почему не
admins спросите вы? Потому что во FreeIPA это имя забили раньше и
чтобы не было конфликта, решили выбрать другое).
При этом пользователи группы localadmins в группу wheel попадают
автоматически через модуль ролей (nss-модуль, обеспечивающий группы в
группах):
http://git.altlinux.org/gears/l/libnss-role.git

4) значение remoteonly - группа remote:
Разрешает доступ только пользователям из группы remote. Это вариант
политики, который повзоляет не всем локальным администраторам ходить
по ssh. Иногда локальные администраторы - локальные пользователи,
которым нужен su или sudo, а вот ssh им давать не хотелось бы.

Пример.

~ # control sshd-allow-groups-list summary
OpenSSH server list of allowed groups configuration
~ # control sshd-allow-groups-list help
users: Allow SSH Access to groups wheel and users
remote: Allow SSH Access to groups wheel and remote
wheelonly: Allow SSH Access to group wheel only
remoteonly: Allow SSH Access to group remote only

~ # control sshd-allow-groups-list status
remote
~ # grep AllowGroups /etc/openssh/sshd_config
AllowGroups wheel remote

~ # control sshd-allow-groups disabled
~ # control sshd-allow-groups-list users
~ # grep AllowGroups /etc/openssh/sshd_config
#AllowGroups wheel users

~ # control sshd-allow-groups enabled
~ # grep AllowGroups /etc/openssh/sshd_config
AllowGroups wheel users

~ # control sshd-allow-groups-list remote
~ # grep AllowGroups /etc/openssh/sshd_config
AllowGroups wheel remote

Пример политик для openldap:

~ # control ldap-reverse-dns-lookup summary
Allow reverse DNS lookup functionality for LDAP queries
~ # control ldap-reverse-dns-lookup help
allow: Allow reverse DNS lookup functionality for LDAP queries
deny: Deny reverse DNS lookup functionality for LDAP queries
default: Allow reverse DNS lookup functionality for LDAP queries

~ # control ldap-tls-cert-check summary
TLS certificate check behavior
~ # control ldap-tls-cert-check help
default: The default value is demand
never: Do not try to request or check any certificate
allow: Continue to use session in case no or bad server certificate is provided
try: Drop session only if bad certificate is provided
demand: Establish session only if good server certificate is provided

~ # control ldap-reverse-dns-lookup allow
~ # control ldap-tls-cert-check try
~ # tail -n2 /etc/openldap/ldap.conf
sasl_nocanon no
tls_reqcert try

~ # control ldap-reverse-dns-lookup deny
~ # control ldap-tls-cert-check never
~ # tail -n2 /etc/openldap/ldap.conf
sasl_nocanon yes
tls_reqcert never



--
Sin (Sinelnikov Evgeny)


Подробная информация о списке рассылки Devel