Код для lab2
This commit is contained in:
99
lab2/README.md
Normal file
99
lab2/README.md
Normal file
@@ -0,0 +1,99 @@
|
||||
# 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 часов.
|
||||
Reference in New Issue
Block a user