Показаны сообщения с ярлыком Windows Server. Показать все сообщения
Показаны сообщения с ярлыком Windows Server. Показать все сообщения

пятница, 14 января 2011 г.

SSH под Windows или как мы настроили защищенный удаленный рабочий стол. (Часть 1)

Как известно в ОС Windows никогда не было штатного SSH-сервера и очень зря, т.к. это очень полезная и интересная штучка. 
Secure SHell  — сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования.
Как раз на днях назрела проблема с удаленным доступом к внутренним серверам корпоративной сети и я решился убить время на установку SSH-сервера. Я перепробовал несколько вариантов бесплатных серверов (CopSSH, OpenSSH fo Windows, SSHD из Cygwin, KpyM SSH-ServerFreeSSHd). В силу подбора продукта под Windows, я искал простой в установке и функциональный сервер. По ряду причин таким оказался FreeSSHd.
В установке этого продукта нет ничего сложного, скачиваем дистрибутив с официального сайта и запускаем инсталляцию.
На запрос "Private keys should be created. Should I do it now?" (запрос на создание серверных RSA/DSA ключей) отвечаем да.
На запрос "Do you want run FreeSSHd as a system service?" (запрос на регистрацию FreeSSHd как системной службы) отвечаем по желанию. Если вам надо чтобы сервер запускался при старте компьютера без необходимости локального входа, то ставим да.
Далее идем Пуск->Программы->FreeSSHd->FreeSSHd либо вызываем его из системного трея. Появиться окно конфигурации, где мы перейдем на закладку SSH.


Здесь мы можем выбрать (описаны последовательно):
- на каком интерфейсе будет "висеть" сервер
- какой порт он будет "слушать"
- максимальное число подключений
- таймаут простоя сессии
- путь к файлу сообщения при  логине пользователя в систему
- путь до шелла пользователей (программа запускаемая при логине пользователя и обрабатывающая его команды)
- Флаг запуска SSH сервера при запуске службы freeSSHd
- Флаг "использование новой консоли", должен быть включен. Т.к. есть сообщения о подвисании сессии с опущенным флагом.
- Путь к RSA-ключу сервера
- Путь к DSA-ключу сервера.

Рекомендуется на данной вкладке настроить нестандартный порт,  дабы отсечь часть скриптов "little-хакеров".

Далее переходим на закладку Authentication:



Здесь мы можем изменить расположение папки публичных ключей (Public key folder), по умолчанию она указывает на папку программы, что мне не понравилось и я сменил его на подпапку с именем pub-keys.
Ну а самое главное тут можно глобально настроить методы аутентификации. Их два: парольная и публичным ключом. Каждый метод может находиться в состоянии: отключен (Disabled), разрешен (Allowed), запрашивается/обязательный (Required). На скриншоте выше показана конфигурация для аутентификации по ключу.

Далее перейдем на закладку Tunneling и разрешим использование туннелей (т.е. так называемый "проброс" портов одной машины на порты другой):



Ну и наконец нам осталось завести пользователя на сервере. Делается это на закладке Users:


Нажав на этой вкладке кнопку Add мы добавим пользователя. В появившемся окне пропишем логин, правила аутентификации, и права.
Тип аутентификации может быть:
- NT, применяем в случае использования Windows-пользователя. 
- парольная на хеше SHA-1, может быть использована в случае не желания использовать Windows-пользователей для входа.
- на публичных ключах, аналогична предыдущей. Только для входа используем ключ.

Права пользователя определяют флаги "User can use", это:
- использование шелла
- использование безопасного FTP
- использование туннелей

Ставим нужное (а для удаленного рабочего стола нам нужны права на туннели и возможно шелл, аутентификацию вберем по ключам) и нажимаем ОK->Применить->OK. После чего надо перезагрузить компьютер иначе аутентификация по ключам не будет работать (а будет выпадать ошибка "No supported authentication methods available").

Далее нам нужен SSH-клиент Pytty. Качаем пакет установщика, либо PuTTY + PuTTYgen.
Запускаем PuTTYgen:


В Parameters выставляем SSH-2 RSA и длину в 1024 бита, нажимаем Generate.


Далее активно водим мышкой по разным областям окна, т.к. на основе координат мыши генерируются случайные числа. По окончании генерации получим окно:


В этом окне в поле "Key comment" вводим имя пользователя, для которого создавали ключ (то имя которое регистрировали в FreeSSHd), это надо чтобы потом мучительно не вспоминать чей это ключ.
Далее выделаем весь текст в поле "Public key for pasting into OpenSSH..." и вставляем его в обычный текстовый файл одной строкой. Имя файла задаем обязательно совпадающее с именем пользователя FreeSSHd, а расширение (в данном случае TXT) убираем совсем. Все публичный ключ готов, но окно PuTTYgen рано закрывать.
Мы еще должны сохранить частный/приватный ключ. Для этого сначала введем кодовую фразу (любую, лишь бы запомнить) в поле "Key passphrase" и повторим ее в поле "Confirm passphrase"(это надо чтобы защитить ваш ключ, если он будет украден, то без этой фразы его применить будет нельзя). И нажмем "Save private key" сохранив под именем пользователя с расширением ppk.

Далее необходимо закачать публичный ключ на SSH-сервер, как мы помним что настраивали его на подпапку pub-key  в папке с программой. 

Все готово для коннекта. Подробности о коннекте и туннелировании RDP во второй части.



воскресенье, 9 мая 2010 г.

VirtualBox Service

Привет всем, сегодня я расскажу как заставить VirtualBox стартовать в качестве службы на Windows и корректно запускать и останавливать виртуальные машины без входа пользователя в систему.

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

Создать на диске С: (вообще можно на любом диске все это творить, просто исправьте потом пути) папки vbox\vdi и vbox\machines.

Теперь запустим VitualBox и настроим его. Файл - Настройка  там правим пути Папка для жестких дисков C:\vbox\vdi, Папка для машин C:\vbox\machines. Сохраняем, ставим обычным образом виртуальные машины или импортируем их. Закрываем VirtualBox.

Скачиваем проект http://sourceforge.net/projects/vboxvmservice/ и распаковать его файлы в папку C:\vbox\vms.

Для своей работы проект запрашивает:
- Microsoft Windows 2003 Resource Kit Tools
- Microsoft Visual C++ Runtime (version 2005 or later)
- Microsoft Dotnet Framework 2.0
поэтому их придется поставить после этого надо изменить файл конфигурации C:\vbox\vms\VBoxVmService.ini

[Settings]
ServiceName=VBoxVmService
PathToVBoxSDL=C:\Program Files\Sun\VirtualBox\VBoxSDL.exe
PathToVBoxHeadless=C:\Program Files\Sun\VirtualBox\VBoxHeadless.exe
PathToVBoxManage=C:\Program Files\Sun\VirtualBox\VBoxManage.exe
VBOX_USER_HOME=C:\WINDOWS\system32\config\systemprofile\.VirtualBox
[Vm0]
VmName=UbuntuServer
CommandLineUp=E:\vbox\vms\startup.exe 0 BRUTEFORCE
CommandLineDown=E:\vbox\vms\shutdown.exe 0
WorkingDir=E:\vbox\vms
StartupMethod=vrdp
ShutdownMethod=savestate
VrdpPort=3001

имена машин можно узнать дав в консоле команду:
"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" -list vms

Далее необходимо создать жесткую ссыдку на xml-файл с конфигурацией машин:
fsutil hardlink create "%windir%\System32\config\systemprofile\.VirtualBox\VirtualBox.xml" "%userprofile%\.VirtualBox\VirtualBox.xml"

Все, теперь ставим службу VBoxVmService:
 C:\vbox\vms\VBoxVmService.exe -i

(удалить службу можно ключом -u)

Теперь  идем в Пуск - Администрирование - Службы и ставим тип запуска нашей службы в Авто.

Собственно все. Теперь машины будут подниматься автоматом до входа пользователя.

Добавлено 11.05.2010:
При разворачивании службы на Windows 2003 стокнулся с проблемами:
1. Не удается  создать папки начинающиеся на ".", решилось копированием папки ".VirtualBox" из профиля пользователя в нужную папку, с последующей ее очисткой и созданием ссылки.
2. Служба не находила VirtualBox.xml, поэтому не могла запустить виртуальную машину. Решил созданием жесткой ссылки в "C:\Document and Settings\Default User\.VirtualBox".
3. И самое обидное VirtualBox некорректно работает на сетевых картах в тиминге.