Pull to refresh

Удалённый доступ между компьютерами на базе ОС Windows с использованием RSA-алгоритма аутентификации

Reading time 2 min
Views 4.7K
В этом посте я решил поделиться реализацией дополнительной аутентификации пользователя, при доступе к компьютеру через удалённый рабочий стол на базе ОС Windows, с использованием RSA-алгоритма

Задача


Обеспечить доступ к удалённому компьютеру только определенным пользователям.

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

И тогда предложил ему аутентификацию с помощью асимметричного алгоритма.

Читать

Идея


Необходимы:
1. Генератор открытого ключа (ОК) и секретного ключа (СК);
2. Серверная часть, которая будет запускаться при прохождении windows-аутентификации, и ждать от пользователя СК;
3. Пользовательская часть — отправляет к серверной части СК.

Реализация


Этап первый

Организовали VPN-соединение для работы под терминалом.

Этап второй — настройка удалённого компьютера

1. Устанавливаем серверную часть;
2. Генерируем ОК и СК;
3. Запрещаем редактирование, чтение файла для всех, кроме пользователя, под которым запускается серверная часть;
4. В настройках пользователей при работе через удалённый рабочий стол указываем, что серверную часть нужно сразу запускать при входе пользователя:


Расскажу подробнее о серверной части, точнее что происходит после ее запуска.
В первую очередь — блокировка движений мышки и игнорирование нажатий кнопок на клавиатуре. Пользователь на своём компьютере спокойно может работать, но в терминале удалённый компьютер игнорирует действия пользователя до тех пор, пока пользователь не отправит ему правильный СК. Тайм-аут стоит 3-5 минуты. Если за это время СК не был отправлен — сервер завершает сеанс удалённого рабочего стола.
Если СК — правильный — пользователю предоставляется доступ.

Этап третий — настройка пользовательского компьютера

1. Устанавливаем клиентскую часть;
2. Настраиваем удалённый рабочий стол;
3. Копируем на съемный носитель СК.

Как это всё работает


Пользователь открывает сеанс удаленного рабочего стола и проходит windows-аутентификацию:


После этого, сервер сразу запускает нашу серверную часть и блокирует любые действия, отправляет клиенту массив случайных байтов (открытый текст), запускается таймер 3-5 минут.

Пользователь запускает свою часть, указывает секретный ключ с помощью которого происходит шифрование ОТ и отправка результата шифрования серверу.
Сервер, с помощью ОК, расшифровывает шифрт-текст и сравнивает с ОТ.

Если ключ подходит или не подходит, пользователю эта информация выдается на экран. В данном случае СК подошёл и пользователь может работать на удалённом компьютере.


Характеристики


  • Длинна ключа: 128 байт
  • Использование для использования любого порта
  • Возможности вести логи


Где можно применить

Можно ограничить доступ к своему компьютеру или, как в данной ситуации, между офисами в разных местах.

Исходники выложу вечером.

UPD: Читая комментарии, Хабрачитателю может стало не понятно зачем всё так было сделать. Сделаю небольшое отступление:
Верно было сказано, что можно реализовать с помощью разных технологий, но основная проблема, даже требование, которое было выдвинуто — быстрота развёртывание на новой машине и предоставление доступа определенному пользователю, а не компьютеру. Да, настроить доступ по IP — можно, но человеческий фактор будет присутствовать. В моём случае тоже — но тут сводится к потере/передаче СК третьему лицу
Tags:
Hubs:
+3
Comments 37
Comments Comments 37

Articles