User Tools

Site Tools


безопасное_подключение_с_чужого_компьютера

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
безопасное_подключение_с_чужого_компьютера [2023/01/08 18:46]
val
безопасное_подключение_с_чужого_компьютера [2023/01/30 10:02]
val
Line 1: Line 1:
 ====== Безопасное подключение с чужого компьютера ====== ====== Безопасное подключение с чужого компьютера ======
 +
 +  * [[https://​youtu.be/​BWU1_NQZgi4|SSH-туннели,​ корпоративный TeamViewer и одноразовые пароли]]
  
 Всем привет! Всем привет!
Line 5: Line 7:
 Так получилось,​ что знакомство с миром *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, которую мы и рассмотрим. Буду рад, если сообщество меня поправит,​ но в "​мире"​ Linux дистрибутивов удалось обнаружить только пакет OTPW, требующий (опять,​ буду рад, если это не так) предварительной печати множества одноразовых паролей,​ например на бумаге.+Одним из вариантов решения этой задачи является использование одноразовых паролей,​ и, в состав базового ПО FreeBSD, уже давно входит реализация пакета OPIE (One time Passwords In Everything), которую мы и рассмотрим. Буду рад, если сообщество меня поправит,​ но в "​мире"​ Linux дистрибутивов удалось обнаружить только пакет OTPW, требующий (опять,​ буду рад, если это не так) предварительной печати множества одноразовых паролей,​ например на бумаге. 
 + 
 +Возвращаемся к FreeBSD, скачать свежий дистрибутив можно здесь:​ 
 + 
 +https://​www.freebsd.org/​ru/​where/​ 
 + 
 +Установка не сильно отличается от установки большинства binary based дистрибутивов Linux, для большинства экранов можно оставить значение по умолчанию. Здесь же можно настроить подключение к сети (для нашей задачи,​ система должна быть расположена так, что бы быть доступна "​снаружи"​ и, в свою очередь,​ иметь доступ "​внутрь"​). Сервер SSH, с необходимым для работы OPIE параметром ChallengeResponseAuthentication yes, будет запущен по умолчанию. Нюансом может показаться отсутствие sudo, поэтому,​ в процессе инсталляции надо будет задать пароль root а так же, создать учетную запись для администрирования системы (например,​ admin) включив ее в группу wheel, для которой разрешено использовать команду su. Если что-то упустили,​ всегда можно повторить,​ подключившись к консоли как root и набрав команду bsdconfig 
 + 
 +По окончании процесса инсталляции подключаемся учетной записью администратора и поднимаем себе привилегии:​ 
 + 
 +<​code>​ 
 +admin@bsdgate:​~ $ su - 
 +Password: 
 +root@bsdgate:​~ #  
 +</​code>​ 
 + 
 +Cоздаем учетную запись пользователя,​ которым будем подключаться (команды и ключи напоминают аналогичные в Linux) 
 + 
 +<​code>​ 
 +root@bsdgate:​~ # pw useradd user1 -m 
 +</​code>​ 
 + 
 +Теперь,​ ближе к нашей задаче,​ во FreeBSD уже "из коробки"​ библиотека PAM (Pluggable Authentication Modules) для сервиса sshd поддерживает OPIE 
 +<​code>​ 
 +root@bsdgate:​~ # cat /​etc/​pam.d/​sshd 
 +... 
 +auth            sufficient ​     pam_opie.so ​            ​no_warn no_fake_prompts 
 +... 
 +</​code>​ 
 +Это позволяет,​ даже не задавая unix пароль (с этой точки зрения ученая запись будет выгладить как заблокированная),​ задать для пользователя user1 "​мастер"​ пароль OPIE (в документации - "​защищенный пароль"​) который будет использоваться для генерации одноразовых паролей:​ 
 +<​code>​ 
 +root@bsdgate:​~ # su - user1 
 + 
 +user1@bsdgate:​~ $ opiepasswd -c -f 
 +... 
 +Enter new secret pass phrase: opassword1 
 +Again new secret pass phrase: opassword1 
 + 
 +ID user1 OTP key is 499 bs6909 
 +SHOD VINE REAM HAIR JUDY BUST 
 +</​code>​ 
 + 
 +В результате будет сгенерирован не являющийся секретом ключ (bs6909) и, на основе этого ключа и "​мастер"​ пароля,​ одноразовый 499-й пароль (SHOD VINE REAM HAIR JUDY BUST) 
 + 
 +Однако,​ если мы попробуем подключиться этим пользователем к нашей системе по ssh, нам потребуется уже 498-й пароль 
 + 
 +<​code>​ 
 +login as: user1 
 +Keyboard-interactive authentication prompts from server: 
 +| otp-md5 498 bs6909 ext 
 +| Password: 
 +</​code>​ 
 + 
 +Получить его можно, например,​ используя телефон с Android и программы OTPdroid 
 + 
 +https://​play.google.com/​store/​apps/​details?​id=de.ub0r.android.otpdroid 
 + 
 +Для удобства,​ можно нажать на Enter, что позволит вводить одноразовый пароль с отображением его на экране,​ а так же не обязательно делать это в верхнем регистре:​ 
 + 
 +<​code>​ 
 +... 
 +| otp-md5 498 bs6909 ext 
 +| Password [echo on]: lurk flag at len hug bite 
 +End of keyboard-interactive prompts from server 
 +... 
 +Welcome to FreeBSD! 
 +... 
 +</​code>​ 
 + 
 +Магия в том, что "​мастер"​ пароль хранится только в "​голове"​ пользователя (ну или в программе OTPdroid на его телефоне),​ его НЕТ во FreeBSD!  
 + 
 +В системе есть такой файл: 
 + 
 +<​code>​ 
 +root@bsdgate:​~ # cat /​etc/​opiekeys 
 +user1 0499 bs6909 ​          ​dabea335c94a38c3 ​ Jan 30,2023 10:10:36 
 +</​code>​ 
 + 
 +и на этом этапе в нем хранится хэш 499-й итерации функции MD5 над ключом и "​мастер"​ паролем. От пользователя в этот момент потребуется 498 пароль,​ над ним произведут операцию MD5 и сравнят со значением в /​etc/​opiekeys. Если значения совпадут,​ пользователя "​пустят"​ в систему (на самом деле, успешно отработает подсистема auth библиотеки PAM :) и в /​etc/​opiekeys запишется хэш 498-го пароля:​ 
 + 
 +<​code>​ 
 +root@bsdgate:​~ # cat /​etc/​opiekeys 
 +user1 0498 bs6909 ​          ​b4b034101201c6b1 ​ Jan 30,2023 10:59:38 
 +</​code>​ 
 + 
 +а для следующего подключения потребуется уже 497-й пароль. Красиво,​ правда?​ 
 + 
 +Все это хорошо описано в системе документации к FreeBSD - Handbook
  
-Возвращаемся к FreeBSD, инсталлируем систему,​ размещаем ее на границе сети, так что бы она была доступна "​снаружи"​ и, в свою очередь,​ имела доступ "​внутрь"​ и создаем учетную запись пользователя,​ которым будем подключатьсяДополнительные меры безопасности вроде установки fail2ban или смены номера порта сервиса sshd на "​случайный" ​на Ваш "​вкус":​)+https://​docs.freebsd.org/​doc/​8.4-RELEASE/​usr/​share/​doc/​freebsd/​ru_RU.KOI8-R/​books/​handbook/​one-time-passwords.html
  
 +В заключение могу только порекомендовать поменять порт ssh сервера на какой ни будь другой и усилить в систему сервисом fail2ban.
  
 +Спасибо,​ что дочитали до конца, буду рад, если кому то пригодится!
безопасное_подключение_с_чужого_компьютера.txt · Last modified: 2023/01/30 11:08 by val