zabika.ru 1 2

Лабораторная работа №2

Настройка аутентификации, авторизации и учёта VPN пользователей и соединение PPTP сервера POPTOP, посредством RADIUS сервера FreeRADIUS, с применение модуля rlm_sql

Цель работы


Установка и конфигурирование RADIUS сервера FreeRADIUS и сервера БД PostgreSQL под операционной системой Linux. Конфигурирование PPTP сервера POPTOP. Тестирование работы VPN клиентов под операционными системами Linux и Windows.

Теоретические сведения


Произведём определение терминов употребляемых в данной лабораторной работе:

Идентификация (лат. identifico – отождествлять): в философии – установление тождественности неизвестного объекта известному на основании совпадения признаков, опознание; в компьютерной безопасности – процесс сообщения субъектом своего имени или номера, с целью отличить данный субъект от других субъектов (например, одна из типичных систем идентификации – штрих-код); под идентификацией также иногда понимается аутентификация – процесс подтверждения подлинности пользователя; идентификация в психологии – вид психологической защиты.

Аутентификация (англ. Authentication) или идентификация, подтверждение подлинности – проверка соответствия субъекта и того, за кого он пытается себя выдать, с помощью некой уникальной информации (отпечатки пальцев, радужной оболочки глаз, голос и т. д.), в простейшем случае – с помощью имени (логина, от англ. login) и пароля. Процесс аутентификации основан на предположении о том, что пользователи имеют уникальные описывающие их данные и критерии доступа к ресурсам системы.

Авторизация (англ. Authorization) – процесс, а также результат процесса проверки необходимых параметров и предоставление определённых полномочий лицу или группе лиц на выполнение некоторых действий в различных системах с ограниченным доступом. Обычно процесс авторизации связан с процессом аутентификации (аутентифицированные пользователь авторизируется на разный тип доступа и возможные действия).

Учёт/Аккаунтинг (англ. Accounting) – процесс учета используемого сервиса. Данные учёта в дальнейшем обычно используются для получения статистики использования ресурса, начисления платы, построения прогнозов и так далее.


ААА – система позволяющая производить аутентификацию, авторизацию и учёт.

На данное время существует множество систем позволяющих производить аутентификацию, авторизацию и учёт. Они различаются: целевыми платформами, средствами реализации, возможностями масштабирования и наращивания, конкретными особенностями и так далее.

Центром всех этих систем аутентификации авторизации и учёта является не что иное, как протокол, посредством которого и решаются возлагаемые на эти системы задачи. В целом существующие протоколы можно разделить на две группы:


  1. те которые реализуют все составляющие аутентификации авторизации и учёта (TACACS, XTACACS, TACACS+, RADIUS DIAMETER);

  2. те которые реализуют часть этих составляющих, обычно только аутентификацию, или аутентификацию и авторизацию (ISAKMP/IKE (аутентификация), SASL (аутентификация), PolicyMarker (аутентификация и авторизация), KeyNote2 (аутентификация и авторизация)).

Для реализации систем ААА применяется первая группа протоколов.

Семейство протоколов TACACS (Terminal Access Controller Access Control System) в последнее время поддерживается компанией Cisco, онако в силу того что протокол контролируется конкретной организацией он не приобрёл популярности и применяется только в решениях которые строятся на базе оборудования этой компании.

Протокол RADIUS (Remote Authentication Dial In User Service) является клиент-серверным протоколом аутентификации, авторизации и учёта. Клиентом выступает NAS (Network Access Server) который производит запросы на аутентификацию своих клиентов. Сервер имеет доступ к данным с пользовательской информацией аутентификации. Данный протокол был разработан Livingston Enterprises приблизительно в 1989 и в дальнейшем поддерживался Мичигановским Университетом (Merit). В 1997 в IETF были внесены следующие RFC: Remote Access Dial In User Service (RADIUS) [RFC2138]; RADIUS Accounting [RFC2139]. Протокол поддерживается и используется многими производителями терминальных серверов, такими как Cisco, Ascend, Livingston и другими.


Протокол DIAMETER (DIAMETER = 2*RADIUS) предполагается использоваться для обеспечения политики безопасности, AAA и контроля ресурсов. Данный протокол позиционируется как замена более старому протоколу RADIUS, который до этого уже был широко распространён, с возможностью его полной эмуляции. Описание формата сообщений и транспорта используемого всеми расширениями или реализациями DIAMETER содержаться в RFC3588 и RFC4005. Расширение DIAMETER это расширение на базе описанного протокола для специальных сервисов или задач используемые DIAMETER как транспортного механизма.

Сводные характеристик данных протоколов:

Таблица 2.1 – Характеристики протокола TACACS+

Название

Значение

Транспортный протокол

TCP

Обмен сообщениями

запрос/ответ от клиента к серверу

Последовательная (hop-by-hop) безопасность

шифруется всё сообщение общим секретным ключом

Сквозная (end-to-end) безопасность

нет

Размер сообщения

заголовок (12 байт) + Nатрибута(1..N) * атрибут (8..255 байт)

Общее количество различных атрибутов

256

Возможность перенаправления запроса

нет


Таблица 2.2 – Характеристики протокола RADIUS

Название


Значение

Транспортный протокол

UDP

Обмен сообщениями

запрос/ответ от клиента к серверу

Последовательная (hop-by-hop) безопасность

шифруется только пароль общим секретным ключом

Сквозная (end-to-end) безопасность

нет

Размер сообщения

заголовок (12 байт) + Nатрибута(0..N) * атрибут (3..255 байт)

Общее количество различных атрибутов

256

Возможность перенаправления запроса

есть


Таблица 2.3 – Характеристики протокола DIAMETER

Название

Значение

Транспортный протокол

UDP или TCP

Обмен сообщениями

запрос/ответ от клиента к серверу, сообщения от сервера клиенту

Последовательная (hop-by-hop) безопасность

шифруется всё сообщение общим секретным ключом, не шифруется при использовании шифрования на IP уровне

Сквозная (end-to-end) безопасность

есть

Размер сообщения

заголовок (12 байт) + NAVP(0..N) * AVP (12..65400 байт)


Общее количество различных атрибутов

65535

Возможность перенаправления запроса

есть


Так как протокол RADIUS является базовым и, на данный момент, наиболее распространённым, то рассмотрим структуру его пакета и виды запросов и ответов протокола.

Данные между клиентом и сервером передаются посредством RADIUS пакета. Один RADIUS пакет инкапсулируется в UDP пакет. Каждый пакет содержит информацию, приведённую на следующем рисунке:


где Code – содержит код RADIUS команды/ответа;

Indentifier – используется для сопоставления запроса и ответа не него;

Length – длина пакет;

Authenticator – используется для аутентификации ответа от RADIUS сервера, а также используется в алгоритме сокрытия пароля;

Attributes – данные принадлежащие пакетам запроса и ответа, главной задачей атрибутов RADIUS является транспортировка информации между клиентами, серверами и прочими агентами RADIUS, некоторые атрибуты могут включатся больше чем один раз, это зависит от специфики атрибута.

Длина списка атрибутов определяется длиной RADIUS пакета.

Общий формата атрибута предоставлен на следующем рисунке:

где Type – текущие значение данного поля приводятся в последних FRC, которые относятся к протоколу RADIUS. Значения 192-223 зарезервированы для экспериментального использования, значения 223-240 зарезервированы для реализационно-специфического использования, и значения 241-255 зарезервированы и не должны использоваться. Как RADIUS сервер так и RADIUS клиент могут игнорировать атрибуты неизвестного типа;


Length – длина атрибута, включается поля Type, Length и Value;

Value – значение атрибута, данное поле может быть нулевой или большей длины и содержит информацию специфичную для данного атрибута, формат и длина данного поля определяется полями Type и Length.

Поле Value может быль следующих форматов:

string – 0-253 октета (восьмиразрядного байта), причём не обязательно окончание строки 0ом (ASCII NUL) так как известна длина атрибута;

address – 32х битное значение;

integer – 32х битное значение;

time – 32х битное значение, количество секунд от 00:00:00 GMT 1го января 1970го года, стандартные атрибуты не используют данный тип, он существует для предоставления возможности его использовать в атрибутах определяемых фирмой-поставщиком.

Стандартные типы атрибутов (User-Name, User-Password и так далее) и их форматы деятельно описаны в соответствующих RFC.
Взаимодействие посредством RADIUS использует парадигму запрос-ответ, запрос формируется клиентом и посылается серверу, ответ формируется сервером и посылается клиенту. Возможные следующие пары запрос-ответ:


  1. access-request, (client->server), запрос доступа пользователю к некоторому сервису. Возможные ответы на этот запрос:

    1. access-accept, (server->client), позитивный ответ на запрос access-request от клиента;

    2. access-reject, (server->client), негативный ответ на запрос access-request от клиента;

    3. access-challenge, (server->client), ответ на запрос access-reuquest, когда сервер ожидает некоторого дополнительного ответа от клиента на запрос access-request;

  2. accounting request, (client->server), запрос на сохранение учётной информации. Ответ на этот запрос:

    1. accounting response, (server->client), ответ клиенту в случае успешного сохранения учётной информации на сервере.

Типовой порядок доступа пользователя к сети посредством сетевого сервера доступа и дальнейшим отключением приведён следующем ниже рисунке:






Для защиты сообщений клиент и сервер RADIUS обладают "общим секретом" (Shared Secret) или, проще говоря, ключом. При этом речь, как правило, идет о цепочке символов, имеющейся как на серверах, так и на клиентах RADIUS.
В данной лабораторной работе в качестве RADIUS сервера будем использовать GPL сервер FreeRADIUS, который является высоко производительным и хорошо конфигурируемым решением. Благодаря его стабильности на данный момент он применяется в многих разработках которые обеспечивают работу миллионов пользователей.
Кратко рассмотрим рассмотрим как сервер FreeRADIUS обрабатывает запросы аутентификации, авторизации и учёта. Обычно запрос аутентификации полученный от NAS к FreeRADIUS обрабатывается в 2а этапа: авторизация и аутентификация. В случае сервера FreeRADIUS авторизации – это процесс получения информации о пользователе из внешних источников (файл, БД или LDAP), и проверка того что информации в запросе достаточно для авторизации пользователя. Авторизационные модули взаимодействуют с источниками данных, следовательно ldap, sql, файлы, passwd являются авторизационными модулями. Метод посредством которого будет происходить аутентификация выбирается на протяжении авторизационного этапа. Это позволяет строить гибкие политики аутентификации и авторизации, например запретить пользователю использовать некоторые методы аутентификации. Аутентификация – это процесс сравнения пользовательских параметров доступа в запросе с параметрами доступа хранимыми во внешних источнике данных сервера FreeRADIUS (файл, БД, LDAP и так далее).

На протяжении процесса авторизации и аутентификации FreeRADIUS поддерживает 3и списка RADIUS атрибутов: элементы запроса, конфигурационные элементы и элементы ответа. Атрибуты из аутентификационного RADIUS пакета включаются в список элементов запроса. Модули авторизации и аутентификации могут добавлять атрибуты в список элементов ответа, данных атрибуты будут добавлены в ответный пакет RADIUS сервера NAS. Список конфигурационных элементов используется для внутренних операций сервера FreeRADIUS, например для передачи некоторых данных от модуля авторизации модулю аутентификации (пароль пользователя).

Как было сказано выше, сервер FreeRADIUS имеет модульную архитектуру, что предоставляет удобный механизм для добавления необходимой функциональности. Так например для работы с внешним источником данных в виде серверами БД используется соответствующий модуль (rlm_sql), который позволяет взаимодействовать с различными БД, такими например как db2, oracle, sybase, mysql, postgresql и др. В свою очередь взаимодействие RADIUS сервера с сервером БД позволяет удобно управлять данными авторизации, аутентификации и учёта.

В качестве сервера БД будем использовать сервер PostgreSQL, который является развитой объектно реляционной системой управления базами данных поддерживающей расширенное подмножества стандарта SQL, включая транзакции, внешние ключи, подзапросы, триггеры, пользовательские типы и функции.



следующая страница >>