Администрирование Безопасность OpenSSH для Windows Thu, November 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


OpenSSH для Windows Печать
Добавил(а) microsin   

Технология SSH (Secure Shell) позволяет защитить простые протоколы ftp, telnet, создавать защищенные туннели, перенаправление сетевых портов, что существенно расширяет набор инструментов системного администратора. OpenSSH (открытый безопасный shell) — набор программ, предоставляющих шифрование сеансов связи по компьютерным сетям с использованием протокола SSH. Он был создан под руководством Тэо де Раадта как открытая альтернатива проприетарного ПО от SSH Communications Security. Далее рассмотрена установка сервера и клиента OpenSSH на платформе Windows XP.

1. Скачайте пакет сервера, это будет файл наподобие setupssh381-20040709.zip, распакуйте. Скачать можно по ссылке [1].

2. Устанавите и подтвердите умолчания во всех настройках. Установятся сервер и клиент SSH в нужное место (папка %ProgramFiles%\OpenSSH). После установки появится окно с предупреждением "Перед запуском службы OpenSSH Вы ДОЛЖНЫ отредактировать файл %ProgramFiles%\OpenSSH\etc\passwd. Если вы не сделаете этого, то не сможете залогиниться через сервер SSH. Пожалуйста, прочитайте информацию в файлах readme.txt или quickstart.txt для правильной настройки файла passwd.".

3. Выполните все указания из файла quickstart.txt. Запустите cmd в папке %ProgramFiles%\OpenSSH, перейдите в папку bin (Start -> Run... -> cmd -> cd %ProgramFiles%\OpenSSH -> cd bin).

4. Теперь нужно сделать group permissions file (файл разрешений для группы). Он может быть создан для локальных или доменных групп, для чего применяется команда mkgroup с ключом -l и -d соответственно. У меня был домашний комп, и никакого домена не было, поэтому я ввел просто:

mkgroup -l >> ..\etc\group   

После этого в папке etc появится файл group.

5. Теперь нужно в passwd file (файл паролей) добавить пользователей - либо локальных, либо доменных, для чего применяется команда mkpasswd с ключом -l и -d соответственно. Я ввел

mkpasswd -l -u Administrator >> ..\etc\passwd

Можно не указывать ключ -u и пользователя, тогда добавятся все пользователи, включая сервисные аккаунты и аккаунт Guest. Я ограничился пользователем Administrator. После этого в папке etc появится файл passwd.

6. Запустите сервер OpenSSH командой net start opensshd, или с помощью консоли управления сервисами запустите сервис по имени "OpenSSH Server". После этого приложением sshd.exe должен открыться TCP порт 22.

На этом шаге у меня была проблема - сервис не хотел запускаться в системной ошибкой "System error 1067". Попробовал найти лог, он оказался в файле %ProgramFiles%\OpenSSH\var\log\OpenSSHd.log. Там было такое сообщение:
"5 [main] ? (1940) D:\Program Files\OpenSSH\usr\sbin\sshd.exe: *** fatal error - proc magic mismatch detected - 0xEFAED2A6/0x704D1F7E. This problem is probably due to using incompatible versions of the cygwin DLL. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested if you are unable to find another cygwin DLL."

По-русски эта галиматься значит, что не подходит версия файла cygwin1.dll. Попытался найти файл cygwin1.dll, он у меня оказался в нескольких местах:

c:\Program Files\hypertunnelNT\cygwin1.dll
c:\WinAVR\bin\cygwin1.dll
D:\Program Files\OpenSSH\bin\cygwin1.dll

Самая свежая версия (1005.23.0.0) была у файла c:\WinAVR\bin\cygwin1.dll, а текущая версия файла D:\Program Files\OpenSSH\bin\cygwin1.dll была 1005.10.0.0. Попробовал для OpenSSH подменить cygwin1.dll на более новый, от WinAVR - и все заработало!

7. События успешного и неуспешного подключения клиентов пишутся в лог Application системы Windows. Записью в лог управляют ключи SyslogFacility и LogLevel в файле etc\sshd_config. Я у себя настроил эти опции так:

SyslogFacility AUTH
LogLevel VERBOSE

Поскольку хакерская активность в Интернете высока, журнал Application будет быстро заполняться, поэтому есть смысл увеличить размер лога Application (я увеличил до 5120 байт) и включить перезаписывание записей журнала по необходимости (Overwrite events as needed).

Теперь с сервером OpenSSH на Windows мы получаем следующие возможности:

