Лабораторная работа №14. Документирование проекта
|
|
hai 1 mes | |
|---|---|---|
| README.md | hai 1 mes |
---
Настоящий документ является руководством пользователя системы CLiPE (Centralized Linux Policy Engine) — централизованной системы контроля доступа на основе политик и правил для Linux-хостов.
Документ предназначен для администраторов и инженеров по безопасности, осуществляющих развёртывание, настройку и эксплуатацию системы CLiPE.
---
---
CLiPE применяется в инфраструктурах на базе Linux для централизованного управления доступом к сервисам и ресурсам хостов. Система обеспечивает принятие решений об аутентификации и авторизации на основе политик и правил, определённых администратором.
Типичные сценарии применения:
CLiPE предоставляет следующие возможности:
pam\_clipe.so (C++), встраиваемая в PAM-таблицы Linux-хостов.ALLOW / DENY) при отсутствии явной политики.syslog (/var/log/auth.log).Пользователь (администратор) должен обладать следующими знаниями и навыками:
bash, ssh, scp, openssl.При эксплуатации системы CLiPE следует руководствоваться:
README.md в репозитории проекта: https://github.com/ccrayp/CLiPE---
CLiPE (Centralized Linux Policy Engine) — система централизованного контроля доступа для Linux-хостов. Предназначена для организаций, которым требуется единая точка управления политиками доступа к Linux-инфраструктуре.
Архитектура системы состоит из трёх компонентов:
CLiPE Server — центральный сервер с двумя независимыми HTTP-серверами:
ALLOW / DENY.Admin Panel — веб-панель администратора, взаимодействующая с CRUD Server.
PAM Module (pam\_clipe.so) — библиотека, устанавливаемая на целевые Linux-хосты и обращающаяся к Decision Server при каждой попытке доступа.
Минимальные требования к среде:
|Компонент|Требования| |-|-| |ОС сервера|Ubuntu 24.04 (AMD64 / ARM64) или совместимая| |ОС хоста интеграции|Ubuntu 24.04 или совместимая Linux-система с PAM| |Docker|Установлен на сервере| |Сеть|TCP-доступ от хостов интеграции до сервера CLiPE| |SSL|Сертификат сервера, подписанный центром сертификации|
---
Исходный код и дистрибутив системы размещены в репозитории: https://github.com/ccrayp/CLiPE
Структура репозитория:
CLiPE/
├── server/ # Исходный код сервера (Go + Gin) и Makefile для запуска
├── pam\_module/ # Исходный код PAM-модуля (C++)
├── integration/ # Готовая библиотека pam\_clipe.so и скрипты установки
├── ssl/ # Директория для хранения SSL-сертификатов
├── documentation/ # Дополнительная документация
├── images/ # Изображения для документации
└── README.md # Основная документация проекта
Директория integration/ содержит:
pam\_clipe.so (для Ubuntu 24.04 ARM64).install, refresh, uninstall).Makefile с целями для вызова скриптов.[ ] 3.2.1. Получение исходного кода
git clone https://github.com/ccrayp/CLiPE.git
cd CLiPE
[ ] 3.2.2. Настройка SSL-сертификатов
Если у вас нет готового сертификата, выполните следующие шаги.
Шаг 1. Создание локального центра сертификации (CA):
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes \\
-key ca.key \\
-sha256 \\
-days 3650 \\
-out ca.crt
Шаг 2. Создание серверного приватного ключа:
openssl genrsa -out server.key 2048
Шаг 3. Создание запроса на выпуск сертификата (CSR):
openssl req -new -key server.key -out server.csr
Шаг 4. Подписание серверного сертификата:
openssl x509 -req \\
-in server.csr \\
-CA ca.crt \\
-CAkey ca.key \\
-CAcreateserial \\
-out server.crt \\
-days 365 \\
-sha256 \\
-extfile server.ext
Полученные файлы ca.crt, server.crt, server.key разместите в директории ssl/.
Создайте файл .env в директории server/ на основе примера.
**Важно:** Замените значение
JWT\_SECRET\_KEY,INSTALLER\_TOKEN,DECISION\_TOKENна уникальные секретные ключи перед развёртыванием.
Убедитесь, что Docker установлен:
sudo apt install docker -y
Перейдите в папку server/ и выполните сборку и запуск:
cd server/
make build
Шаг 1. Скопируйте сертификат CA в папку integration/:
cp ssl/ca.crt ./integration/
Шаг 2. Укажите адрес сервера CLiPE в конфигурационном файле модуля (параметр URL), например:
http://access.manager
Шаг 3. Скопируйте папку integration/ на целевой Linux-хост:
scp -r ./integration user\_name@host\_name:\~/path/to/directory
Готовая библиотека
pam\_clipe.soдля Ubuntu 24.04 ARM64 уже находится в папке/integration. Сборка требуется только при использовании другой архитектуры или ОС.
Установите зависимости на целевом хосте:
sudo apt install -y \\
cmake \\
g++ \\
libpam0g-dev \\
nlohmann-json3-dev \\
libcurl4-openssl-dev
Выполните сборку из директории pam\_module/:
cmake -S . -B build
cmake --build build
cp build/lib/pam\_clipe.so ../integration
На целевом хосте перейдите в скопированную папку integration/ и выполните:
sudo make install
Команда install выполняет:
pam\_clipe.so в системную директорию PAM.
1. Проверка работы сервера CLiPE:
Убедитесь, что контейнеры запущены:
docker ps
Проверьте доступность Decision Server:
curl http://<адрес\_сервера>/api/v1/decide/health
Проверьте доступность CRUD Server:
curl http://<адрес\_сервера>/api/v1/decide/health
2. Проверка работы PAM-модуля:
Добавьте pam\_clipe.so в PAM-таблицу common-account (или таблицу конкретного сервиса):
account required pam\_clipe.so
Попробуйте выполнить вход через SSH или другой PAM-совместимый сервис. Проверьте логи:
sudo tail -f /var/log/auth.log
При успешной работе в логах должны появляться записи с решением ALLOW или DENY.
---
Управление осуществляется через веб-панель администратора (CRUD Server) или напрямую через скрипты Makefile на хостах интеграции.
Синхронизация пользователей хоста:
sudo make refresh

