Bug 48481 - Не задаёт минимальный / максимальный срок действия пароля для политики паролей
Summary: Не задаёт минимальный / максимальный срок действия пароля для политики паролей
Status: CLOSED NOTABUG
Alias: None
Product: Branch p10
Classification: Unclassified
Component: samba (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: Evgeny Sinelnikov
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-11-17 11:19 MSK by Evgeny Shesteperov
Modified: 2023-11-18 03:07 MSK (History)
0 users

See Also:


Attachments
Пароль не истекает через ADMC (78.51 KB, image/png)
2023-11-18 03:02 MSK, Evgeny Sinelnikov
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Evgeny Shesteperov 2023-11-17 11:19:50 MSK
Версия

-   samba-4.16.11-alt2

Дистрибутивы

-   ALT Server 10.1, обновленный до P10

Шаги воспроизведения

Согласно https://wiki.samba.org/index.php/Password_Settings_Objects
пытаюсь настроить следующую политику паролей:

-   Max password age: 1 day
-   Min password age: 0 day (в любое время)

Делаю следуюшее:

1.  Задать пользователям другое устаревание пароля на сервере Samba:

    # samba-tool domain passwordsettings set --min-pwd-age=0 --max-pwd-age=1

2.  Данные указаны корректно:

    # samba-tool domain passwordsettings show
    Password information for domain 'DC=samba,DC=testdomain'

    Password complexity: off
    Store plaintext passwords: off
    Password history length: 0
    Minimum password length: 1
    Minimum password age (days): 0
    Maximum password age (days): 1
    Account lockout duration (mins): 30
    Account lockout threshold (attempts): 0
    Reset account lockout after (mins): 30

3.  Проверяю на:
    1.  Клиент с Windows 7 Pro с RSAT, политика Конфигурация компьютера
        → Политики → Конфигурация Windows → Параметры безопасности →
        Политики учетный записей → Политики паролей → Минимальный срок
        действия паролей / Максимальный срок действия паролей

    2.  Используя примерно следующий скрипт на клиенте:

            USER="user" && \
            PASS='password' && \
            DC="dc.samba.testdomain" && \
            RPCLOOKUPID=$(rpcclient -U $USER%$PASS -c "lookupnames $USER" $DC 2> ./rpc_errFile) && \
            USERDCID=$(echo "$RPCLOOKUPID" | grep -e '[0-9]\{4,9\} ' -o) && \
            QUERYUSER=$(LANG=POSIX rpcclient -U $USER%$PASS -c "queryuser $USERDCID" $DC 2> ./rpc_errFile) && \
            EXPDATE=$(echo "$QUERYUSER" | grep 'Password must change Time') && \
            echo $EXPDATE

    3.  Вживую, в графической сессии, через пару дней.

Ожидаемый результат: политики заданы, скрипт показывает следующий день,
при заходе на клиент происходит процедура смены паролей.

Фактический результат: политики не заданы (значение: Не определено),
скрипт показывает
Password must change Time: Thu, 14 Sep 30828 05:48:05 MSK, при заходе в
сессию не происходит процедура смены паролей.

В Sisyphus не проверялось.
Comment 1 Evgeny Sinelnikov 2023-11-18 02:34:26 MSK
А в каком смысле настройки проводятся согласно реализации Password_Settings_Objects?

Их же нужно отдельно настраивать и задавать:
...
Many different PSOs can apply to the same user (either directly, or via groups). When multiple PSOs apply to the same user, essentially the PSO with the lowest precedence takes effect. However, PSOs that apply directly to a user always trump PSOs inherited via group membership. To see what PSO takes effect for a given user, use samba-tool domain passwordsettings pso show-user.

If no PSO applies to a user, then the domain password settings apply. You can view/modify these using samba-tool domain passwordsettings show|set.
...

То есть, в данном случае, PSO никак не используются и отсылка к документации об этом не имеет смысла. Используются глобальные настройки политик домена.

____________________________

К локальным "политикам Конфигурация компьютера" на клиентах эта политика никак не относится. Поэтому непонятно, с чего вы решили, что она должна отображаться. Может быть такая политика появляется с какой-либо другой версией samba? Не думаю.

Возможно так прилетают настройки политик при использовании Windows Server? Если такой вариант настроек с Windows Server, в качестве контроллера домена, удастся воспроизвести, то требуется приложить соответствующий каталог с настройками GPT (Group Policy Template) из каталога SysVol на контролере домена.

Вы хотите сказать, что требование сменить пароль через заданное время не работает на Windows7? А на Linux-клиентах?

Со своей стороны на Linux-клиенте (сервер samba-4.16.9) пока подтвердить такое поведение не могу:
[sin@xdt loongarch]$ LC_ALL=C rpcclient -c "queryuser 1104" dc2 -k
WARNING: The option -k|--kerberos is deprecated!
	User Name   :	sin
	Full Name   :	Evgeny Sinelnikov
	Home Drive  :	
	Dir Drive   :	
	Profile Path:	
	Logon Script:	
	Description :	
	Workstations:	
	Comment     :	
	Remote Dial :
	Logon Time               :	Fri, 17 Nov 2023 23:35:15 +04
	Logoff Time              :	Thu, 01 Jan 1970 04:00:00 +04
	Kickoff Time             :	Thu, 14 Sep 30828 06:48:05 +04
	Password last set Time   :	Fri, 20 Oct 2023 07:27:54 +04
	Password can change Time :	Sat, 21 Oct 2023 07:27:54 +04
	Password must change Time:	Sat, 19 Oct 2024 07:27:54 +04
	unknown_2[0..31]...
	user_rid :	0x450
	group_rid:	0x201
	acb_info :	0x00000010
	fields_present:	0x08ffffff
	logon_divs:	168
	bad_password_count:	0x00000000
	logon_count:	0x000011f5
	padding1[0..7]...
	logon_hrs[0..21]...

[sin@xdt loongarch]$ klist 
Ticket cache: FILE:/tmp/krb5cc_758801104
Default principal: sin@SMB.BASEALT.RU

Valid starting       Expires              Service principal
17.11.2023 23:35:14  18.11.2023 09:35:14  krbtgt/SMB.BASEALT.RU@SMB.BASEALT.RU
	renew until 24.11.2023 23:35:14
18.11.2023 03:18:31  18.11.2023 09:35:14  cifs/dc2@SMB.BASEALT.RU
	renew until 24.11.2023 23:35:14

[sin@xdt loongarch]$ kinit 
Password for sin@SMB.BASEALT.RU: 
Warning: Your password will expire in 336 days on Сб 19 окт 2024 07:27:54


Давайте ещё раз уточню, какой клиент используется для проверки, Windows7 ?
Comment 2 Evgeny Sinelnikov 2023-11-18 02:54:30 MSK
Когда-то, в далёком 2016 году, когда PSO не поддерживались, всё было просто:
 - https://groups.google.com/g/linux.samba/c/1L6YAqcytQY

Rowland penny
29 апр. 2016 г., 00:20:04
–
OK, with Samba4 you cannot use a gpo to set when a users password
expires, you have to use Samba-tool for this, you will also have to use
samba-tool to change password complexity.

To make a user change their password, you need to change the
'pwdLastSet' attribute in the users AD object to '0'

To stop a users password expiring you need to change the
'UserAccountControl' attribute in the users AD object, this normally
will contain '512' if the user is enabled and '514' if the user is
disabled. To stop the password expiring you need to add '65536' to
whatever is there now (unless, of course, it is already larger than 65536).

How you do this is up to you, you could use ldbmodify, ldapmodify,
ldbedit or from ADUC.

See here for more info about UserAccountControl :
https://support.microsoft.com/en-gb/kb/305144

-

Как видно из пояснения выше, у пользователя есть в атрибутах поле userAccountControl, которое играет важную функцию при проверке устаревания пароля.

У меня так:

$ ldapsearch -LLL -Y GSSAPI -h dc2 -b dc=smb,dc=basealt,dc=ru '(sAMAccountName=sin)' sAMAccountName userAccountControl
SASL/GSSAPI authentication started
SASL username: sin@SMB.BASEALT.RU
SASL SSF: 56
SASL data security layer installed.
dn: CN=Evgeny Sinelnikov,OU=Developers,OU=Saratov,DC=smb,DC=basealt,DC=ru
sAMAccountName: sin
userAccountControl: 512

Представим себе вариант, что атрибут "Требовать смену пароля" не установлен. В этом случае требование смены пароля работать, очевидно, не будет.

А как это настроено в вашем случае?

И почему у вас скрипт показывает такой странный год в дате, может быть это ошибка?

> Password must change Time: Thu, 14 Sep 30828 05:48:05 MSK

В вашем описании по воспроизведению проблемы шаги по созданию и настройке пользователя, вообще, не описаны.
Comment 3 Evgeny Sinelnikov 2023-11-18 03:02:10 MSK
Created attachment 15078 [details]
Пароль не истекает через ADMC

Выполнил проверку - установил "Пароль не истекает" через ADMC.
Comment 4 Evgeny Sinelnikov 2023-11-18 03:05:15 MSK
$ ldapsearch -LLL -Y GSSAPI -h dc2 -b dc=smb,dc=basealt,dc=ru '(sAMAccountName=sin)' sAMAccountName userAccountControl
SASL/GSSAPI authentication started
SASL username: mastersin@SMB.BASEALT.RU
SASL SSF: 56
SASL data security layer installed.
dn: CN=Evgeny Sinelnikov,OU=Developers,OU=Saratov,DC=smb,DC=basealt,DC=ru
sAMAccountName: sin
userAccountControl: 66048

# refldap://smb.basealt.ru/CN=Configuration,DC=smb,DC=basealt,DC=ru

# refldap://smb.basealt.ru/DC=DomainDnsZones,DC=smb,DC=basealt,DC=ru

# refldap://smb.basealt.ru/DC=ForestDnsZones,DC=smb,DC=basealt,DC=ru

$ klist 
Ticket cache: FILE:/tmp/krb5cc_758801104
Default principal: mastersin@SMB.BASEALT.RU

Valid starting       Expires              Service principal
18.11.2023 03:57:02  18.11.2023 13:57:02  krbtgt/SMB.BASEALT.RU@SMB.BASEALT.RU
	renew until 25.11.2023 03:56:55
18.11.2023 03:57:10  18.11.2023 13:57:02  ldap/dc2.smb.basealt.ru@
	renew until 25.11.2023 03:56:55
	Ticket server: ldap/dc2.smb.basealt.ru@SMB.BASEALT.RU

$ LC_ALL=C rpcclient -c "queryuser 1104" dc2 -k
WARNING: The option -k|--kerberos is deprecated!
	User Name   :	sin
	Full Name   :	Evgeny Sinelnikov
	Home Drive  :	
	Dir Drive   :	
	Profile Path:	
	Logon Script:	
	Description :	
	Workstations:	
	Comment     :	
	Remote Dial :
	Logon Time               :	Sat, 18 Nov 2023 03:25:14 +04
	Logoff Time              :	Thu, 01 Jan 1970 04:00:00 +04
	Kickoff Time             :	Thu, 14 Sep 30828 06:48:05 +04
	Password last set Time   :	Fri, 20 Oct 2023 07:27:54 +04
	Password can change Time :	Sat, 21 Oct 2023 07:27:54 +04
	Password must change Time:	Thu, 14 Sep 30828 06:48:05 +04
	unknown_2[0..31]...
	user_rid :	0x450
	group_rid:	0x201
	acb_info :	0x00000210
	fields_present:	0x08ffffff
	logon_divs:	168
	bad_password_count:	0x00000000
	logon_count:	0x000011f6
	padding1[0..7]...
	logon_hrs[0..21]...

Удивительным образом, звезды сошлись.
Comment 5 Evgeny Sinelnikov 2023-11-18 03:07:35 MSK
Ну, то есть такая "странная дата", как раз, и указывается, если проверка истечения пароля для пользователя отключена у него в атрибутах.

$ LC_ALL=C rpcclient -c "queryuser 1104" dc2 -k | grep 'Password must change Time'
WARNING: The option -k|--kerberos is deprecated!
	Password must change Time:	Thu, 14 Sep 30828 06:48:05 +04

30828 год - это ещё не скоро...