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
безопасное_подключение_с_чужого_компьютера [2023/01/08 18:46]
val
безопасное_подключение_с_чужого_компьютера [2023/01/30 11:08] (current)
val
Line 1: Line 1:
 ====== Безопасное подключение с чужого компьютера ====== ====== Безопасное подключение с чужого компьютера ======
 +
 +  * [[https://​youtu.be/​BWU1_NQZgi4|SSH-туннели,​ корпоративный TeamViewer и одноразовые пароли]]
 +  * https://​habr.com/​ru/​post/​713582/​
  
 Всем привет! Всем привет!
Line 5: 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, которую мы и рассмотрим. Буду рад, если сообщество меня поправит,​ но в "​мире"​ 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.
  
 +Спасибо,​ что дочитали до конца, буду рад, если кому то пригодится!
безопасное_подключение_с_чужого_компьютера.1673192807.txt.gz · Last modified: 2023/01/08 18:46 by val