Как запретить пользователям расширять свое окно действительного входа

14

Я работал над некоторыми процедурами усиления безопасности для коробки RedHat, и я хотел знать, можно ли будет помешать пользователю сменить пароль после истечения срока его действия.

Для одного из наших клиентов требование заключается в том, что они должны иметь доступ к серверу только через временные учетные записи. Это означает, что после создания учетных данных пользователя срок действия пароля должен истечь в течение 4 часов, а после истечения срока действия пароля только пользователь root может изменить его. ,

По первому требованию (срок действия паролей истекает через 4 часа), я думаю, этого можно достичь, установив passwordMaxAge = 144000 . Но я все еще не мог найти способ запретить пользователям изменять пароли с истекшим сроком без отключения срока действия пароля.

Кто-нибудь может помочь?

рожденный в хуле
источник
4
Это нормально, если пользователь сохраняет открытые сеансы входа в систему после 4-часового окна? Истечение срока действия пароля пользователя не выгонит его, если он уже вошел в систему. Я мог бы держать сеанс SSH открытым в течение нескольких недель.
Wyzard
Вместо того, чтобы полагаться на / cronjobs и модифицировать системные двоичные файлы, вы можете написать простой модуль pam, или, может быть, есть даже один (или вы можете, возможно, раскошелиться на pam_time, чтобы включить больше опций)
PlasmaHH

Ответы:

21

Как правило, срок действия пароля используется, чтобы заставить пользователей изменить свои пароли. То, что вы хотите сделать, это заблокировать учетную запись, которая запрещает вход в систему.

Вместо этого я бы посоветовал вам при создании учетной записи также настроить at at job, которая заблокирует учетную запись через четыре часа.

Например:

useradd temp8143
echo chage -E 0 temp8143 | at now + 4 hours

( chage -Eожидается, что срок годности будет указан в днях, поэтому мы работаем с ним на работе.)

Майкл Хэмптон
источник
3
Это хорошее решение. +1 от меня.
Дженни Д
2
Ах, взрыв - Мне нравится эта идея , а также ; также +1. Вы могли бы даже сделать atтэд userdel, который имел бы преимущество в том, чтобы привести в порядок все эти временные учетные записи, чтобы они не зависали вечно.
MadHatter
2
Я думаю, что это лучше, чем мое предложение, на самом деле.
Дженни Д
Я думаю passwd -l temp813, достигнет того же, что и chage -E 0 temp8143.
Нейт Элдридж
5
@NateEldredge Не совсем. passwd -lнапример, не будет препятствовать входу в систему через ssh-ключ или вход по отпечатку пальца chage -E 0.
Майкл Хэмптон
24

Если вы удалите бит setuid из команды passwd, только root сможет использовать его. Это также отключит пользователей от смены пароля до истечения срока его действия - в противном случае пользователи могли бы продлить срок действия учетной записи еще на четыре часа.

[jenny@finch ~] sudo chmod -s /usr/bin/passwd
[jenny@finch ~]$ passwd
Changing password for user jenny.
Changing password for jenny.
(current) UNIX password: 
New password: 
Retype new password: 
passwd: Authentication token manipulation error

Root все еще может изменить любой пароль:

[jenny@finch ~]$ sudo passwd jenny
Changing password for user jenny.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
Дженни Д
источник
5
Элегантный и очень UNIX. +1 от меня. @borntohula, не забудьте принять этот ответ, нажав на "галочку", если вас это устраивает.
MadHatter
6
Это почти работает. Проблема в том, что удаление бита setuid будет отменено, если passwdоно будет обновлено системой.
Майкл Хэмптон
3
@MichaelHampton Правда. Исправление это то, для чего, например, кукольный. Кроме того, не каждый ли проверяет свои системы на наличие новых битов setuid / setgid после каждого обновления?
Дженни Д
1
@JennyD - они, вероятно, должны проверять изменение битов setuid / setgid, но очень немногие это делают
Уоррен
2
@ warren - в этом предложении, возможно, был небольшой след сарказма. Очень маленький след. Ничтожна.
Дженни Д