Найти учетные записи пользователей с пустым паролем в Linux
Обнаружение учетных записей пользователей без пароля в Linux
Самый худший пароль — это не слабый пароль, а отсутствие пароля вообще. Как системный администратор, вы должны убедиться, что каждая учетная запись пользователя имеет надежный пароль. В этом кратком руководстве объясняется, как найти учетные записи пользователей с пустым паролем в Linux.
Прежде чем перейти к этой теме, давайте кратко рассмотрим файл shadow и его назначение.
Что такое файл теневого пароля?
В системах RHEL пароли пользователей хешируются и сохраняются в защищенном файле с именем /etc/shadow
. Файл теневого пароля содержит сведения об аутентификации пользователя и сроке действия пароля учетных записей пользователей.
Файл теневого пароля принадлежит пользователю root
и доступен для чтения только суперпользователям. Вы можете проверить право собственности и разрешение теневого файла, используя следующую команду:
ls -l /etc/shadow
---------- 1 root root 618 Apr 7 07:52 /etc/shadow
Типичная структура образца строки из теневого файла приведена ниже.
user1:$6$5ps/XV21$EFmQ463GJZnsdF/:19089:0:99999:7:::
Как вы, возможно, уже знаете, теневой файл состоит из девяти полей, разделенных двоеточием.
Давайте кратко рассмотрим каждое поле.
- Файл 1 (имя для входа) - содержит имя для входа (user1), которое указано в файле
passwd
. - Файл 2 (зашифрованный пароль) — этот файл содержит хешированный (зашифрованный) пароль пользователя. Если в начале этого файла стоит один восклицательный знак (!), это означает, что учетная запись пользователя заблокирована. Если это поле пустое, у пользователя нет пароля.
- Файл 3 (последнее изменение). В этом поле показано количество дней с начала эпохи Unix (т. е. времени Unix — 01 января 1970 г., 00:00:00 UTC), когда пароль был последний раз изменен. Если это поле содержит 0, пользователь будет вынужден сменить свой пароль при следующем входе в систему.
- Файл 4 (минимум). В этом поле отображается минимальное количество дней (минут), которое должно пройти, прежде чем пользователю будет разрешено изменить свой пароль. Вы можете изменить это значение с помощью команды
chage
с опцией-m
. - Поле 5 (Максимум) — показывает максимальное количество дней (maxdays) срока действия пароля до истечения срока действия пароля пользователя. Если поле равно 0, это означает, что эта функция отключена. Значение этого поля можно изменить с помощью команды
chage
с опцией-M
. - Файл 6 (предупреждение) — указывает количество дней (дней предупреждения), в течение которых пользователь получает предупреждения об изменении пароля до истечения срока его действия. Вы можете изменить это значение с помощью команды
chage
с опцией-W
или командыpasswd
с опцией-w
. - Поле 7 (Срок действия пароля) — определяет максимально допустимое количество дней, в течение которого пользователь сможет войти в систему с истекшим паролем. Это можно изменить с помощью команды
chage
с флагом-I
или командыpasswd
с флагом-i
. - Поле 8 (Срок действия учетной записи) — определяет количество дней с момента UNIX-времени, когда срок действия учетной записи пользователя истечет и она станет недоступна. Вы можете изменить значение этого поля с помощью команды
chage
с опцией-E
. - Поле 9 (зарезервировано) - это поле зарезервировано для использования в будущем.
Как упоминалось выше, зашифрованные пароли хранятся во втором поле каждой записи в файле теневых паролей, сразу после имени пользователя.
Итак, если второе поле в теневом файле пусто, значит, у пользователя нет пароля. Позвольте мне показать вам пример нахождения всех учетных записей пользователей без пароля.
Найти все учетные записи пользователей без пароля в Linux
Чтобы обнаружить все локальные учетные записи пользователей без пароля, просто запустите следующую команду от имени пользователя root
:
awk -F: '$2 == "" { print $1, "has empty password!. Please set a strong password ASAP!!" }' /etc/shadow
Пример вывода:
ostechnix has empty password!. Please set a strong password ASAP!!
Вы также можете использовать команду getent
в сочетании с командами grep
и cut
для идентификации локальных учетных записей пользователей без пароля в Linux.
getent shadow | grep -Po '^[^:]*(?=::)'
Или,
getent shadow | grep '^[^:]*::' | cut -d: -f1
Все приведенные выше команды будут отображать только учетные записи локальных пользователей с пустыми паролями. Если вы хотите вывести список как системных учетных записей, так и учетных записей пользователей с пустым паролем, запустите.
getent shadow | grep -Po '^[^:]*(?=:.?:)'
Или,
getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
Найти учетные записи пользователей с пустым паролем
Найдите конкретную учетную запись пользователя без пароля
Приведенные выше команды выведут список всех локальных и системных учетных записей, у которых нет пароля. Вы также можете проверить статус пароля конкретной учетной записи пользователя, используя команду passwd
с флагом -S
.
passwd -S ostechnix
Пример вывода:
ostechnix NP 2022-04-07 0 99999 7 -1 (Empty password.)
Команды passwd
укажут статус пароля данной учетной записи пользователя. Возможные значения:
- LK — учетная запись пользователя заблокирована.
- NP — учетная запись пользователя не имеет пароля.
- PS - У учетной записи пользователя есть полезный пароль.
Внимание: В системах на базе Debian статус пароля будет обозначаться как L, N, P соответственно. .
Установить пароль пользователя в Linux
Вы можете войти в систему как пользователь без пароля, это совершенно нормально. Однако это не рекомендуется! Вы должны установить надежный пароль длиной не менее 8 символов, включая прописные и строчные буквы, специальный символ и цифру.
Чтобы установить пароль для учетной записи пользователя в Linux, используйте команду passwd
от имени пользователя root
, как показано ниже.
Как пользователь root:
passwd ostechnix
Замените ostechnix своим именем пользователя.
Теперь проверьте статус пароля учетной записи пользователя с помощью команды passwd
:
passwd -S ostechnix
Пример вывода:
ostechnix PS 2022-04-07 0 99999 7 -1 (Password set, SHA512 crypt.)
Установить пароль для пользователя в Linux
Блокировка учетных записей пользователей в Linux
Иногда вам просто нужно заблокировать учетные записи пользователей пустыми паролями. Если да, сначала найдите пользователей с пустыми паролями, как описано выше, и заблокируйте их с помощью команды passwd
с флагом -l
как root
< пользователь, как показано ниже.
passwd -l ostechnix
Пример вывода:
Locking password for user ostechnix.
passwd: Success
Теперь проверьте статус учетной записи пользователя:
passwd -S ostechnix
Пример вывода:
ostechnix LK 2022-04-07 0 99999 7 -1 (Password locked.)
Видеть? Пользователь заблокирован. Он больше не может войти в систему.
Вы также можете использовать команду usermod
с флагом -L
(заглавная L) для блокировки пользователя.
usermod -L ostechnix
Разблокировать учетные записи пользователей в Linux
Чтобы разблокировать пользователей без пароля в Linux, используйте команду passwd
или команду usermod
с -p
в качестве root
. пользователь.
passwd ostechnix
Введите пароль дважды, чтобы разблокировать пароль.
Разблокировка пользователя с пустым паролем с помощью команды usermod
невозможна. Вам следует установить пароль с помощью usermod -p
, чтобы разблокировать пароль пользователя.
usermod -p <password-here> ostechnix
Заключение
В этом руководстве мы объяснили, что такое файл теневых паролей и назначение этого файла в Linux. Затем мы обсудили различные команды для нахождения всех учетных записей пользователей без пароля в Linux. Наконец, мы узнали, как установить пароль для пользователя, а также как блокировать и разблокировать пользователей в Linux.