Создание одноразовых паролей при помощи OPIE на FreeBSD 10.1

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: , ,

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