Создание одноразовых паролей при помощи OPIE на FreeBSD 10.1
FreeBSD, SSH | Комментировать запись
SSH – самый распространённый способ получения удалённого доступа к серверу. SSH – это криптографический протокол, защищающий пароль от атак перехвата и повторного воспроизведения.
Однако следует помнить, что SSH защищает данные только во время передачи. Злоумышленник может получить пароль и другими способами (например, при помощи кейлоггеров).
При работе с машиной, которой можно доверять (т.е. она принадлежит вам, вашей компании, и т.д.), не стоит опасаться таких атак. Однако пароль может быть перехвачен при использовании общественного компьютера.
Чтобы защитить данные в таких случаях, система FreeBSD поставляется со специальной функцией безопасности, которая называется OPIE (One-time Passwords In Everything).
Данное руководство научит создавать и использовать такие одноразовые пароли для подключения к удалённому серверу FreeBSD. OPIE позволяет предварительно создать несколько одноразовых паролей и сохранить их для дальнейшего использования в ненадёжном окружении. Таким образом, даже если пароль будет перехвачен, злоумышленник не сможет воспользоваться им.
Требования
- Сервер FreeBSD 10.1 с доступом SSH.
- Пользователь с привилегиями root.
1: Создание пользователя OPIE
Из соображений безопасности рекомендуется сначала создать отдельного пользователя для OPIE.
Откройте сессию root:
sudo su
Чтобы создать нового пользователя для подключения при помощи одноразовых паролей, введите:
adduser
Программа запросит подробную информацию о пользователе (в руководстве пользователя зовут 8host). Установите надёжный пароль, остальные настройки можно оставить по умолчанию (для этого нажмите ENTER).
Interactive
Username: 8host
Full name: 8host Blog
Uid (Leave empty for default):
Login group [8host]:
Login group is 8host. Invite 8host into other groups? []:
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]:
Home directory [/home/8host]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password: password
Enter password again: password
Lock out the account after creation? [no]:
Username : 8host
Password : ****
Full Name : My Test User
Uid : 1001
Class :
Groups : 8host
Home : /home/8host
Shell : /usr/local/bin/zsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (8host) to the user database.
Add another user? (yes/no): no
Goodbye!
Введите yes для подтверждения. Чтобы закрыть adduser, введите no.
Теперь можно вернуться в сессию обычного пользователя.
exit
2: Сессия пользователя OPIE
В текущей терминальной сессии используйте ssh, чтобы войти как пользователь 8host.
ssh 8host@localhost
Это важно, поскольку настройка OPIE должна происходить в безопасном терминале. Имейте в виду: OPIE будет жаловаться на использование небезопасных протоколов (как rsh или telnet).
3: Включение OPIE
Примечание: Пользователь с включённой функцией OPIE не сможет использовать обычные пароли! Потому рекомендуется оставить в системе минимум одного пользователя без OPIE. В данном руководстве стандартный пользователь freebsd будет защищён аутентификацией на основе обычного пароля.
Чтобы добавить пользователя в систему одноразовых паролей OPIE, введите команду opiepasswd. Флаг -c сообщает команде, что вы используете машину, которой можно доверять.
opiepasswd -c
Программ предложит установить секретный пароль. Он должен быть уникальным состоять из 10 символов минимум. Позже он понадобится для создания одноразовых паролей.
Вывод команды выглядит так:
Interactive
Adding 8host:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase: 8host's secret pass phrase
Again new secret pass phrase: 8host's secret pass phrase
После этого OPIE выдаст новый seed и хэшированную парольную фразу.
ID 8host OTP key is 499 si5509
RITE NERO BASS SOFA BEND TO
Где 8host – пользователь, 499 – количество итераций, si5509 – seed.
Теперь новый пользователь добавлен в систему аутентификации OPIE; больше он не может использовать для входа обычный пароль SSH. На локальном компьютере откройте новый терминал и введите:
ssh 8host@your_server_ip
Вы увидите подобное извещение:
Prompt
otp-md5 498 zi5509 ext
Password:
Теперь нужно ввести одноразовый пароль, но поскольку таких паролей пока что нет, вы не сможете войти. Закройте терминал и вернитесь в сессию 8host.
4: Создание одноразового пароля
После добавления пользователя в систему аутентификации OPIE ему присваивается счётчик итераций со стартовым значением 499 и произвольным значением seed. Эти данные нужны для генерирования одноразового пароля.
Внимание! Генерировать одноразовые пароли нужно только в надёжном окружении.
Итак, на данный момент текущим пользователем является 8host. Все данные для генерирования пароля можно получить при помощи:
opieinfo
Вывод команды содержит два значения: первое – порядковый номер, второе – seed.
498 zi5509
Примечание: Если текущий пользователь не добавлен в систему OPIE, команда вернёт ошибку:
freebsd not found in database.
В таком случае нужно открыть новое терминальное окно и попробовать войти как пользователь OPIE. При запросе пароля вам будут предоставлены все необходимые данные. Скопируйте и используйте их в предыдущем окне терминала.
Передайте полученные данные команде opiekey, которая сгенерирует одноразовый пароль на их основе.
opiekey 498 zi5509
Также можно использовать:
opiekey `opieinfo`
Команда запросит парольную фразу пользователя OPIE. Затем она вернёт следующий результат:
Interactive
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: 8host's secret pass phrase
PER POE TURF LITE ZONE BART
Последняя строка, содержащая шесть коротких слов, – и есть одноразовый пароль.
Откройте новый терминал и попробуйте войти снова:
ssh 8host@your_server_ip
Prompt
otp-md5 498 zi5509 ext
Password:
Обратите внимание: числа в извещении совпадают с выводом команды opieinfo и параметрами opiekey.
Теперь можно вставить полученный одноразовый пароль или ввести его вручную. Прежде чем начать вводить длинный пароль, нажмите ENTER, чтобы избежать ошибок. Строка изменится, и вы сможете видеть вводимые символы:
Prompt
otp-md5 498 zi5509 ext
Password [echo on]:
После этого вы должны получить доступ к сессии 8host.
Чтобы завершить эту сессию, введите exit или просто закройте терминал.
Откройте новый терминал и попробуйте установить новое подключение:
ssh 8host@your_server_ip
Теперь строка будет иметь несколько иной вид:
Prompt
otp-md5 497 zi5509 ext
Password:
Как видите, порядковый номер уменьшается на единицу. Вы не сможете войти снова, пока не создадите новый одноразовый пароль, используя opiekey с новыми параметрами. Другими словами, чтобы получить доступ, придется постоянно повторять описанный выше процесс.
5: Предварительное генерирование одноразовых паролей
Если безопасная машина не всегда доступна, можно создать несколько одноразовых паролей наперёд. Количество одноразовых паролей в команде opiekey задаётся при помощи флага –n. К примеру, чтобы создать три одноразовых пароля, нужно ввести:
opiekey -n 3 `opieinfo`
Команда выведет на экран три пароля и их порядковые номера:
Interactive
Using the MD5 algorithm to compute response.
Reminder: Do not use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: 8host's secret pass phrase
495: BEAM BOW TOO CAVE BOWL AUK
496: HIVE KITE HUGE SANG VAT FOAM
497: THIN ALL BUT NIL SUP BALE
При помощи опции –x одноразовые пароли можно создавать в виде шестнадцатеричных чисел.
opiekey -x -n 3 `opieinfo`
Конечно, такие пароли менее понятны:
Interactive
Using the MD5 algorithm to compute response.
Reminder: Do not use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: 8host's secret pass phrase
495: 5484 C106 B214 B801
496: 98F1 E6CF 7F54 3108
497: 6010 2C11 192A EDAC
Теперь нужно выписать эти пароли или сохранить их в заметки телефона. Они должны быть под рукой. Входя в систему в следующий раз, нужно найти пароль, связанный с запрашиваемым порядковым номером, и ввести его. После использования пароля его можно вычеркнуть или удалить. Конечно, излишне напоминать, что список одноразовых паролей необходимо хранить от посторонних глаз.
Использовав все предварительно созданные пароли в списке, можно просто повторить инструкции данного раздела, чтобы создать новый список. Если счётчик паролей показывает 0, значит, вы использовали все 498 паролей. После этого нужно снова запустить:
opiepasswd -c
Эта команда обновит seed и счётчик.
Заключение
Рекомендуется заранее подготовить соответствующее количество одноразовых паролей в безопасном окружении, выписать и использовать их при работе на общественном компьютере. Храните этот список в безопасности!
Tags: FreeBSD 10.1, OPIE, SSH