# Lab 2 — Authentication, Authorization & Brute Force Research Система доступа к конфиденциальным данным с управлением пользователями и исследованием стойкости паролей. ## Структура каталогов ``` $PRACTICE2_DIR/ # по умолчанию /usr/local/practice2 ├── etc/passwd # логин:sha256:id:права:ФИО ├── confdata/ # конфиденциальные файлы ├── bin/ # утилиты (usermgr, confaccess, bruteforce) └── log/ # usermgr.log, access.log ``` Базовый каталог задаётся через переменную окружения `PRACTICE2_DIR`. Если переменная не задана — используется `/usr/local/practice2`. ## Установка ```bash chmod +x setup.sh # для пути по умолчанию (/usr/local/practice2) нужен root: sudo ./setup.sh # для тестирования без root: PRACTICE2_DIR=/tmp/practice2 ./setup.sh ``` Скрипт создаёт структуру каталогов, копирует утилиты в `bin/` и выставляет права доступа. ### Добавить bin во временный PATH ```bash export PATH="/usr/local/practice2/bin:$PATH" # или для тестовой директории: export PATH="/tmp/practice2/bin:$PATH" ``` После этого утилиты доступны без полного пути: ```bash usermgr add alice confaccess bruteforce alice ``` ## Использование ### usermgr — управление пользователями ```bash usermgr add alice # добавить пользователя (интерактивный ввод) usermgr list # список пользователей usermgr edit alice --permissions rw usermgr edit alice --full-name "Иванов Иван" usermgr passwd alice # сменить пароль usermgr delete alice # удалить пользователя ``` Права: `r` — чтение, `w` — запись, `d` — удаление. Требования к паролю: первый символ — буква (A–Z, a–z), далее — буквы, цифры и `!@#$%^&*()`. ### confaccess — доступ к данным ```bash confaccess # или с явным указанием базовой директории: PRACTICE2_DIR=/tmp/practice2 confaccess ``` Режим проверки учётных данных (для bruteforce): `confaccess --check ` — читает пароли построчно из stdin, выводит 0 или 1 на каждую строку, exit 0 при первом совпадении. После аутентификации доступны команды: ``` create создать новый пустой файл в confdata [requires: w] read вывести содержимое файла [requires: r] append дописать строку в файл [requires: w] copy скопировать файл в confdata [requires: r, w] remove удалить файл из confdata [requires: d] help / exit ``` Пути к файлам указываются относительно `confdata/` (или абсолютные). Для `copy`: src — любой путь, dst — внутри confdata, перезапись запрещена. Выход — `exit` или Ctrl+C. ### bruteforce — взлом пароля ```bash bruteforce alice bruteforce alice --max-length 4 ``` Перебор выполняется через утилиту access (confaccess): bruteforce не имеет доступа к passwd-файлу и проверяет пароли только через `confaccess --check`. Алгоритм хэширования в access: **SHA-256**. Фиксируется время перебора и количество итераций до нахождения пароля. Перебор останавливается автоматически при достижении лимита 8 часов.