Home HSE — Operating Systems Security — Lab 2
Post
Cancel

HSE — Operating Systems Security — Lab 2


Создание пользователей. Права пользователей. ACL.

1. Создание пользователей. Задание паролей. Сброс пароля пользователя

  1. Создать две учетные записи пользователей: vlad, alex.

Создание пользователя vlad

Создание пользователя alex

Пароли: 1234 и 2345 соответственно


  1. Задать пользователям одинаковые пароли

Заданный пароль: 12


  1. Проанализировать файл /etc/shadow и /etc/passwd. Сделать соответствующие выводы.

Файл /etc/passwd

Файл /etc/shadow

Пароль пользователя parallels был скрыт.

Видим, что пользователям vlad и alex были заданы UID 1001 и 1002 и GID 1001 и 1002 соответственно. Видим, что UID совпадает с GID.

Также несмотря на то, что мы задали одинаковые пароли, хэш паролей различается из-за соли.


  1. Из файла /etc/shadow удалить свертку пароля пользователя vlad.

Использованная команда для редактирования файла: nano.


  1. Проверить, каким образом vlad войдет в систему. Сделать выводы.

Вход был выполнен без пароля.


  1. В файле /etc/shadow заменить свертку пароля для пользователя vlad сверткой пароля alex.

Использованная команда для редактирования файла: nano.


  1. Проверить, каким образом vlad войдет в систему. Сделать выводы.

Для входа потребовался пароль. Пароль 12 подошел. То есть, мы видим, что замена хэша пароля меняет пароль.

2. Создание пользователей вручную

  1. Вручную (без использования команды useradd или adduser) добавить пользователя dasha.

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

Добавленный пользователь dasha в файле /etc/passwd

Создание домашней директории для пользователя dasha

Проверка домашней директории для пользователя dasha


  1. Пароль пользователя задать вручную (без использования команды passwd).

С помощью редактора nano добавим новую строчку, содержащую данные о пользователе dasha. Хэш пароля возьмем от двух других пользователей.

Добавленный пользователь dasha в файле /etc/shadow


  1. Задать ограничения на пароль вручную, время действия пароля 3 дня (без использования команды passwd).

Добавление времени действия пароля для пользователя dasha


  1. Задать ограничения на пароль вручную, предупреждать о смене пароля за 5 дней (без использования команды passwd), убедиться в наличии предупреждений.

Добавление количества дней перед уведомлением об истечении срока пароля для пользователя dasha

Проверка предупреждения

3. Добавление пользователей в привилегированную группу (sudoers)

  1. Добавить пользователю dasha возможность выполнять команды от имени пользователя vlad с запросом пароля.
1
sudo visudo

Добавление пользователю dasha возможности выполнения команд от имени vlad


  1. Убедиться в возможности выполнения команд от имени пользователя vlad

Выполнение команды whoami от имени пользователя vlad для dasha


  1. Добавить пользователю anna возможность выполнять команды от имени пользователя alex без запроса пароля.

Для выполнения задания был создан пользователь anna

Добавление пользователю anna возможности выполнения команд от имени alex

Выполнение команды whoami от имени пользователя alex для anna

4. Разграничение прав пользователей

  1. Создать двух пользователей donald и richard.

Создание пользователя donald

Создание пользователя richard


  1. В директории /tmp создать файл magic.

Создание файла magic в директории /tmp


  1. Настроить его ACL таким образом, чтобы donald имел полный доступ к файлу, а richard мог только читать из него.

Настройка ACL для пользователей donald и richard

1
sudo sysctl fs.protected_regular=0s

  1. Убедиться, что права настроены правильно, для этого записать от имени donald данные файл, а затем считать их от имени richard. Затем попробовать записать от имени richard и убедиться, что это сделать невозможно.

Запись в файл magic от имени donald

Чтение файла magic от имени richard. Попытка записи в файл magic от имени richard

5. Рекурсивная настройка прав директорий

  1. В директории /tmp создать следующую структуру файлов:

Создание структуры файлов в директории /tmp


  1. Рекурсивно установить ACL права на всю указанную выше структуру так, чтобы donald мог писать в каждую поддиректорию.

Установка ACL прав на всю структуру для пользователя donald


  1. Убедиться в правильности установки прав, создав следующую структуру от имени donald:

Создание файлов пользователе donald

Созданные файлы

6. ACL по умолчанию

  1. В директории /*tmp создать поддиректорию incredible.*

Создание директории incredible

  1. Установить на эту директорию ACL по умолчанию таким образом, чтобы donald мог только читать файлы, размещённые в нём, а richard мог только записывать в файлы в нём.

Установка ACL на директорию incredible для пользователей donald и richard


  1. Убедиться, что права настроены правильно, для этого создать файл method в этой директории и попробовать записать в него данные сначала от имени donald, убедиться, что это невозможно, а затем от имени richard. Аналогично, попробовать считать данные по очереди за каждого из созданных пользователей.

Создание файла method

Попытка записи в файл method пользователем donald

Запись в файл method и попытка чтения method пользователем richard

Чтение файла method пользователем donald


  1. Создать ещё один файл cheese в tmp. Установить его права в ACL так, чтобы richard мог из него читать. Убедиться, что richard имеет возможность читать из cheese. Для этого от имени richard записать в него данные, а затем вывести его содержимое на экран.

Создание в директории tmp файла cheese

Установка прав для пользователя richard для файла cheese

Запись и чтение пользователем richard файла cheese

7. Эффективная маска

  1. Создать в директории /tmp файл history и записать в него произвольный текст.

Создание файла history в директории tmp


  1. Модифицировать ACL: дать пользователю donald право на чтение и запись в history.

Установка прав ACL пользователю donald для файла history


  1. Установить в ACL этого файла эффективную маску так, чтобы никто не мог записывать в файл.

Установка эффективной маски для файла history


  1. Убедиться в том, что donald не может ничего записать в history, но может из него считать.

Попытка записи и чтение файла history пользователем donald

8. Копирование ACL

  1. Создать в директории /tmp файлы notebook и illusion и записать в них текстовую информацию. Установить этим файлам стандартные UNIX-права 660, чтобы donald и richard не имели доступа к файлам.

Создание файлов notebook и illusion и запись в них текста

Установка стандартных UNIX–прав для файлов notebook и illusion


  1. Настроить ACL правила notebook так, чтобы donald мог читать из него, а правила illusion так, чтобы из него мог читать richard.

Установка прав ACL для файлов notebook и illusion


  1. Убедиться, что каждый из пользователей может читать из соответствующего файла.

Чтение файла notebook пользователем donald

Чтение файла illusion пользователем richard


  1. Скопировать ACL из файла notebook в файл illusion.

Копирование ACL из notebook в illusion


  1. Убедиться, что из файла illusion может читать только пользователь donald.

Попытка чтения файла illusion пользователем richard

Чтение файла illusion пользователем donald

Выводы

В данной лабораторной работе были отработаны навыки создания пользователей при помощи команд и вручную. Также настройка sudoers для исполнения команд от имени других пользователей. Также были отработаны всевозможные варианты настройки ACL прав.

Контрольные вопросы

1. Перечислите основные команды для работы с пользователями и группами

  • useradd & adduser
  • userdel & deluser
  • groupadd & addgroup
  • newusers
  • users
  • passwd
  • su
  • sudo

2. Почему нужны два разных файла `/etc/passwd` и `/etc/shadow`, почему нельзя использовать один из них?

В файле /etc/passwd хранится общая информация о пользователях.

В файле /etc/shadow хранится информация о паролях пользователей.

Некоторые командам нужна информация о пользователях, например для нахождения UID по именам пользователей или наоборот. Поэтому файл /etc/passwd общедоступен и каждый его может прочитать. А критически важная информация уже хранится в /etc/shadow и доступ к ней имеет только root.

3. Зачем нужны SUID и SGID и Stickybit?

SUID

Пусть пользователь хочет сменить пароль, тогда ему для этого нужны права для записи в файл /etc/shadow. Однако, файл /etc/shadow доступен только root. Так, пользователь не смог бы сменить пароль. Но благодаря SUID–биту установленному для команды passwd, эта команда запускается от имени root, что позволяет пользователю сменить пароль. Так, при использовании команды passwd с этим битом, пользователь временно получает права root.


SGID

SGID аналогичен SUID — файл будет запущен от имени группы владельца файла.

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


Sticky bit

Например, мы создали общую папку для пользователей. Пользователь имеет право туда писать. Однако, так, он также может удалить абсолютно всё из этой папки. Но, установив sticky бит на эту директорию, пользователь в этой директории сможет удалить только те файлы, владельцем которых он является.

4. Зачем в Linux были введены списки контроля доступа?

Потому что с обычными правами невозможно задать права для нескольких пользователей или групп сразу.

5. Какие базовые утилиты используются для управления ACL?

  • getfacl
  • setfacl

6. Зачем нужны ACL по умолчанию?

Для того, чтобы эти ACL автоматически устанавливались для новых созданных файлов или директорий.

7. Как понять, что для файла установлен ACL?

При вызове команды ls -l в конце прав будет символ +.

8. Чем лучше воспользоваться, когда необходимо разрешить

выполнение конкретного исполняемого файла конкретному пользователю, ACL или прописать правило в sudoers?</font>

В случае, если выполнение нужно было бы от имени root, я бы воспользовался ACL, так как, удалив файл, удалятся и привилегии. А, если мы удалили этот исполняемый файл, но sudoers не изменили, то можно создать файл и запустить его. С точки зрения пентеста.

В ином случае, лучше воспользоваться sudoers.

This post is licensed under CC BY 4.0 by the author.