Лабораторная работа №14. Документирование проекта
|
|
1 month ago | |
|---|---|---|
| README.md | 1 month ago |
Настоящий документ является руководством пользователя системы CLiPE (Centralized Linux Policy Engine) — централизованной системы контроля доступа на основе политик и правил для Linux-хостов.
make uninstallCLiPE применяется в инфраструктурах на базе 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/CLiPECLiPE (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 |