Хорошо, мы все заботимся о безопасности, поэтому пользователи должны регулярно менять свои пароли (кто сказал, что пароли похожи на нижнее белье?).
В redhat и centos (5.x и 6.x) можно сделать так, чтобы срок действия каждого реального пароля пользователя истек через 45 дней, и предупредить их за 7 дней до этого.
Запись в / etc / shadow будет выглядеть так:
testuser:$6$m8VQ7BWU$b3UBovxC5b9p2UxLxyT0QKKgG1RoOHoap2CV7HviDJ03AUvcFTqB.yiV4Dn7Rj6LgCBsJ1.obQpaLVCx5.Sx90:15588:1:45:7:::
Он работает очень хорошо, и большинство пользователей часто меняют свои пароли.
Некоторым пользователям удобно не использовать какой-либо пароль, кроме открытого ключа ssh (и я бы хотел их поддержать).
Затем через 45 дней они не могут войти в систему, так как забыли свой пароль, и их просят изменить его.
Есть ли способ предотвратить истечение срока действия пароля тогда и только тогда, когда пароль отключен?
Настройка testuser:!!:15588:1:45:7:::
в / etc / shadow не работало: testuser просят сменить пароль через 45 дней.
Конечно, установка срока действия пароля на 99999 дней работает, но:
Есть ли общесистемный параметр, который предлагал бы пользователю изменить пароль с истекшим сроком, только если он у него действительно есть?
Вы используете традиционные файлы passwd / shadow unix? Если да, то пробовали ли вы отключить UsePAM
в конфиге sshd?
Я тестировал отключение UsePAM
на OpenSSH 5.8_p1, и пользователи, проходящие аутентификацию с помощью пароля, должным образом отклоняются, если срок действия их учетной записи истек, и их должным образом просят изменить свой пароль; и ничего не спрашивается при входе с ключом (и когда UsePAM
включен, я могу подтвердить, что при использовании ключа система по-прежнему запрашивает смену пароля.)
В соответствии с этот ответ на SU, пользователь должен по-прежнему иметь возможность войти в систему со своим закрытым ключом, даже если срок его действия истек.
Я думаю, что «ключ» в том, что у пользователя действительно есть пароль, срок действия которого истекает. Закрытый ключ - это еще один способ входа в систему. Я считаю, что если вы не отключите вход на основе пароля (настройка PasswordAuthentication
в sshd_config), пользователь все еще может войти со своим паролем.
В sshd_config есть еще один параметр, который называется PermitEmptyPasswords
, значение по умолчанию - «нет». Если вы удалите пароль пользователя, единственный способ войти в систему должен быть с его закрытым ключом. Поскольку на этом этапе пароля нет, возможно, срок его действия не истечет.
Это просто основано на ssh. Есть и другие области, на которые стоит обратить внимание, например console и su. Я не уверен, как они обрабатывают пустые пароли.
В крайнем случае вы всегда можете поместить bash-скрипт в cron, чтобы проверить, у каких пользователей есть ключи, и соответственно установить срок их действия. Я бы также сделал обратное: если у пользователя нет ключа, убедитесь, что срок его действия не слишком далек.
Лично я бы сделал всех пользователей парами открытых / закрытых ключей.
Таким образом, вы можете запросить информацию через
chage -l username
И вы можете отменить общесистемное значение по умолчанию с помощью следующих
chage -I -1 -m 0 -M 99999 -E -1 username
Я не думаю, что вы можете установить что-нибудь, что говорит ... у пользователя нет пароля, поэтому игнорируйте его.
Если пользователи не помнят свои пароли, это, конечно, потому, что им не нужно их использовать. Я бы рекомендовал использовать централизованную систему аутентификации, такую как LDAP, чтобы у каждого пользователя был только один пароль, который дает ему доступ к все.
Это решает сразу несколько проблем: