Как создать сервер Radius с поддержкой аутентификации PEAP на C#

Я хочу создать сервер радиуса, поддерживающий PEAP (тип 25 - PEAP с EAP-TLS). У меня достаточно информации и я знаю все о пакетах Radius и формате пакетов PEAP (радиус RFC 2865). Единственная сложная часть моего проекта - это сообщение TLS. внутри пакета EAP. согласно RFC 2246 (TLS 1.0) мне нужны некоторые инструменты, которые помогут мне создать фазу 1 протокола PEAP. в фазе 1 PEAP устанавливается канал TLS (внутри пакета радиуса и внутри атрибута сообщения EAP — UDP). другие данные на этапе 2 отправляются через этот канал tls. поскольку PEAP выполняется в 2 этапа, этап 1 является моей основной проблемой, нижеприведенные инструменты мне не помогли:

1- Класс System.Net.Security.SslStream. (это работает через TCP, тогда как радиус работает через UDP).

2- безопасные классы Blackbox DTLS. (это DLL высокого уровня и не позволяет мне изменять данные до процесса рукопожатия TLS. Редактирование данных, полученных от клиента, до любого процесса протокола TLS необходимо, потому что полученные данные представляют собой пакет радиуса. Во-первых, я должен извлечь сообщение TLS от него. затем отправьте его как прокси. но классы secureBlackBox не позволяют мне изменять данные.)

3- Проект FreeRadius (www.freeradius.org). Этот проект написан на языке C, и мне трудно преобразовать его в C#.

не могли бы вы помочь мне установить канал TLS в моем пакете радиуса? заранее спасибо за ваше время и внимание.


person user3193726    schedule 14.01.2014    source источник
comment
Вы всегда можете использовать вызов платформы для вызова libeap FreeRADIUS :)   -  person Arran Cudbard-Bell    schedule 15.01.2014


Ответы (2)


Существует библиотека .NET, которую вы можете скачать бесплатно под названием nRadius. Однако я не использовал его, я использовал только freeradius через PInvoke.

http://nradius.nw-network.com/web/?page_id=19 http://www.heise.de/download/nradius-1156905.html

person Jon Barker    schedule 27.03.2014

Я разрабатываю радиус-сервер с использованием С#. Я не думаю, что класс sslstream с dotnet будет работать. Если вы не разрабатываете BIO в качестве интерпретатора и не используете класс sslstream, радиус с peap работает под eap. Просто данные уровня записи зашифрованы, нужно выполнить все процедуры подтверждения связи и шифрование/дешифрование.

Я не уверен насчет dtls, но, вероятно, тоже не работает, потому что позже вам понадобятся некоторые данные из процесса рукопожатия для вычисления ключа mppe и т. д.

person YanXi    schedule 12.01.2018