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/30 08:15]
val
безопасное_подключение_с_чужого_компьютера [2023/01/30 10:02]
val
Line 7: 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 (One time Passwords In Everything),​ которую мы и рассмотрим. Буду рад, если сообщество меня поправит,​ но в "​мире"​ Linux дистрибутивов удалось обнаружить только пакет OTPW, требующий (опять,​ буду рад, если это не так) предварительной печати множества одноразовых паролей,​ например на бумаге. Одним из вариантов решения этой задачи является использование одноразовых паролей,​ и, в состав базового ПО FreeBSD, уже давно входит реализация пакета OPIE (One time Passwords In Everything),​ которую мы и рассмотрим. Буду рад, если сообщество меня поправит,​ но в "​мире"​ Linux дистрибутивов удалось обнаружить только пакет OTPW, требующий (опять,​ буду рад, если это не так) предварительной печати множества одноразовых паролей,​ например на бумаге.
Line 15: Line 15:
 https://​www.freebsd.org/​ru/​where/​ https://​www.freebsd.org/​ru/​where/​
  
-Установка не сильно отличается от установки ​Debian/​Ubuntu, для большинства экранов можно оставить значение по умолчанию. Здесь же можно настроить подключение к сети (для нашей задачи,​ система должна быть расположена так, что бы быть доступна "​снаружи"​ и, в свою очередь,​ иметь доступ "​внутрь"​). Сервер SSH, с необходимыми параметрами, будет запущен по умолчанию. Нюансом может показаться отсутствие sudo, поэтому,​ в процессе инсталляции надо будет задать пароль root а так же, создать учетную запись для администрирования системы (например,​ admin) включив ее в группу wheel, для которой разрешено использовать команду su. Если что-то упустили,​ всегда можно повторить,​ подключившись к консоли как root и набрав команду bsdconfig+Установка не сильно отличается от установки ​большинства binary based дистрибутивов Linux, для большинства экранов можно оставить значение по умолчанию. Здесь же можно настроить подключение к сети (для нашей задачи,​ система должна быть расположена так, что бы быть доступна "​снаружи"​ и, в свою очередь,​ иметь доступ "​внутрь"​). Сервер SSH, с необходимым ​для работы OPIE параметром ChallengeResponseAuthentication yes, будет запущен по умолчанию. Нюансом может показаться отсутствие sudo, поэтому,​ в процессе инсталляции надо будет задать пароль root а так же, создать учетную запись для администрирования системы (например,​ admin) включив ее в группу wheel, для которой разрешено использовать команду su. Если что-то упустили,​ всегда можно повторить,​ подключившись к консоли как root и набрав команду bsdconfig
  
-По окончании процесса инсталляции подключаемся учетной записью администратора и поднимаем себе привилегии ​+По окончании процесса инсталляции подключаемся учетной записью администратора и поднимаем себе привилегии:
  
 <​code>​ <​code>​
Line 31: Line 31:
 </​code>​ </​code>​
  
-Теперь,​ ближе к нашей задаче,​ во FreeBSD уже "из коробки"​ библиотека PAM для сервиса sshd поддерживает OPIE+Теперь,​ ближе к нашей задаче,​ во FreeBSD уже "из коробки"​ библиотека PAM (Pluggable Authentication Modules) ​для сервиса sshd поддерживает OPIE
 <​code>​ <​code>​
 root@bsdgate:​~ # cat /​etc/​pam.d/​sshd root@bsdgate:​~ # cat /​etc/​pam.d/​sshd
Line 38: Line 38:
 ... ...
 </​code>​ </​code>​
-Это позволяет,​ даже не задавая unix пароль,​ задать для пользователя user1 "​мастер"​ пароль для генерации одноразовых паролей ​OPIE+Это позволяет,​ даже не задавая unix пароль ​(с этой точки зрения ученая запись будет выгладить как заблокированная), задать для пользователя user1 "​мастер"​ пароль ​OPIE (в документации - "​защищенный пароль"​) который будет использоваться ​для генерации одноразовых паролей:
 <​code>​ <​code>​
 root@bsdgate:​~ # su - user1 root@bsdgate:​~ # su - user1
Line 62: Line 62:
 </​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
- 
  
 Для удобства,​ можно нажать на Enter, что позволит вводить одноразовый пароль с отображением его на экране,​ а так же не обязательно делать это в верхнем регистре:​ Для удобства,​ можно нажать на Enter, что позволит вводить одноразовый пароль с отображением его на экране,​ а так же не обязательно делать это в верхнем регистре:​
Line 79: Line 78:
 </​code>​ </​code>​
  
-Под капотом все  +Магия в том, что "мастер" ​пароль хранится ​только в "​голове"​ пользователя (ну или в программе OTPdroid на его телефоне),​ его НЕТ ​во FreeBSD!  
- ​хорошо написано в системе документации к FreeBSD - Handbook+ 
 +В системе есть такой файл: 
 + 
 +<​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 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.
  
-Спасибо,​ что дочитали до конца, буду рад, если ​попробуете ​и поделитесь мнением в комментариях!+Спасибо,​ что дочитали до конца, буду рад, если ​кому то пригодится!
безопасное_подключение_с_чужого_компьютера.txt · Last modified: 2023/01/30 11:08 by val