Тестовое задание для компании Ideco Автор: Щербаков Дмитрий С использованием http://habrahabr.ru/post/111799/ http://habrahabr.ru/post/111906/ а также кучи разных материалов с 173.194.35.230
Radius сервер написан по RFC 2865 http://tools.ietf.org/html/rfc2865#page-22.
Общая схема работы Данная реализация обеспечивает только первую ступень - авторизацию. Реализована только схема PAP. При получении запроса от клиента сервер сравнивает пароль в своей SQLite базе. В случае успеха сервер отправляет ip из своей базы.
Предварительно
- Нужно поставить Python 2.7.1+ Это можно сделать различными способами. Для Ubuntu можно использовать sudo apt-get install python
- Также следует поставить необходимые модули: pyrad, sqlite3. Для Ubuntu все элементарно: sudo apt-get install python-pyrad python-sqlite
- Для запуска клиента следует установить модуль freeradius
Запуск
Переходим в директорию с исходниками. По умолчанию это /src. Запуск осуществляется командой python radius_server.py
Клиент
Переходим в директорию /client.
client.conf - файл конфигурации
client.sh - исполняемый файл. Ему необходимы права для запуска. В этом файле указана единственная команда: radclient -f client.conf -s localhost:1645 auth qq
Если рассматривать ее подробнее, то
-f client.conf указание файла конфигурации
-s - печатать результаты
localhost:1645 - адрес:порт подключения
auth - только авторизация
qq - public secret. Необходим для правильного раскодирования пароля. Должен совпадать у клиента и сервера.
Конфигурация В папке /src/conf есть файл dictionary.bak он используется для добавления в ответы сервера дщополнительных аттрибутов. Для текущей задачи этот файл пустой. Файл /src/config.py - главный файл конфигурации для всего проекта. Все настройки хранятся там. Он исполняемый, поэтому его следует редактировать внимательно.
Штатных средств для выключения сервера не предусмотрено. Он выключается только через SIGINT :-) Приятного использования.