Задача - cоздать возможность безопасного входа с системы Windows XP/w2k (используя комплект утилит сетевого администрирования putty) на удалённую *nix систему (например FreeBSD), где запущен sshd, с использованием двухфакторной аутентификации (т. е. посредством private\open ключей и парольной фразы). Сервер - хост FreeBSD, клиент – w2XP. Далее расписан процесс по шагам.
[На клиенте (Windows XP)]
1. Создаём закрытый (private) ключ, используя утилиту puttygen.exe с параметрами SSH2 RSA, bits key 1024:
2. При создании ключа по возможности вводим длиную и плохопредсказуемую парольную фразу. Записываем её на бумажке, чтобы не забыть (почти шутка =).
3. Сохраняем private key в формате putty *.ppk (по умолчанию). Этот ключ впоследствии будет использоваться ssh-клиентом putty.exe при подключении к серверу. Файл private-ключа должен лежать на файловой системе клиента в надежном месте, желательно в папке NTFS, куда заданы права доступа только для человека, непосредственно использующего ключ.
4. В окне программы puttygen.exe будет в текстовом виде отображен public rsa ключ, который будет перенесён на сервер. Перенос можно сделать по несекретному каналу (copy/paste в telnet, по email, в виде файла на флешке).
[На сервере (FreeBSD)]
5. Создаем пользователя в системе командой adduser (для примера – user2). Проверяем вход пользователя в систему локально (например, войдя в другую консоль). Пароль пользователя может быть любым, он никак не связан с секретной фразой, введенной на шаге 2.
6. Интегрируем public rsa key в профиль пользователя. Для начала проверяем наличие в "домашней директории" каталога .ssh, и если его нет, то создаём командой mkdir /home/user2/.ssh.
7. В папке .ssh создаем файл authorized_keys с содержимым открытого ключа, текст которого мы получили на шаге 4. Создать файл можно командой touch, либо просто переименовать тот файл, который мы пенесли с клиента на флешке (для примера). Весь текст ключа, вместе с заголовком протокола (в данном примере ssh-rsa), должен быть на одной текстовой строке (строка завершается символом конца строки, шестнадцатеричное значение 0x0A). В общем случае файл authorized_keys может содержать несколько публичных ключей, по одному на одной строке.
8. Активируем на сервере демон sshd. Для этого редактируем в файле /etc/rc.conf добавляем строку sshd_enable="YES".
9. Далее правим файл /etc/ssh/sshd_config. Настраиваем sshd на двухфакторную аутентификацию при входе. Добавляем следующие опции (строки):
#разрешить заходить по ssh только пользователю user2 AllowUsers user2
#аутентификация по "public key" PubkeyAuthentication yes
#указываем местонахождение файла открытого ключа AuthorizedKeysFile .ssh/authorized_keys
#отключение парольной аутентифакации при входе ssh, # то есть включение только двухфакторной аутентификации UsePAM no
10. Для надежности перезагружаем сервер. Настройка закончена.
В заключение привожу настройку клиента putty.exe на использование приватного ключа, полученного на шаге 3.
При коннекте сервер запросит секретную фразу, которую мы вводили на шаге 2:
[Ссылки]
1. Применение putty для Windows. 2. OpenSSH для Windows. 3. FreeBSD: настройка sshd. 4. pscp: как передавать файлы по протоколу ssh. |