Команда refresh синхронизирует пользователей: удаляет из системы несуществующих и регистрирует новых.
Политики и правила доступа создаются и редактируются через панель администратора CLiPE.
Логика принятия решений:
DEFAULT\_DECISION из конфигурации сервера.Для активации контроля доступа через CLiPE укажите библиотеку в PAM-таблице нужного сервиса или в общей таблице (common-account):
account required pam\_clipe.so

Для включения отладочного режима добавьте аргумент debug:
account required pam\_clipe.so debug

Для удаления модуля выполните:
sudo make uninstall

**Важно:** Если
pam\_clipe.soещё используется в PAM-таблицах, удаление будет прервано с соответствующей ошибкой. Сначала удалите запись из всех PAM-таблиц.
Все события доступа записываются в syslog. Для просмотра:
sudo tail -f /var/log/auth.log
Примеры записей в релизном режиме:
ALLOW.
В отладочном режиме дополнительно выводится подробная информация о запросе и ответе сервера. 
---
Симптом: PAM-модуль не может подключиться к серверу; вход на хосты заблокирован (если DEFAULT\_DECISION=false) или разрешён (если DEFAULT\_DECISION=true).
Действия:
docker ps.make logs-<container\_name>.curl http://<адрес\_сервера>.server/ и выполните make build.Симптом: Ни один пользователь не может войти в систему.
Действия:
pam\_clipe.so из PAM-таблицы, войдя через консоль (не SSH).make uninstallСимптом: Удаление прервано с сообщением об использовании pam\_clipe.so.
Действия:
pam\_clipe.so: grep -r "pam\_clipe" /etc/pam.d/.sudo make uninstall.Симптом: PAM-модуль логирует ошибки соединения, связанные с сертификатами.
Действия:
ca.crt находится в директории integration/ на хосте.server.crt).---
DEFAULT\_DECISION=true на этапе освоения. Это гарантирует, что пользователи не потеряют доступ при отсутствии политик.Включите отладочный режим PAM-модуля при первоначальной настройке для диагностики:
account required pam\_clipe.so debug
Регулярно синхронизируйте пользователей командой sudo make refresh после изменений в /etc/passwd.
Следите за логами /var/log/auth.log при первом подключении хостов к системе.
Изучите структуру REST API через встроенный инструмент тестирования Hoppscotch или аналогичный (Postman, curl) для понимания логики политик и правил.
Не храните JWT\_SECRET\_KEY и пароли БД в репозитории. Используйте переменные окружения или секрет-менеджер.
---
|Термин / Сокращение|Расшифровка и описание|
|-|-|
|CLiPE|Centralized Linux Policy Engine — централизованный движок политик для Linux|
|PAM|Pluggable Authentication Modules — подключаемые модули аутентификации Linux|
|REST API|Representational State Transfer API — архитектурный стиль взаимодействия компонентов|
|JWT|JSON Web Token — стандарт токенов для аутентификации|
|SSL/TLS|Secure Sockets Layer / Transport Layer Security — протоколы шифрования соединения|
|CA|Certificate Authority — центр сертификации|
|ALLOW|Разрешение доступа — положительное решение сервера|
|DENY|Запрет доступа — отрицательное решение сервера|
|Docker|Платформа контейнеризации приложений|
|Go (Golang)|Язык программирования, использованный для реализации сервера|
|Gin|Веб-фреймворк для Go|
|PostgreSQL|Реляционная СУБД, используемая для хранения данных CLiPE|
|CMake|Кроссплатформенная система сборки|
|syslog|Стандартная служба системного журналирования Linux|
|/var/log/auth.log|Файл системного журнала аутентификации Linux|
|Decision Server|Компонент CLiPE, обрабатывающий запросы на доступ|
|CRUD Server|Компонент CLiPE, предоставляющий API управления объектами|
|pam\_clipe.so|Динамическая библиотека PAM-модуля CLiPE|
---
---
|№|Дата|Раздел|Описание изменения|Автор| |-|-|-|-|-| |1|2026-05-17|Все разделы|Первоначальное создание документа|Roman Mikhaylov| |2|2026-05-17|2, 3.2.3, 3.3, 4.2, 5.1|Актуализация данных|Roman Mikhaylov| |3|2026-05-17|3.2.7, 4.1, 4.3, 4.4, 4.5|Добавление скриншотов|Roman Mikhaylov| |4|2026-05-17|3|Добавление чек-боксов|Roman Mikhaylov| |5|2026-05-17|8|Создание рездела контактов для связи|Roman Mikhaylov|