Предисловие

Ниже перевод английской статьи,
опубликованной несколько дней назад на
сайте SecurityFocus. По моему довольно интересна
по ряду причин: 1) Управляя в терминальном
режиме серверами и рабочими станциями я (почему-то
🙂 никогда не задумывался о возможности
перехвата информации; 2) Статья описывает
ряд инструментов и процессов, интересных
каждому интересующемуся безопасностью,
особенно начинающим. Несогласные идут
лесом и пишут свои варианты 🙂

За дело

Один из вопросов, стоящих перед
администратором Windows сети - как безопасно
управлять удаленными компьютерами? В мире
Linux все решает SSH, этого протокола вполне
достаточно для решения такой  задачи. Благодаря SSH мы не
только можем управлять удаленной станцией
в текстовом терминальном режиме, но и при помощи
туннелирования запустить X-Window и рулить
компьютером уже через него - в графике. И все это,
заметьте, с мощным шифрование, которое
защищает информацию от посторонних глаз.

К сожалению в Windows безопасное управление
не столь элементарно. Почему? Во-первых только
NT Terminal Server, 2000 Server и XP поставляются с
терминальными службами. Во-вторых
программы для удаленного управления для
Windows вообще не шифруют передаваемые данные
или шифруют, но в таком случае стоят как
паровоз.

В предлагаемом мной решении этой проблемы
мы будем пользоваться следующим софтом:

  • VNC - Virtual Network Computing, программа для
    удаленного управления Windows системой. В
    нашем случае VNC будет ядром всего решения.
  • Stunnel - утилита, создающая SSL "туннели"
    для передачи зашифрованных данных. В
    нашем случае она будет прокладывать
    дорогу для протокола VNC.
  • OpenSSL - библиотека с криптографическими
    функциями, при помощи нее можно управлять
    открытыми ключами (генерировать, подписывать.
    отзывать), в нашем случае именно это и
    надо для клиента и сервера. 

Привожу концепцию работы всей системы:

Устанавливаем 

VNC

Качаем отсюда: http://www.uk.research.att.com/vnc/,
устанавливаем на машину, откуда будем
рулить, сервер. Регистрируем (Register VNC Server Service)
и ребутимся, после чего настраиваем
параметры. Главное: задать правильный
пароль и отключить опцию Enable Java Viewer.

Далее грузим клиент и устанавливаем на управляемую
машину. Нужно проверить, могут ли клиент и
сервер соединиться в принципе и продолжить
конфигурацию. Так как VNC сервер по идее
должен иметь связь только с локально
установленной Stunnel, надо добавить в реестр
следующий ключ:

Key: HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3
Name: LoopbackOnly
Type: REG_DWORD
Value: 1

Это позволит только локальному
компьютеру (127.0.0.1) получить доступ к 5900 TCP
порту и оградит VNC от доступа из локальной
сети. Для того, что бы изменения вступили в
силу надо рестартовать сервис.

Stunnel

Следующий шаг - установка утилиты на
клиент и сервер. Качать тут: http://www.stunnel.org/download/binaries.html,
необходимо скачать библиотеки libeay32.dll,
libssl32.dll и положить их в каталог программы.

OpenSSL

Библиотека поставляется в большинстве
Linux'овых дистрибутивов, наверное в основном
из-за того, что библиотека требуется для
работы OpenSSH. Но существует b версия OpenSSL
портированная под MS Windows. Бинарник OpenSSL (openssl.exe)
можно скачать с сайта Stunnel, в каталог
программы нужно доложить те же либы, что и в
предыдущем случае. Дополнительно нужен
конфигурационный файл openssl.conf
и батник ca.bat
для генерирования ключей.

Ключи и сертификаты

Авторитет по сертификатам 🙂  

Начать следует с создания приватного\публичного
ключей и сертификата для третьей стороны,
Certification Authority. Приватный ключ далее будет
использоваться для удостоверения
сертификатов клиента и сервера VNC.
Сертификаn СА будет размещен на всех
серверах и клиентах. Так как приватный ключ
- один из основных элементов системы, его
надо хранить в сухом и прохладном месте, генерировать лучше со сложным паролем. Для
генерации ключей и сертификатов надо
сделать примерно следующее:

C:\progra~1\OpenSSL\ca genca

после этого сертификат можно будет найти в
файле C:\CA\CAcert.pem file, а ключи оставят в
C:\CA\private\CAkey.

VNC сервер

C:\progra~1\OpenSSL\ca server

Результат смотрим в C:\CA\temp\vnc_server:

  • server.key - пара ключей
  • server.crt - серверный сертифика
  • server.pem - server.key + server.crt

VNC клиент

C:\progra~1\OpenSSL\ca client

Подбираем:

  • client.key
  • client.crt
  • client.pem

(Продолжение следует)

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии