This is an old revision of the document!
Всем привет!
Так получилось, что знакомство с миром *NIX систем началось у меня в конце 90-х с системы FreeBSD, которая долгое время была любимой и с удовольствием использовалась для решения множества задач. Но, время шло, и приоритеты сместились в пользу Linux дистрибутивов, позволяющих “меньше нажимать на клавиши” для получения конечного результата. Однако, как “первая любовь” FreeBSD не забывается, и, сегодня я хочу рассказать об интересном и полезном варианте ее использования.
Итак, задача: Нужно подключиться SSH клиентом к “работе” с чужого компьютера и не хочется вводить пароль, “мало ли что”:) На следующей итерации можно так же подключиться по RDP или VNC добавив в настройки соединения SSH туннель, правда, пароль этих сервисов придется вводить явно, но, будем считать SSH первым “фактором” двух факторной авторизации без доступа к которому скомпрометированный пароль RDP/VNC не угрожает безопасности.
Одним из вариантов решения этой задачи является использование одноразовых паролей, и, в состав базового ПО FreeBSD, уже давно входит реализация пакета OPIE, которую мы и рассмотрим. Буду рад, если сообщество меня поправит, но в “мире” Linux дистрибутивов удалось обнаружить только пакет OTPW, требующий (опять, буду рад, если это не так) предварительной печати множества одноразовых паролей, например на бумаге.
Возвращаемся к FreeBSD, скачать свежий дистрибутив можно здесь:
https://www.freebsd.org/ru/where/
Установка не сильно отличается от установки большинства Linux дистрибутивов, для большинства экранов можно оставить значение по умолчанию. Здесь же можно настроить подключение к сети (для нашей задачи, система должна быть расположена так, что бы быть доступна “снаружи” и, в свою очередь, иметь доступ “внутрь”). Сервер SSH, с необходимыми параметрами, будет запущен по умолчанию. Нюансом может показаться отсутствие sudo, поэтому, в процессе инсталляции надо будет задать пароль root а так же, создать учетную запись для администрирования системы (например, admin) включив ее в группу wheel, для которой разрешено использовать команду su. Если что-то упустили, всегда можно повторить, подключившись к консоли как root и набрав команду bsdconfig
По окончании процесса инсталляции подключаемся учетной записью администратора и поднимаем себе привилегии
admin@bsdgate:~ $ su - Password: root@bsdgate:~ #
Cоздаем учетную запись пользователя, которым будем подключаться (команды и ключи напоминают аналогичные в Linux)
root@bsdgate:~ # pw useradd user1 -m
Теперь, нашей задаче, во FreeBSD уже “из коробки” библиотека PAM для сервиса sshd настроена на
root@bsdgate:~ # cat /etc/pam.d/sshd ... auth sufficient pam_opie.so no_warn no_fake_prompts ...
Это позволяет, даже не задавая unix пароль, задать для пользователя user1 “мастер” пароль для генерации одноразовых паролей OPIE
root@bsdgate:~ # su - user1 user1@bsdgate:~ $ opiepasswd -c -f ... Enter new secret pass phrase: Again new secret pass phrase: ID user1 OTP key is 499 bs6909 SHOD VINE REAM HAIR JUDY BUST