- можно добраться до командной строки cmd, законнектившись под пользователем, прописанным в passwd (в моем примере Administrator). Текущий путь получаем, как прописано в переменной окружения %USERPROFILE% Windows. Под FreeBSD для этого можно воспользоваться клиентом ssh:

$ ssh Administrator@IP_или_имя_нашего_сервера_OpenSSH

- можно в Midnight Commander открыть с панели Shell Link, правда пользы от этого пока мало - у меня при подключении открылась папка bin в совсем неожиданном месте - c:\WinAVR\utils\bin\, и были доступны файлы только внутри неё.

- можно воспользоваться защищенным ftp-соединением (Secure FTP, или SFTP). Под FreeBSD для этого можно воспользоваться клиентом sftp:

$ sftp Administrator@IP_или_имя_нашего_сервера_OpenSSH

Как и в случае с cmd через утилиту ssh, текущий путь будет %USERPROFILE%, и будут доступны все файлы в текущей директории и в её подпапках. Можно подняться на уровень выше, в папку %SystemDrive%\Documents and Settings\.

Если попытаться подняться еще на уровень выше, то попадем не как ожидалось на диск %SystemDrive%, а в папку %ProgramFiles%\OpenSSH. Эта папка считается корневой, и больше никуда выше попасть нельзя. Чтобы попасть обратно в папку %USERPROFILE%, нужно ввести cd /home/Administrator.

- можно воспользоваться утилитой защищенного копирования scp. Например, под FreeBSD это будет выглядеть так:

$ scp backstore/080106archive.tar Administrator@IP_или_имя_нашего_сервера_OpenSSH:.

Это означает - скопировать файл backstore/080106archive.tar в текущий каталог (.) пользователя Administrator (напомню, что это будет папка %USERPROFILE%).

- туннелирование сетевых соединений, иногда это называют "перенаправление портов через SSH-туннель".

[Беспарольная аутентификация, основаная на public/private ключах]

Как и в примерах с ssh, sftp, утилита scp запросит пароль пользователя Administrator. Чтобы не вводить пароль, например для копирования из bat-файла, нужно сгенерировать ключи и далее их использовать. Процесс по шагам (предполагается, что сервер установлен на Windows XP SP2, там есть пользователь Administrator, а клиент используется на FreeBSD, версия ядра 6.2-RELEASE-p8, там работаем под пользователем user, имя машины host.agava.net).

1. Сгенерируйте ключи на клиенте (DSA, Digital Signature Algorithm):

$ cd ~    # переходим в домашний каталог пользователя user
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa): # тут просто нажимаем Enter
Enter passphrase (empty for no passphrase):     # тут просто нажмите Enter, пароля нет
Enter same passphrase again:                           # тут просто нажмите Enter, пароля нет
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh user@host.agava.net 

Вместо hh будут HEX-цифры хеша ключа. Для генерации ключей требуется некоторое время (в зависимости от мощности машины, у меня на это ушло около 20 секунд). После этой операции в директории .ssh появятся 2 файла - id_dsa (приватный, секретный ключ, используется для расшифровки данных) и id_dsa.pub (публичный ключ, используется для шифрования данных).

2. Скопируйте файл id_dsa.pub с клиента на сервер, в папку пользователя Administrator, в подпапку .ssh (у меня был полный путь такой - d:\Documents and Settings\Administrator\.ssh\). Переименуйте id_dsa.pub в authorized_keys. Иногда может потребоваться использовать другое имя - authorized_keys2, за деталями обращайтесь к информации в файле %ProgramFiles%\OpenSSH\docs\key_authentication.txt.

3. Откройте в текстовом редакторе файл %ProgramFiles%\OpenSSH\sshd_config, поменяйте параметр StrictModes yes на StrictModes no (см. тот же файл key_authentication.txt, ключевое слово Fix StrictModes).

4. Перезапустите сервер SSH:

net stop opensshd
net start opensshd

Попробуйте на клиенте команды scp, sftp, ssh (см. примеры выше) - под пользователем Administrator больше пароль не запрашивается!

B кaчecтвe yдoбнoгo (и бecплaтнoгo!) SSH-клиeнтa мoжнo иcпoльзoвaть putty. Eгo тoжe мoжнo иcпoльзoвaть для бeзпapoльнoй ayтeнтификaции пpи кoннeктe к SSH-серверу. Как нacтpoить, пpoцecc пo шaгaм (пpeдпoлaгaeтcя, чтo клиeнт putty paбoтaeт нa Windows XP, a сервер SSH - нa FreeBSD, вepcия ядpa 6.2-RELEASE-p8, тaм paбoтaeм пoд пoльзoвaтeлeм user, имя мaшины host.agava.net):

