Доработать RADIUS сервер Freeradius для captive portal

3 000 руб. за проект
18 апреля 2024, 11:58 • 2 отклика • 14 просмотров
Это является моей дипломной работой. Данные проект почти закончен, но есть некоторые моменты, которые я не смог сделать или разобраться. Коротко, я не смог настроить работу google oauth(подключена, но работает не очень), а также настроить сессии в freeradius. Мне очень нужна помощь, просто доделать то, что я не доделал. Использую стек: freeradius, nodejs+expressjs, postgresql, html/css/js. Вот мой github https://github.com/Pavewleln/captive_portal
web - это ветка с сайтом и сервером. main - сборка для установки на чистую систему debian.
Также дам доступ к облачному серверу, где это уже настроено. Очень нужна помощь!! Буду безумно благодарен. Можно написать в тг для подробностей https://t.me/dedMefedroniy
По цене если что тоже договоримся.
Вот мое ТЗ

-------------------------------------------------------------------------------------------------------------------------------------------------

Требуется разработать комплекс Captive portal.

Комплекс состоит из WEB-интерфейса (для клиента, для
администрирования), БД для хранения данных и RADIUS-сервера для общения
с контроллером.
Комплекс работает на базе ОС Linux.
СУБД и RADIUS-сервер используем готовые, например freeradius и
mariadb.
Портал должен иметь WEB-интерфейс, с которым взаимодействует клиент
для своей идентификации.
Портал должен иметь WEB-интерфейс для администрирования.
Портал должен хранить данные идентификации клиентов в БД, схема БД и
выбор СУБД на собственное усмотрение.
Размещение WEB-портала, СУБД и RADIUS-сервера может быть как на
одной машине, так и на разных - на собственное усмотрение.

Клиентский интерфейс:

приветственное окно
выбор способа идентификации
идентификация клиента
возможность досрочно закрыть свою сессию

Способы авторизации:

заранее внесённые пары логин-пароль в БД - обязательно
OAuth-авторизация - по возможности (хотя бы через Google).

OAuth-авторизация через Госуслуги и авторизация через СМС не
обязательна. Сам процесс интеграции с Госуслугами непростой, требует
интеграции Крипто-Про (он платный). Авторизация по СМС подразумевает
взаимодействие с операторами сотовой связи, и вероятно, на платной
основе. В общем случае требуется только показать, что портал умеет
идентифицировать клиента, и что в будущем можно будет добавить и эти
способы идентификации. То есть архитектура сервиса должна быть сразу
заложена под расширение способов идентификации.
Интерфейс администрирования:

выбор доступных способов идентификации
управление парами логин-пароль
(просмотр/добавление/изменение/удаление)
просмотр активных сессий клиентов (тех, кто недавно авторизовался и
ещё имеет полный доступ в Интернет) с возможностью досрочно
деавторизовать клиента
просмотр всех сессий с фильтрами (выбор дат (от, до), выбор
идентификатора клиента) с указанием данных сессии, полученных от
контроллера
просмотр всех сохранённых сообщений о событиях портала или RADIUS -
по желанию. В этом случае требуется логирование событий в БД.
выгрузка данных в форме отчёта - по желанию (может быть в форме CSV,
XML, JSON или другой, но машиночитаемый)

Бекенд:

Бекенд портала авторизации должен обеспечивать все вышеуказанные функции
интерфейса, а также взаимодействовать с БД для обновления
идентификационных данных клиента и открытия/закрытия сессий. Бекенд
может хранить все данные настройки в той же БД. Также бекенд должен
вызвать HTTP-запрос на указанный обратный адрес контроллера.

Бекенд должен уметь обрабатывать следующие данные из HTTP-запроса
клиента:

client-ip - IP-адрес клиента
client-mac - MAC-адрес клиента
ap-ip - IP-адрес точки доступа
ap-mac - MAC-адрес точки доступа
ac-ip - IP-адрес контроллера
ac-mac - MAC-адрес контроллера
ssid - SSID сети, к которому подключен клиент
accept-callback - URL обратного вызова контроллера, на который
требуется отправить HTTP GET или POST-запрос в случае успешной
авторизации
redirect-url - исходный URL, на который шёл клиент (на него можно
сделать HTTP 302 Found в случае успешной авторизации)

RADIUS-сервер:

поддержка MAC-auth авторизации
чтение списка авторизованных клиентов и авторизация клиентов с
помощью SQL (БД)
поддержка атрибута Session-Timeout (на его основе контроллер
определяет время жизни сессии клиента)
аккаунтинг клиента - по желанию. В случае реализации - запись данных
accounting в ту же БД.
логирование запросов Access-Request - по желанию. В этом случае
логирование должно идти в ту же БД.

БД:

должна обеспечивать хранение всех данных для WEB и для RADIUS
выбор схемы базы данных на усмотрение

Установка

Полный комплекс Captive Portal должен содержать документацию по
установке. В ней должны быть описаны:

список зависимостей (например, Apache/nginx для WEB, freeradius для
RADIUS, sqlite/mysql/mariadb/postgresql/... для БД)
шаги по установке зависимостей
шаги по установке самого комплекса, в том числе регистрация в
системе в качестве сервиса (например, systemd).
разъяснение схемы БД
описание интерфейса администратора, инструкция по администрированию

В результате должно быть возможно установить комплекс на чистую
виртуальную машину (например, Debian) и подтверждение его
работоспособности. Если получится, то желательно оформить как deb-пакет,
готовый к установке.
Тестирование

Комплекс должен пройти хотя бы компонентное тестирование. Будет
тестироваться каждая часть комплекса.

RADIUS: проверка утилитой radtest, запросы Access-Request с
использованием MAC-auth. Ожидается, что RADIUS будет отвечать
Access-Accept, если запись есть в базе, и Access-Reject, если записи с
таким MAC-адресом нет.
БД: проверка вручную, что записи в БД своевременно обновляются и
хранят данные в соответствии со схемой БД.
Интерфейс администрирования: проверка вручную заявленных функций
Интерфейс клиента: HTTP-запросы от имени авторизованного клиента и
неавторизованного клиента. Для авторизованного клиента портал должен
сообщить, что сессия активна, предлагать её досрочно прервать. Для
неавторизованного клиента должен появляться интерфейс авторизации с
выбором способа. При успешной авторизации в БД должны появляться новые
записи, также должна быть попытка вызвать HTTP API контроллера
(accept-callback). Если реализовано логирование - то должны появиться
новые записи в отведённой для этого таблице.

Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Фрилансер
Отличный заказчик с понятным ТЗ
7 дней назад