Вступление
SSH - это самый популярный способ удаленного входа на сервер. Это криптографический протокол, который защищает ваш пароль от атак «человек посередине» и повторных атак.
Однако вы должны иметь в виду, что SSH защищает ваши данные только во время их передачи. Злоумышленники могут обнаружить ваш пароль SSH другими способами, например, с помощью клавиатурных шпионов или стратегически расположенных камер.
Пока вы используете доверенный компьютер (скажем, тот, который принадлежит вам или вашей компании) и делаете это из безопасного места, вам не нужно беспокоиться о таких атаках. Однако иногда вам может понадобиться использовать общедоступный компьютер. Для защиты ваших паролей в таких сценариях FreeBSD поставляется с функцией безопасности, которая называется «Одноразовые пароли во всем» или OPIE.
Из этого руководства вы узнаете, как создавать и использовать одноразовые пароли для входа на удаленный сервер FreeBSD. Вы можете предварительно создать один или несколько одноразовых паролей, когда находитесь в безопасном месте, и сохранить их на потом, когда вы получите доступ к своему серверу из менее безопасного места. Таким образом, даже если ваш одноразовый пароль будет зарегистрирован, он никогда не будет полезен злоумышленнику.
Предпосылки
Чтобы следовать этому уроку, вам понадобится:
-
Сервер FreeBSD 10.1, доступный по SSH
-
Пользователь, которому разрешено переключаться на * root *; по умолчанию * freebsd * пользователь на DigitalOcean в порядке
Шаг 1 - Создать нового пользователя OPIE
Чтобы убедиться, что вы не заблокированы на удаленном сервере, рекомендуется создать отдельного пользователя для использования с OPIE.
Переключитесь на * root *, введя:
sudo su
Чтобы создать нового пользователя, которого вы хотите использовать со своими одноразовыми паролями, введите:
adduser
Вам будет предложено ввести различные данные о пользователе. Пусть имя пользователя будет * sammy *. При запросе пароля убедитесь, что вы ввели надежный пароль. Для всех других запросов вы можете просто нажать + ENTER +
, чтобы выбрать значение по умолчанию.
InteractiveUsername:
Full name:
Uid (Leave empty for default):
Login group [sammy]:
Login group is sammy. Invite sammy into other groups? []:
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]:
Home directory [/home/sammy]:
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:
Enter password again:
Lock out the account after creation? [no]:
Username : sammy
Password : ****
Full Name : My Test User
Uid : 1001
Class :
Groups : sammy
Home : /home/sammy
Shell : /usr/local/bin/zsh
Locked : no
OK? (yes/no):
adduser: INFO: Successfully added (sammy) to the user database.
Add another user? (yes/no):
Goodbye!
Введите + yes
, чтобы подтвердить детали, и когда вас спросят, хотите ли вы добавить другого пользователя, введите` + no + для выхода из
+ adduser`.
Теперь вы можете вернуться к исходному пользователю, либо пользователю по умолчанию * freebsd *, либо обычному пользователю sudo:
exit
На этом этапе вы должны войти на свой сервер с пользователем не-OPIE sudo.
Шаг 2 - Войдите в систему как новый пользователь OPIE
Используя ваш текущий сеанс терминала, используйте + ssh +
, чтобы войти в систему как * sammy *, пользователь OPIE.
ssh @localhost
Это важно, поскольку настройку OPIE можно выполнять только с защищенного терминала. Если вы используете небезопасный протокол, такой как + rsh +
или + telnet +
, OPIE будет жаловаться.
Шаг 3 - Включить OPIE для нового пользователя
Предупреждение
Чтобы добавить пользователя в систему аутентификации OPIE, вы используете команду + opiepasswd +
. Опция + -c +
сообщает команде, что вы используете доверенный компьютер и находитесь в безопасном месте.
opiepasswd -c
Когда вас попросят ввести секретную фразу-пароль, введите фразу-пароль длиной не менее десяти символов. Эта парольная фраза не должна совпадать с паролем SSH пользователя. Эта парольная фраза понадобится вам позже для генерации одноразовых паролей.
Полный вывод команды будет выглядеть так:
InteractiveAdding sammy:
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:
Again new secret pass phrase:
Вы получите новое OPIE seed и рандомизированную парольную фразу:
OutputID OTP key is 499
В этом выводе * sammy * - это пользователь, * 499 * - это iteration count, а * si5509 * - это seed.
Теперь, когда * sammy * был добавлен в систему аутентификации OPIE, вы больше не можете использовать реальный пароль SSH для входа в систему. Откройте новый терминал на вашем локальном компьютере и введите:
ssh sammy@
Вы увидите приглашение, которое выглядит так:
Promptotp-md5 498 zi5509 ext
Password:
Теперь вы должны ввести одноразовый пароль. Поскольку мы еще не сгенерировали одноразовых паролей, сейчас вы не сможете войти в систему. Закройте терминал и вернитесь к предыдущему терминалу, где вы вошли как * sammy *.
Шаг 4 - Создайте одноразовый пароль
Когда пользователь добавляется в систему аутентификации OPIE, число итераций, начиная с 499, и случайное начальное число ассоциируются с пользователем. Вам необходимо знать эти значения для генерации одноразового пароля.
Предупреждение
Если вы уже вошли как * sammy *, которым вы должны быть на данный момент, вы можете определить эти значения с помощью команды + opieinfo +
.
opieinfo
Его вывод будет содержать два значения. Первый - это порядковый номер, а второй - начальное число.
Output498 zi5509
Примечание метка
Передайте эти значения команде + opiekey +
, чтобы сгенерировать свой одноразовый пароль. Помните, точно так же, как + opiepasswd +
, + opiekey +
также следует запускать только с доверенного компьютера.
opiekey
Кроме того, вы можете ввести:
opiekey `opieinfo`
Вам будет предложено ввести пароль для пользователя OPIE. Введите пароль, который вы выбрали на предыдущем шаге. Вывод этой команды следующий:
InteractiveUsing the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
Последняя строка, содержащая шесть коротких слов, - ваш одноразовый пароль.
Откройте новый терминал, чтобы попытаться войти снова:
ssh sammy@
Ваша подсказка останется прежней:
Promptotp-md5 ext
Password:
Обратите внимание, что числа, которые вы видите в этом приглашении, соответствуют выводу + opieinfo +
и параметрам, которые вы передали + opiekey +
.
Теперь вы можете вставить свою фразу-пароль или ввести ее вручную. Прежде чем начать вводить длинный пароль, чтобы избежать ошибок, нажмите + ENTER
. Ваше приглашение изменится, и вы сможете увидеть введенный вами пароль:
Promptotp-md5 498 zi5509 ext
Password [echo on]:
Введите свой одноразовый пароль сейчас, и вы сможете войти на свой сервер как * sammy *.
Чтобы завершить сессию SSH, наберите + exit +
или закройте терминал.
Откройте другой терминал и попробуйте установить новое соединение:
ssh sammy@
На этот раз подсказка будет немного другой.
Promptotp-md5 zi5509 ext
Password:
Как видите, порядковый номер изменился; он был уменьшен на единицу. Вы не сможете войти снова, пока не создадите новый одноразовый пароль, используя + opiekey +
с этими новыми значениями. Другими словами, вам придется заново пройти процесс, описанный в * Шаг 4 * этого руководства.
Шаг 5 - Создание нескольких одноразовых паролей
Если вы знаете, что не сможете получить доступ к доверенному компьютеру в течение нескольких дней, вам может потребоваться несколько одноразовых паролей, чтобы вы могли обращаться к своему серверу несколько раз. Вы можете указать желаемое количество одноразовых паролей, запустив + opiekey +
с опцией + -n +
. Например, чтобы сгенерировать три одноразовых пароля, введите:
opiekey `opieinfo`
Note
Вывод будет содержать три пароля, а также их порядковые номера:
InteractiveUsing the MD5 algorithm to compute response.
Reminder: Do not use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
Одноразовые пароли также могут быть сгенерированы в форме шестнадцатеричных чисел с помощью опции + -x +
:
opiekey -n 3 `opieinfo`
Конечно, пароли теперь будут выглядеть менее понятными:
InteractiveUsing the MD5 algorithm to compute response.
Reminder: Do not use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
Теперь вы должны записать их на бумаге и носить с собой во время путешествия. В следующий раз, когда вам нужно будет войти в систему, используйте бумагу, чтобы найти пароль, связанный с порядковым номером, показанным в приглашении SSH, и введите его. После того, как вы использовали пароль, вы можете удалить его. Излишне говорить, что вы должны убедиться, что этот документ не попадет в чужие руки.
Когда вы использовали все пароли на бумаге, просто повторите этот шаг еще раз, чтобы сгенерировать больше паролей. Однако, если вы используете все 498 паролей и ваш порядковый номер станет нулевым, вам придется снова вызвать + opiepasswd -c +
. Это сбрасывает случайное начальное число и порядковый номер.
Заключение
В реальной ситуации вы должны заранее подготовить необходимое количество паролей из безопасного места, записать их на бумаге и использовать их по одному, когда вам необходимо войти из небезопасного места. Храните бумагу в безопасности!
Из этого руководства вы узнали, как использовать систему аутентификации OPIE для безопасного входа на удаленный сервер FreeBSD с терминалов на ненадежных компьютерах. Вы узнали, как создавать одноразовые пароли и использовать их каждый раз, когда вам нужно войти в систему. Эта функция наиболее полезна для людей, которые постоянно находятся в движении и вынуждены использовать общедоступные компьютеры и сети.