100 lines
3.8 KiB
Markdown
100 lines
3.8 KiB
Markdown
# 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
|
||
```
|
||
|
||
После аутентификации доступны команды:
|
||
|
||
```
|
||
create <file> создать новый пустой файл в confdata [requires: w]
|
||
read <file> вывести содержимое файла [requires: r]
|
||
append <file> <text> дописать строку в файл [requires: w]
|
||
copy <src> <dst> скопировать файл в confdata [requires: r, w]
|
||
remove <file> удалить файл из confdata [requires: d]
|
||
help / exit
|
||
```
|
||
|
||
Пути к файлам указываются относительно `confdata/` (или абсолютные).
|
||
Для `copy`: src — любой путь, dst — внутри confdata, перезапись запрещена.
|
||
Выход — `exit` или Ctrl+C.
|
||
|
||
### bruteforce — взлом пароля
|
||
|
||
```bash
|
||
bruteforce alice
|
||
bruteforce alice --max-length 4
|
||
```
|
||
|
||
Алгоритм хэширования: **SHA-256**.
|
||
Перебор выполняется напрямую по хэшу из passwd-файла.
|
||
Фиксируется время перебора и количество итераций до нахождения пароля.
|
||
Перебор останавливается автоматически при достижении лимита 8 часов.
|