1. Сгенерируйте ключи нa клиeнтe (DSA, Digital Signature Algorithm), для чeгo зaпycтите пpoгpaммy puttygen.exe. Oнa идeт в пoлнoм кoмплeктe putty, и ecли y Bac пoчeмy-тo eё нeт, тo мoжнo cкaчaть на сайте [3], либо скомпилировать из исходников. После запуска puttygen.exe выберите тип ключа (я выбрал SSH-2 DSA, хотя создатели putty настоятельно рекомендуют выбирать не DSA, а RSA), разрядность ключа (я оставил по умолчанию 1024), нажмите кнопку Generate. Поелозьте мышкой по экрану - в этом процессе генерируется случайное число для ключа. Ключ сгенерируется. В поля "Key passphrase:" и "Confirm passphrase:" принципиально ничего не вводите, поскольку нам нужно от пароля избавиться. Нажмите Save public key, сохраните публичный ключ, нажмите Save private key, сохраните секретный ключ. Ключи лучше сохранить в потайное место (особенно секретный ключ), чтобы не достали враги =).

2. Теперь надо перетащить сгенерированный публичный ключ на сервер SSH. В программе puttygen.exe из окна "Public key for pasting into OpenSSH authorized keys file:" копируйте весь текст, создайте новый файл authorized_keys и этот текст вставьте туда, файл сохраните на сервер SSH, в папку .ssh (эта папка должна находиться в корне домашнего каталога пользователя user на FreeBSD). Программу puttygen.exe закройте, запустите putty.exe.

3. Настройте сессию. Все как обычно - нажмите правой кнопкой на верхней плашке окна putty, выберите "New session...", с категории Session укажите IP или имя сервера FreeBSD, протокол SSH, в окне ввода "Saved Sessions" укажите произвольное имя сессии. Перейдите в категорию Connection\Data, укажите в окне ввода "Auto-login username" имя пользователя, под которым будете логиниться. Перейдите в категорию Connection\SSH\Auth, укажите секретный ключ для аутентификации - рядом с окном "Private key file for authentication:" нажмите кнопку "Browse..." и выберите файл секретного ключа, который был сгенерирован и записан на шаге 1. Снова перейдите в категорию Session, нажмите кнопку Save.

Готово! Теперь можно нажать кнопку Open, запустится сессия, и пароль вводить уже не надо.

[Ссылки]

1. OpenSSH site:sourceforge.net.
2FreeBSD: настройка sshd - как поднять сервер SSH на FreeBSD.
3. PuTTY Download Page site:chiark.greenend.org.uk.

 

Комментарии  

 
0 #5 MyName 26.10.2010 08:19
Все ок, спасибки автору. Вот только одна задача. Подскажите, как отключить логгирование? Чтобы в журнал событий/приложения ничего не писалось.

microsin: такая фишка не предусмотрена, к сожалению.
Цитировать
 
 
0 #4 Андрей 18.08.2010 16:10
А как сделать, так чтобы home директория у конкретного пользователя была своя? Т.е. при входе на sft пользователь попадал в одну директорию, а например второй пользователь в другую.
Цитировать
 
 
+1 #3 Ezichek 30.04.2010 19:39
А есть ли скриншоты как устанавливать OpenSSH 8)

microsin: нет, зато есть секретные скриншоты, как устанавливать Windows 98.
Цитировать
 
 
+1 #2 Сергей 15.09.2009 23:19
после выполнения всего Putty просто вылетает а WinSCP пишет:
Cannot initialize SFTP protocol. Is the host running a SFTP server?

в эвент логе на сервере:
The description for Event ID ( 0 ) in Source ( sshd ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: sshd : PID 6108 : fatal: setreuid 1024: Permission denied.

microsin: к сожалению, похоже что разработчики сервера OpenSSH под Windows прекратили его поддержку. По крайней мере, новые версии не выходят, и баги не исправляются. Mail list по устранению проблем тоже закрыт, см. http://erdelynet.com/ssh-l/. Если Вам повезет, то в архивах сможете найти решение проблемы. Но лучше поставьте SSH на FreeBSD или Linux (можно это даже сделать на виртуальной машине из-под Windows). Есть также и другие продукты, предоставляющие сервис SSH под Windows (freeSSHd, copssh, WinSSHD и проч.).
Цитировать
 
 
0 #1 viktor 14.11.2008 20:50
:-* - да будем пробовать...штука интересная!
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page