putty и sshd: двухфакторная аутентификация |
![]() |
Добавил(а) Гусев Александр |
Задача - 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 #аутентификация по "public key" #указываем местонахождение файла открытого ключа #отключение парольной аутентифакации при входе ssh, 10. Для надежности перезагружаем сервер. Настройка закончена. В заключение привожу настройку клиента putty.exe на использование приватного ключа, полученного на шаге 3. При коннекте сервер запросит секретную фразу, которую мы вводили на шаге 2: [Ссылки] 1. Применение putty для Windows. |