![](https://habrastorage.org/getpro/habr/upload_files/c34/1c5/498/c341c5498055153a3c45026049deba38.png)
Файлы и их хозяева
Файлы в операционках семейства Linux можно назвать основой всего. Для Linux все есть файл. Другими словами, файлы это не только объекты для хранения информации, но и устройства, тоннели, сокеты и многое другое. При этом, нам необходимы разграничивать доступ к тем или иным файлам в зависимости от прав пользователя, обращающегося к файлу.
У каждого файла в Linux системах есть владелец (user). И как мы уже говорили, у каждого пользователя есть уникальный идентификатор – user ID. Еще есть группы, то есть объединения пользователей по тому или иному признаку. Каждый пользователь должен состоять минимум в одной группе, но есть возможность добавить пользователя во множество групп. Так же, как и у пользователя, группа имеет уникальный идентификатор группы называемый GID – group ID.
Где хранятся учетки
Информацию об учетных записях ОС Linux хранит в файле /etc /passwd
.
Он содержит следующее:
![](https://habrastorage.org/getpro/habr/upload_files/bf8/9d8/aca/bf89d8acae15bf70fbaaacea0391415e.png)
Где:
User ID - логин;
Password – наличие пароля;
UID - идентификатор пользователя;
GID - идентификатор группы по умолчанию;
User Info – вспомогательная информация о пользователе (полное имя, контакты и т.д.)
Home Dir - начальный (он же домашний) каталог;
Shell - регистрационная оболочка, или shell.
Когда-то, на заре становления Линукс, в файле /etc/passwd
хранились также хэши паролей от учетных записей пользователей. Но тогда эти данные становились легкой добычей злоумышленников, так как любой пользователь мог прочитать этот файл и скопировать хэши для последующей расшифровки.
В качестве проверки можно под учеткой обычного пользователя (не root) ввести cat /etc/passwd
и вы получите содержимое файла.
![](https://habrastorage.org/getpro/habr/upload_files/1a7/17c/79a/1a717c79a4261f8b1b7e96b799792061.png)
Для хранения хэшей паролей в современных Линукс используется файл /etc/shadow
.
![](https://habrastorage.org/getpro/habr/upload_files/83a/378/753/83a378753d3947ff0ff93904a0ceafd6.png)
И вот к содержимому этого файла обычные пользователи уже доступа не имеют. Таким образом, обеспечивается защита хэшей от пользовательского доступа.
![](https://habrastorage.org/getpro/habr/upload_files/135/862/b69/135862b69d6f3cd977502d93f81874b7.png)
Файл /etc/shadow
имеет следующую структуру:
![](https://habrastorage.org/getpro/habr/upload_files/eee/175/bb6/eee175bb67f145402fa075c60e8a0a1a.png)
loginID:password:lastchg:min:max:warn:inactive:expire
где:
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).
![](https://habrastorage.org/getpro/habr/upload_files/510/488/b40/510488b408ae11251b5dfd76bd86355b.png)
Таким образом, использование соли для шифрования паролей осложняет перебор, так как не позволяет использовать готовые таблицы.
Заключение
В этой статье мы рассмотрели механизмы работы с учетными записями в ОС семейства Linux, в частности механизм обеспечения безопасности при хранении хэшей паролей. В следующей статье мы начнем говорить о настройках доступа и тех ошибках могут допустить администраторы при выполнении этих настроек.
Вместо заключения хочу пригласить вас на бесплатные демоуроки по Linux от OTUS. Зарегистрироваться на уроки можно по ссылкам ниже: