Файл хранения паролей linux
Если нужно чтобы пользователь не имел доступа к shell, создайте скрипт « /bin/sorrysh », который выведет соотвтетствующее сообщение и завершит работу пользователя. Впишите скрипт сюда в качестве оболочки.
Замечание: Если пользователь должен передавать файлы по “FTP” shell должна быть нормальной оболочкой, например, « /bin/bash », а чтобы не давать shell-доступа надо настроить доступ в домашнем каталоге пользователя. См. раздел Администрирование Web-сервера и HTTP Proxy в главе 7.
Файл « /etc/shadow » хранит данные о пользователе в формате:
smithj:Ep6mckrOLChF.:10063:0:99999:7.
Как и в файле passwd, каждое поле в файле shadow отделяется двоеточием:
- Username, до 8 символов. Совпадает с username в файле /etc/passwd.
- Пароль, 13 символов (зашифрованный). Пустая запись (то есть, ::) показывает, что для входа пароль не нужен (обычно идея плохая), и запись «*» (то есть, :*:) показывает, что вход заблокирован.
- Количество дней (с 1 января 1970), когда пароль был сменен в последний раз.
- Число дней до смены пароля (0 показывает, что он может быть сменен всегда).
- Число дней, после которых пароль должен быть сменен (99999 показывает, что пользователь может не менять пароль фактически никогда).
- Число дней, в течение которых пользователь получает предупреждения о необходимости пароль сменить (7 для полной недели).
- Число дней после окончания действия пароля, когда еще можно работать. Если пароль не сменить, после данного срока он выдохнется, и аккаунт будет заблокирован.
- Число дней, начиная с 1 января 1970, после которых пароль будет заблокирован.
- Зарезервировано для возможного будущего использования.
Управление учетными записями в Linux. Часть 1. Хранение учетных данных
Файлы в операционках семейства Linux можно назвать основой всего. Для Linux все есть файл. Другими словами, файлы это не только объекты для хранения информации, но и устройства, тоннели, сокеты и многое другое. При этом, нам необходимы разграничивать доступ к тем или иным файлам в зависимости от прав пользователя, обращающегося к файлу.
У каждого файла в Linux системах есть владелец (user). И как мы уже говорили, у каждого пользователя есть уникальный идентификатор – user ID. Еще есть группы, то есть объединения пользователей по тому или иному признаку. Каждый пользователь должен состоять минимум в одной группе, но есть возможность добавить пользователя во множество групп. Так же, как и у пользователя, группа имеет уникальный идентификатор группы называемый GID – group ID.
Где хранятся учетки
Информацию об учетных записях ОС Linux хранит в файле /etc /passwd .
Он содержит следующее:
Где:
User ID — логин;
Password – наличие пароля;
UID — идентификатор пользователя;
GID — идентификатор группы по умолчанию;
User Info – вспомогательная информация о пользователе (полное имя, контакты и т.д.)
Home Dir — начальный (он же домашний) каталог;
Shell — регистрационная оболочка, или shell.
Когда-то, на заре становления Линукс, в файле /etc/passwd хранились также хэши паролей от учетных записей пользователей. Но тогда эти данные становились легкой добычей злоумышленников, так как любой пользователь мог прочитать этот файл и скопировать хэши для последующей расшифровки.
В качестве проверки можно под учеткой обычного пользователя (не root) ввести cat /etc/passwd и вы получите содержимое файла.
Для хранения хэшей паролей в современных Линукс используется файл /etc/shadow .
И вот к содержимому этого файла обычные пользователи уже доступа не имеют. Таким образом, обеспечивается защита хэшей от пользовательского доступа.
Файл /etc/shadow имеет следующую структуру:
loginID – имя пользователя;
password – пароль в зашифрованном виде;
lastchg – количество дней c 1.01.1970, когда пароль был изменен в последний раз;
min – минимальное число дней между сменами пароля;
max – максимальное число дней, в течении которых пароль будет валиден;
warn – количество дней за которые пользователь будет предупрежден об истечении пароля;
inactive – количество дней, в течении которых пользователь может быть неактивен перед блокировкой;
expire – дата, когда истекает срок пользовательской учетной записи.
Отсутствие доступа к /etc/shadow для обычных пользователей конечно усложняет жизнь потенциальным взломщикам, но не исключает полностью возможность получить доступ к хэшам. При наличии физического доступа злоумышленник может загрузиться с флешки и подмонтировав раздел скопировать нужный файл к себе. Аналогично в случае использования виртуализации можно скопировать выключенную виртуалку к себе и затем, также загрузиться со сменного носителя.
В случае, если хакер получил права обычного пользователя, например www, он может попытаться повысить привилегии для того, чтобы прочитать файл. Также, если пользователь может загружать любые docker-контейнеры, то при определенных условиях он может получить права на чтение /etc/shadow. Об этом мы подробно поговорим в третьей статье.
Быстрый перебор
Не углубляясь в тему взлома (все-таки эта статья больше про администрирование Linux) кратко опишем дальнейшие действия злоумышленника после получения доступа к хэшам паролей.
Перебор паролей даже на достаточно мощной машине процесс довольно продолжительный. И для того, чтобы его максимально ускорить существуют наборы сгенерированных заранее хэшей паролей, например все комбинации из цифр длиной до 10 символов, маленьких латинских букв до 10 символов и т.д. Более сложные комбинации тоже можно получить готовыми, но это уже будет стоить денег. Тем не менее взломщик может сэкономить много времени используя готовые хэши.
И еще немного… соли
Для решения проблемы использования готовых хэшей разработчики ОС Linux стали использовать соль (salt), то есть набор из нескольких дополнительных байт, который добавлялись к паролю перед хэшированием.
Обычно формат пароля, хранимого в /etc/shadow представляет собой:
$id $salt $hashed, где $id — алгоритм, которым шифруется пароль ($1 is MD5, $2a is Blowfish, $2y is Blowfish, $5 is SHA-256, $6 is SHA-512).
Таким образом, использование соли для шифрования паролей осложняет перебор, так как не позволяет использовать готовые таблицы.
Заключение
В этой статье мы рассмотрели механизмы работы с учетными записями в ОС семейства Linux, в частности механизм обеспечения безопасности при хранении хэшей паролей. В следующей статье мы начнем говорить о настройках доступа и тех ошибках могут допустить администраторы при выполнении этих настроек.
Вместо заключения хочу пригласить вас на бесплатные демоуроки по Linux от OTUS. Зарегистрироваться на уроки можно по ссылкам ниже:
Где и как хранятся пароли в Linux?
Добавить в избранное
Главное меню » Linux » Где и как хранятся пароли в Linux?
И мя пользователя с соответствующим паролем для конкретной учетной записи является основным требованием, с помощью которого пользователь может получить доступ к системе Linux. Все пароли учетных записей пользователей сохраняются в файле или базе данных, чтобы пользователь мог быть проверен во время попытки входа в систему. У каждого пользователя недостаточно навыков и опыта, чтобы найти этот файл в своей системе. Однако, если вы получите доступ к базе данных или к файлу, в котором хранятся все пароли пользователей для входа в систему, вы сможете легко получить доступ к системе Linux. Когда пользователь вводит имя пользователя и пароль в Linux для входа в систему, он сравнивает введенный пароль с записью в различных файлах каталога ‘/etc’.
Файл /etc/passwd хранит всю важную информацию, необходимую для входа пользователя. Проще говоря, в файле /etc/passwd хранятся данные учетной записи пользователя. Этот файл представляет собой обычный текстовый файл, содержащий полный список всех пользователей вашей системы Linux. Он содержит информацию об имени пользователя, пароле, UID (идентификатор пользователя), GID (идентификатор группы), оболочке и домашнем каталоге. Этот файл должен иметь разрешения на чтение, поскольку многие утилиты командной строки используются для сопоставления идентификаторов пользователей с именем пользователя. Но должны иметь ограниченные права на запись только для учетных записей суперпользователя или пользователя root.
В этой статье будет показано, как и где можно хранить пароли учетных записей системных пользователей в дистрибутиве Linux. Мы реализовали все демонстрации в системе Ubuntu 20.04. Однако вы можете найти файл /etc/passwd в любом дистрибутиве Linux.
Предварительные условия
У вас должны быть права root для выполнения административных команд.
Базовые сведения о файле/etc/passwd
Файл/etc/passwd содержит информацию об учетной записи пользователя вашей системы. Все сохраненные поля разделяются знаком двоеточия «:».
Когда вы запустите следующую команду, вы увидите каждую запись файла /etc/passwd:
Приведенная выше команда выведет список всех пользователей вашей системы Linux.
Подробная информация о форматах полей /etc/passwd:
- Username: первое поле представляет имя пользователя. Длина поля имени пользователя определяется от 1 до 32 символов. Это используется, когда пользователь входит в систему.
- Password: В приведенном выше примере символ «x» означает, что пароль хранится в зашифрованном виде в файле /etc/shadow.
- User ID (UID): идентификатор пользователя должен быть отдельно назначен каждому пользователю. Нулевой UID назначается пользователю root, а идентификаторы пользователей от 1 до 99 назначаются предопределенным или стандартным учетным записям. Дальнейшие UID от 100 до 999 назначаются системным административным учетным записям или группам.
- Group ID (GID): Следующее поле представляет собой идентификатор группы. GID хранится в файле /etc/group.
- Information about User ID: Следующее поле предназначено для комментариев. В этом поле вы можете добавить некоторую дополнительную информацию об указанном пользователе, такую как полное имя пользователя, номер телефона и т. д.
- Home directory: в этом поле отображается расположение домашнего каталога, назначенного текущему пользователю. Если указанный каталог не существует, будет отображаться «/».
- Command //shell: Абсолютный путь по умолчанию к оболочке или команде — /bin/bash. Это известно как оболочка. Например, системный администратор, использующий оболочку nologin. Он действует как замещающая оболочка для учетных записей пользователей системы. Если оболочка расположена по пути /sbin/nologin, и пользователь хочет войти непосредственно в систему Linux, оболочка /sbin/nologin закроет или отключит соединение.
Поиск пользователя в файле/etc/passwd
Вы можете найти конкретного пользователя с помощью файла/etc/passwd, используя команду grep. Например, мы хотим найти имя пользователя andreyex из файла/etc/passwd, используя следующий синтаксис, тогда мы можем легко найти указанного пользователя, сэкономив наше время:
Приведенный выше синтаксис изменится на следующую форму:
$ grep andreyex / etc / passwd