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/30 06:41]
val
безопасное_подключение_с_чужого_компьютера [2023/01/30 11:08] (current)
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, которую мы и рассмотрим. Буду рад, если сообщество меня поправит,​ но в "​мире"​ Linux дистрибутивов удалось обнаружить только пакет OTPW, требующий (опять,​ буду рад, если это не так) предварительной печати множества одноразовых паролей,​ например на бумаге.+Одним из вариантов решения этой задачи является использование одноразовых паролей,​ и, в состав базового ПО FreeBSD, уже давно входит реализация пакета OPIE (One time Passwords In Everything), которую мы и рассмотрим. Буду рад, если сообщество меня поправит,​ но в "​мире"​ Linux дистрибутивов удалось обнаружить только пакет OTPW, требующий (опять,​ буду рад, если это не так) предварительной печати множества одноразовых паролей,​ например на бумаге.
  
 Возвращаемся к FreeBSD, скачать свежий дистрибутив можно здесь: Возвращаемся к FreeBSD, скачать свежий дистрибутив можно здесь:
Line 15: Line 16:
 https://​www.freebsd.org/​ru/​where/​ https://​www.freebsd.org/​ru/​where/​
  
-Установка не сильно отличается от установки большинства ​Linux дистрибутивов,​ для большинства экранов можно оставить значение по умолчанию. Здесь же можно настроить подключение к сети (для нашей задачи,​ система должна быть расположена так, что бы быть доступна "​снаружи"​ и, в свою очередь,​ иметь доступ "​внутрь"​). Сервер SSH, с необходимыми параметрами, будет запущен по умолчанию. Нюансом может показаться отсутствие sudo, поэтому,​ в процессе инсталляции надо будет задать пароль root а так же, создать учетную запись для администрирования системы (например,​ admin) ​и включить ее в группу wheel, для которой разрешено использовать команду su. Если что-то упустили,​ всегда можно повторить,​ подключившись к консоли как root и набрав команду bsdconfig+Установка не сильно отличается от установки большинства ​binary based дистрибутивов ​Linux, для большинства экранов можно оставить значение по умолчанию. Здесь же можно настроить подключение к сети (для нашей задачи,​ система должна быть расположена так, что бы быть доступна "​снаружи"​ и, в свою очередь,​ иметь доступ "​внутрь"​). Сервер SSH, с необходимым ​для работы OPIE параметром ChallengeResponseAuthentication yes, будет запущен по умолчанию. Нюансом может показаться отсутствие sudo, поэтому,​ в процессе инсталляции надо будет задать пароль root а так же, создать учетную запись для администрирования системы (например,​ admin) включив ее в группу wheel, для которой разрешено использовать команду su. Если что-то упустили,​ всегда можно повторить,​ подключившись к консоли как root и набрав команду bsdconfig
  
-По окончании процесса инсталляции подключаемся учетной записью администратора и поднимаем себе привилегии ​+По окончании процесса инсталляции подключаемся учетной записью администратора и поднимаем себе привилегии:
  
 +<​code>​
 admin@bsdgate:​~ $ su - admin@bsdgate:​~ $ su -
 Password: Password:
 root@bsdgate:​~ #  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
 +
 +https://​docs.freebsd.org/​doc/​8.4-RELEASE/​usr/​share/​doc/​freebsd/​ru_RU.KOI8-R/​books/​handbook/​one-time-passwords.html
 +
 +В заключение могу только порекомендовать поменять порт ssh сервера на какой ни будь другой и усилить в систему сервисом fail2ban.
 +
 +Спасибо,​ что дочитали до конца, буду рад, если кому то пригодится!
безопасное_подключение_с_чужого_компьютера.1675050108.txt.gz · Last modified: 2023/01/30 06:41 by val