This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
безопасное_подключение_с_чужого_компьютера [2023/01/30 08:59] val |
безопасное_подключение_с_чужого_компьютера [2023/01/30 11:08] val |
||
---|---|---|---|
Line 2: | Line 2: | ||
* [[https://youtu.be/BWU1_NQZgi4|SSH-туннели, корпоративный TeamViewer и одноразовые пароли]] | * [[https://youtu.be/BWU1_NQZgi4|SSH-туннели, корпоративный TeamViewer и одноразовые пароли]] | ||
+ | * https://habr.com/ru/post/713582/ | ||
Всем привет! | Всем привет! | ||
Line 7: | Line 8: | ||
Так получилось, что знакомство с миром *NIX систем началось у меня в конце 90-х с системы FreeBSD, которая долгое время была любимой и с удовольствием использовалась для решения множества задач. Но, время шло, и приоритеты сместились в пользу Linux дистрибутивов, позволяющих "меньше нажимать на клавиши" для получения конечного результата. Однако, как "первая любовь" FreeBSD не забывается, и, сегодня я хочу рассказать об интересном и полезном варианте ее использования. | Так получилось, что знакомство с миром *NIX систем началось у меня в конце 90-х с системы FreeBSD, которая долгое время была любимой и с удовольствием использовалась для решения множества задач. Но, время шло, и приоритеты сместились в пользу Linux дистрибутивов, позволяющих "меньше нажимать на клавиши" для получения конечного результата. Однако, как "первая любовь" FreeBSD не забывается, и, сегодня я хочу рассказать об интересном и полезном варианте ее использования. | ||
- | Итак, задача: Нужно подключиться SSH клиентом к "работе" с чужого компьютера и не хочется вводить пароль, "мало ли что":) На следующей итерации можно так же подключиться по RDP или VNC добавив в настройки соединения SSH туннель, правда, пароль этих сервисов придется вводить явно, но, будем считать SSH первым "фактором" двух факторной авторизации без доступа к которому скомпрометированный пароль RDP/VNC не угрожает безопасности. | + | Итак, задача: Нужно подключиться SSH клиентом к "работе" с "чужого" компьютера и не хочется вводить пароль, "мало ли что":) На следующей итерации можно так же подключиться по RDP или VNC добавив в настройки соединения SSH туннель, правда, пароль от этих сервисов придется вводить явно, но, будем считать SSH первым "фактором" двух факторной авторизации без доступа к которому скомпрометированный пароль RDP/VNC не угрожает безопасности. |
Одним из вариантов решения этой задачи является использование одноразовых паролей, и, в состав базового ПО FreeBSD, уже давно входит реализация пакета OPIE (One time Passwords In Everything), которую мы и рассмотрим. Буду рад, если сообщество меня поправит, но в "мире" Linux дистрибутивов удалось обнаружить только пакет OTPW, требующий (опять, буду рад, если это не так) предварительной печати множества одноразовых паролей, например на бумаге. | Одним из вариантов решения этой задачи является использование одноразовых паролей, и, в состав базового ПО FreeBSD, уже давно входит реализация пакета OPIE (One time Passwords In Everything), которую мы и рассмотрим. Буду рад, если сообщество меня поправит, но в "мире" Linux дистрибутивов удалось обнаружить только пакет OTPW, требующий (опять, буду рад, если это не так) предварительной печати множества одноразовых паролей, например на бумаге. | ||
Line 15: | Line 16: | ||
https://www.freebsd.org/ru/where/ | https://www.freebsd.org/ru/where/ | ||
- | Установка не сильно отличается от установки Debian/Ubuntu, для большинства экранов можно оставить значение по умолчанию. Здесь же можно настроить подключение к сети (для нашей задачи, система должна быть расположена так, что бы быть доступна "снаружи" и, в свою очередь, иметь доступ "внутрь"). Сервер SSH, с необходимым для работы OPIE параметром ChallengeResponseAuthentication yes, будет запущен по умолчанию. Нюансом может показаться отсутствие sudo, поэтому, в процессе инсталляции надо будет задать пароль root а так же, создать учетную запись для администрирования системы (например, admin) включив ее в группу wheel, для которой разрешено использовать команду su. Если что-то упустили, всегда можно повторить, подключившись к консоли как root и набрав команду bsdconfig | + | Установка не сильно отличается от установки большинства binary based дистрибутивов Linux, для большинства экранов можно оставить значение по умолчанию. Здесь же можно настроить подключение к сети (для нашей задачи, система должна быть расположена так, что бы быть доступна "снаружи" и, в свою очередь, иметь доступ "внутрь"). Сервер SSH, с необходимым для работы OPIE параметром ChallengeResponseAuthentication yes, будет запущен по умолчанию. Нюансом может показаться отсутствие sudo, поэтому, в процессе инсталляции надо будет задать пароль root а так же, создать учетную запись для администрирования системы (например, admin) включив ее в группу wheel, для которой разрешено использовать команду su. Если что-то упустили, всегда можно повторить, подключившись к консоли как root и набрав команду bsdconfig |
- | По окончании процесса инсталляции подключаемся учетной записью администратора и поднимаем себе привилегии | + | По окончании процесса инсталляции подключаемся учетной записью администратора и поднимаем себе привилегии: |
<code> | <code> | ||
Line 38: | Line 39: | ||
... | ... | ||
</code> | </code> | ||
- | Это позволяет, даже не задавая unix пароль, задать для пользователя user1 "мастер" пароль (в документации - "защищенный пароль") для генерации одноразовых паролей OPIE | + | Это позволяет, даже не задавая unix пароль (с этой точки зрения ученая запись будет выгладить как заблокированная), задать для пользователя user1 "мастер" пароль OPIE (в документации - "защищенный пароль") который будет использоваться для генерации одноразовых паролей: |
<code> | <code> | ||
root@bsdgate:~ # su - user1 | root@bsdgate:~ # su - user1 | ||
Line 62: | Line 63: | ||
</code> | </code> | ||
- | Получить его можно, например, используя телефон с Android в программе OTPdroid | + | Получить его можно, например, используя телефон с Android и программы OTPdroid |
https://play.google.com/store/apps/details?id=de.ub0r.android.otpdroid | https://play.google.com/store/apps/details?id=de.ub0r.android.otpdroid | ||
Line 78: | Line 79: | ||
</code> | </code> | ||
- | Магия в том, что "мастер" пароль хранится только в голове пользователя (ну или в программе OTPdroid на его телефоне), его НЕТ во FreeBSD! В системе есть такой файл: | + | Магия в том, что "мастер" пароль хранится только в "голове" пользователя (ну или в программе OTPdroid на его телефоне), его НЕТ во FreeBSD! |
+ | |||
+ | В системе есть такой файл: | ||
<code> | <code> | ||
Line 85: | Line 88: | ||
</code> | </code> | ||
- | и на этом этапе в нем хранится хэш 499-й итерации функции MD5 над ключом и "мастер" паролем. От пользователя в этот момент потребуется 498 пароль, над ним произведут операцию MD5 и сравнят со значением в /etc/opiekeys. Если значения совпадут, пользователя "пустят" в систему (на самом деле, успешно отработает подсистема auth библиотеки PAM) | + | и на этом этапе в нем хранится хэш 499-й итерации функции MD5 над ключом и "мастер" паролем. От пользователя в этот момент потребуется 498 пароль, над ним произведут операцию MD5 и сравнят со значением в /etc/opiekeys. Если значения совпадут, пользователя "пустят" в систему (на самом деле, успешно отработает подсистема auth библиотеки PAM :) и в /etc/opiekeys запишется хэш 498-го пароля: |
+ | <code> | ||
root@bsdgate:~ # cat /etc/opiekeys | root@bsdgate:~ # cat /etc/opiekeys | ||
user1 0498 bs6909 b4b034101201c6b1 Jan 30,2023 10:59:38 | user1 0498 bs6909 b4b034101201c6b1 Jan 30,2023 10:59:38 | ||
</code> | </code> | ||
- | и хорошо написано в системе документации к FreeBSD - Handbook | + | а для следующего подключения потребуется уже 497-й пароль. Красиво, правда? |
+ | |||
+ | Все это хорошо описано в системе документации к FreeBSD - Handbook | ||
https://docs.freebsd.org/doc/8.4-RELEASE/usr/share/doc/freebsd/ru_RU.KOI8-R/books/handbook/one-time-passwords.html | https://docs.freebsd.org/doc/8.4-RELEASE/usr/share/doc/freebsd/ru_RU.KOI8-R/books/handbook/one-time-passwords.html | ||
- | В заключение могу порекомендовать поменять порт ssh сервера на какой ни будь другой и усилить в систему сервисом fail2ban. | + | В заключение могу только порекомендовать поменять порт ssh сервера на какой ни будь другой и усилить в систему сервисом fail2ban. |
- | Спасибо, что дочитали до конца, буду рад, если попробуете и поделитесь мнением в комментариях! | + | Спасибо, что дочитали до конца, буду рад, если кому то пригодится! |