Настройка SSH аутентификации по ключам в Windows 10 / 2019 | Windows для системных администраторов

Настройка SSH аутентификации по ключам в Windows 10 / 2019 | Windows для системных администраторов Сертификаты
Содержание
  1. Что дальше
  2. Монтирование удаленной папки через авторизацию на основе SSH-ключа
  3. Подключение удаленной файловой системы на постоянной основе
  4. Введение
  5. 1 — настраиваем ssh сервер
  6. 2- создаем директорию для ключей
  7. 3 — добавляем на целевую машину открытый ключ
  8. Самый простой способ монтирования удаленной файловой системы
  9. Вход по ssh ключу для локальных администраторов windows
  10. Генерируем ключи ssh
  11. Двухфакторная аутентификация
  12. Изменения конфигурации sshd
  13. Использование ssh bastion host
  14. Как настроить sshfs под linux
  15. Как настроить sshfs под windows
  16. Монтирование удаленной папки в /mnt/sample5
  17. Монтирование удаленной файловой системы
  18. Монтирование удаленной файловой системы в windows
  19. Настраиваем целевую машину
  20. Настройка
  21. Настройка openssh в windows для авторизации по ключам
  22. Настройка pam для двухфакторной аутентификации
  23. Настройка ssh для двухфакторной аутентификации
  24. Настройка ssh для использования сертификатов
  25. Особенности и выявление ошибок
  26. Примеры шаблонов сертификатов
  27. Проcмотр логов
  28. Проверка работоспособности
  29. Проверяем работу
  30. Продолжение следует
  31. Сертификаты
  32. Создание ssh-ключей под linux
  33. Создание каталога для монтирования
  34. Создание ключа ca
  35. Тестируем
  36. Требования
  37. Установка sshfs
  38. Установка sshfs в ubuntu и debian
  39. Установка sshfs в windows
  40. Установка sshfs на centos
  41. Установка sshfs на macos
  42. Установка google-authenticator
  43. Частые проблемы при использовании sshfs
  44. Заключение
  45. Вместо выводов
  46. Рекомендуемые статьи по теме:
  47. Вывод

Что дальше

Мы добавили в документацию

, где более подробно рассматриваются все параметры и переменные.

Если есть вопросы — не стесняйтесь задавать.

Монтирование удаленной папки через авторизацию на основе SSH-ключа

Если у вас настроен безопасный доступ на удаленный сервер с помощью SSH-ключа, то подключить удаленную папку возможно даже без ввода пароля.

Подключение удаленной файловой системы на постоянной основе

В некоторых случаях, удобный вариант — это монтирование удаленной папки на постоянной основе, т.е. чтобы при каждой загрузке ОС, она была уже подключена и готова к работе. Все настройки требуется проводить под пользователем root, для входа с правами root, выполним:

sudo –i

На следующем этапе вам необходимо сгенерировать пару SSH-ключей (см. инструкцию выше) и сохранить их в папке /root/.ssh/id_rsa. После этого следует выполнить тестовую проверку монтирования:

sshfs 194.58.121.225:/ /mnt/sample5

Если в ручном режиме монтирование удалось, размонтируем удаленную папку:

umount /mnt/sample5

Сейчас приступим к редактированию файла /etc/fstab с помощью редакторов Nano или Vim:

nano /etc/fstab

Впишем в самом конце файла следующую строку (приведен базовый синтаксис команды):

root@194.58.121.225:/ /mnt/sample5 fuse.sshfs defaults 0 0

Затем потребуется проверить, происходит ли монтирование из файла /etc/fstab:

mount –av

Если подключение удаленной папки прошло успешно, то опять размонтируем ее и выполним перезагрузку системы. После перезагрузки нужно проверить точку монтирования командой:

df -h | grep mnt

Стоит отметить, что основной синтаксис вышеприведенной команды работает только для пользователя с правами root. В ОС Linux не рекомендуется постоянно работать под root по соображениям безопасности. Поэтому лучше сразу настроить /etc/fstab таким образом, чтобы любой пользователь смог работать с удаленной директорией на постоянной основе.В таком случае, вам стоит прописать команду в /etc/fstab с дополнительными параметрами:

Введение

Началось все с того, что потребовалось быстро и легко управлять доступом
ко множеству машин, используя возможности самого sshd,
а если что-то не получится перейти к более сложным решениям, таким как
kerberos,
sssd,
freeipa.

Прежде чем перейти к описанию настройки, я хочу рассказать и показать
как работает доверенные сертификаты в sshd. Как и в SSL/TLS,
вам потребуется создать публичный и приватный ключи CA (Центра Сертификации).
Затем подписать публичные ключи для сервера и клиентских машин.

На текущий момент подписывать другие CA невозможно, это одно из отличий от SSL/TLS.
После этого необходимо перенастроить sshd,
предоставить подписанные ключи клиентам, и можно начинать работать
по данной схеме. Какие возможности дает такая конфигурация, спросите вы?

  • Можно запретить использование неподписанных ключей для всех учетных записей.
  • Управление доступом осуществляется через удобно-читаемые заданные роли (principals).
  • Подписанные сертификаты могут иметь ограничение по времени действия.
  • Подписанные сертификаты можно отзывать в любой момент времени.

Первый пункт будет необходим, когда необходимо запретить пользователям создавать
посторонние ключи, тем самым делигировать управление.
Второй решает поставленную задачу.
Последние два пункта являются необходимым условием в процессах
автоматизации управления ключами доступа.

Таким образом, у нас имеется почти все необходимое для создания автоматической
системы управления ключами доступа по SSH. Перед тем, как приступить
к перенастройке своего sshd следует проверить необходимые требования.

1 — настраиваем ssh сервер

sudo nano /etc/ssh/sshd_config

2- создаем директорию для ключей

в домашней директории пользователя создаем директорию

.ssh

3 — добавляем на целевую машину открытый ключ

В созданной директории .ssh нам необходимо создать файл с отрытым ключом

Про сертификаты:  Помощь в оформлении сертификата на детское постельное – услуги сертификации

Самый простой способ монтирования удаленной файловой системы

Если у вас мало опыта работы с терминалом Линукс, то подключить удаленный сервер можно с помощью специальных настроек в графической оболочке ОС. Для этого необходимо зайти в файловый менеджер и выбрать опцию « Другие места»:

  • Внизу, в строке «Подключиться к серверу», выбрать протокол SSH, ввести адрес вашего сервера в формате: ssh://X.X.X.X;
  • В появившемся диалоговом окне ввести данные для доступа на сервер (имя пользователя и пароль);
  • Нажать кнопку «Подключиться».

Вход по ssh ключу для локальных администраторов windows

В OpenSSH используются особые настройки доступа по ключам для пользователей с правами локального администратора Windows.

Генерируем ключи ssh

для этого существует утилита ssh-keygen

Двухфакторная
аутентификация

Не так то
и просто преодолеть два различных метода проверки пользователя, особенно когда
не знаешь паролей. Первый уровень – это обычно пароль, а второй – токен из приложения, установленного на телефоне, SMS с уникальным кодом,
отпечаток пальца или голос.

Изменения конфигурации sshd

Осталось изменить конфигурацию для sshd. Вносим следующие изменения
в файле /etc/ssh/sshd_config.

Поясню вкратце:

Теперь подробнее о каждом в отдельности.
Формат файла RevokedKeys я пока не могу описать. Он заполняется
только через команду ssh-keygen.
Описание того, как добавлять недействительные сертификаты я расскажу
в третьей статье.

Использование
ssh
bastion host

Еще один
способ повысить безопасность SSH – принудительно использовать bastion-хост – ssh-шлюз, служащий единственной точкой входа
в инфраструктуру. Уменьшение вероятности любой потенциальной поверхности атаки
за счет использования файерволов позволяет лучше следить за тем, кто к чему
обращается.

Переход к
использованию такого метода не должен быть трудной задачей, особенно если вы уже
применяете сертификаты. Все настройки совершаются через локальный конфиг:
~/.ssh/config.

Как настроить sshfs под linux

Выполним настройки sshfs на локальной машине под операционной системой Ubuntu 20.04 1 LTS. Удаленная файловая система находится на сервере под управлением Ubuntu 18.04 LTS. Все форматы команд будем описывать для ОС на базе Debian/Ubuntu. Если у вас другие ОС, то адаптируйте наши инструкции, согласно пользовательской документации для этих ОС.

Как настроить sshfs под windows

Подключить удаленную папку по sshfs возможно и под ОС Windows, правда с помощью специальных программ и утилит. На специализированных форумах можно встретить рекомендации по использованию утилиты win-sshfs вместе с библиотеками Docan. Однако, эта утилита не всегда совместима с новыми версиями библиотек, может нестабильно работать под Windows 10.

Монтирование удаленной папки в /mnt/sample5

После настройки авторизации на сервере по SSH-ключу, приступим к монтированию удаленной файловой системы в нашу локальную папку, для этого выполним в терминале:

sudo sshfs root@ X.X.X.X:/ /mnt/sample5 -o
allow_other,default_permissions,IdentityFile=~/.ssh/id_rsa

Примечание: в некоторых случаях необходимо прописывать полный путь к папке с ключами вместо ~/.ssh/id_rsa.

Результат монтирования можно увидеть в локальной папке /mnt/sample5 или проверить точку монтирования, как мы это делали в предыдущих пунктах нашей статьи.

Монтирование удаленной файловой системы


Следующие инструкции применимы для всех дистрибутивов Linux и macOS.

Чтобы смонтировать удаленный каталог, пользователь SSH должен иметь доступ к нему. Команда монтирования SSHFS имеет следующий вид:

Монтирование удаленной файловой системы в windows

Пользователи Windows могут использовать проводник Windows для сопоставления сетевого диска с удаленным каталогом на сервере SSH.

Откройте проводник Windows, щелкните правой кнопкой мыши «Этот компьютер» и выберите «Подключить сетевой диск». Выберите диск для монтирования и в поле «Папка» введите удаленного пользователя, сервер и путь в следующем формате:


Для более подробной информации обратитесь к руководству по SSHFS-Win .

Настраиваем целевую машину

Настраиваем машину на которую будем выполнять вход по ключу, тут необходимо выполнить 3 действия:

1) Настроить SSH сервер

2) Создать директорию для ключей в домашней директории пользователя

3) Положить на машину открытый ключ

Настройка

Замечание. Необходимые действия по подписыванию сертификатов можно производить
как на своей рабочей машине, так и прямо на удаленном сервере. Как и в случае
SSL/TLS, приватный ключ CA должен храниться в целостности и сохранности, вдали
от посторонних глаз.

Публичный ключ CA может понадобиться клиентским машинам,
но я пока не сталкивался с подобным (не смотря на то, что в Интернет говорят
обратное).
Я описываю все действия, которые выполняются непосредственно
на удаленном сервере из под пользователя root.

Настройка openssh в windows для авторизации по ключам

Теперь открытый ключ, который вы сгенерировали на клиенте, нужно скопировать на ваш SSH сервер (в этом примере это удаленный компьютер с Windows 10 1903 и настроенной службой OpenSSH).

Про сертификаты:  Разновидности и выбор новых еврокубов

Настройка
pam для двухфакторной аутентификации

Чтобы
заставить систему использовать коды OTP (one-time password), нужно
отредактировать конфиг PAM sshd. Добавьте следующую строку в конец файла /etc/pam.d/sshd:

auth required pam_google_authenticator.so nullok

nullok
в конце строки означает, что пользователям, у которых еще не настроен
второй фактор, все равно будет разрешено войти в систему, чтобы они могли его
настроить. После того как все настроено, обязательно удалите nullok.

В
завершение, измените методы аутентификации по умолчанию, чтобы SSH не
запрашивал у пользователей пароль, если они не представляют двухфакторный
токен. Эти изменения также вносятся в файл /etc/pam.d/sshd:

Настройка
ssh для двухфакторной аутентификации

Для того
чтобы сервер требовал использования такой аутентификации, внесем несколько
изменений в /etc/ssh/sshd_config:

На этом
этапе вы должны перезапустить sshd с помощью systemctl restart sshd. Убедитесь,
что вы оставили SSH-соединение открытым, чтобы при необходимости исправить ошибки. Перезапуск SSH оставит существующие соединения активными, но если есть проблема с конфигурацией, новые соединения могут быть запрещены.

Настройка
ssh для использования сертификатов

Нужно указать серверу, чтобы он использовал новый сертификат. Скопируйте три сгенерированных файла на сервер в каталог /etc/ssh,
установите разрешения и добавьте в файл /etc/ssh/sshd_config следующую строку:

HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub

Особенности и выявление ошибок

Во-первых, следует обратить внимание на экранирование специальных символов
(например, “/”, “@”),
когда задаете имя роли с помощью команды ssh-keygen.
Это зависит от используемого шелла.
Файл AuthorizedPrincipalsFile содержит имена как есть,
т.е. без экранирования.

Во-вторых, если по каким-либо причинам, вас не пускает на сервер,
то сперва надо убедиться что права на файлы и директории
у клиента и сервера выставленны корректно. На директорию 0700,
на файлы 0600.

Если вы забудете добавить имя роли или укажете его отличным от того, что
указали при подписывании клиентского сертификата, то sshd сообщит вам об этом
в логе:

И главное, указывать публичный ключ клиента нигде больше не следует!
Ни в каких файлах. Вообще.
Просто отдали подписанный сертификат обратно клиенту и на этом дело сделано.

Примеры шаблонов сертификатов

Внесём несколько изменений в дефолтный шаблон.

Запрещаем переадресацию агента и портовЕсли пользователи подключаются к внутренним хостам через хост-бастион, то хорошо бы запретить перенаправление портов по соображениям безопасности. Вы же не хотите, чтобы юзеры перенаправили трафик с продакшн-сервера MySQL на свой localhost.

Проcмотр логов

Если вы
посмотрите в журнал sshd сервера, запустив journalctl -u sshd, то увидите имя используемого для аутентификации сертификата, а также данные центра сертификации:

sshd[14543]: Accepted publickey for tatooine from 1.2.3.4 port 53734 ssh2: RSA-CERT ID palpatine@proglib.io (serial 0) CA RSA SHA256:tltbnMalWg skhm VlGLd2xHiVPozyuOPl34WypdEO0

Проверка работоспособности

Я использую openssh как в качестве сервера, так и в качестве клиента. Поэтому
в нем практически ничего не надо настраивать. В частности, если вы делали как
было описано выше, то в директории /home/test/.ssh будут файлы
со следующими именами:

Также не забудем перезапустить sshd:

Или, если у вас дистрибутив Fedora, RHEL/Centos 6 , Arch Linux или иной, работающий
с systemd:

Осталось зайти на сервер как обычно:

Проверяем работу

На рабочей машине, если мы работаем под именем

Продолжение следует

Это был лишь первый этап по конфигурации sshd с использованием
доверенных сертификатов. Мы рассмотрели какие возможности
перед нами открываются и настроили базовую конфигурацию sshd.
В следующей статье
будут рассмотренны случаи, где данная конфигурация будет полезна
и в чем отличие от обычных сертификатов в плане управления и использования.

Сертификаты

Вы наверняка согласитесь с тем, что аутентификация с открытым ключом лучше, чем использование
паролей. Не приходится вводить пароль, никто его не взломает и не подсмотрит через плечо.

Следующий
уровень секьюрности после ключей – SSH-сертификаты, которые поддерживаются с OpenSSH
5.4, выпущенного ещё в 2021 году.

С помощью
SSH-сертификатов вы создаете центр сертификации (CA), а затем используете его
для выдачи и криптографической подписи, которая аутентифицирует пользователей.
Вы можете создать пару ключей, например, с помощью команды ssh-keygen:

$ ssh-keygen -t rsa -b 4096 -f host_ca -C host_ca
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in host_ca.
Your public key has been saved in host_ca.pub.
The key fingerprint is:
SHA256:tltbnMalWg skhm VlGLd2xHiVPozyuOPl34WypdEO0 host_ca
The key's randomart image is:
 ---[RSA 4096]---- 
|               o.|
|            . ..o|
|           o.o.  |
|          o o.= E|
|        S  o o=o |
|       ....  =  .|
|       ..=. %.o.o|
|        *o Oo=. .|
|       .oo=ooo ..|
 ----[SHA256]----- 

$ ls -l
total 8
-rw-------. 1 gus gus 3381 Mar 19 14:30 host_ca
-rw-r--r--. 1 gus gus  737 Mar 19 14:30 host_ca.pub

Файл
host_ca является закрытым ключом центра сертификации хоста и должен храниться в
защищенном месте. Не выдавайте его никому, не копируйте куда-либо и убедитесь,
что как можно меньше людей имеют к нему доступ. В идеале он «живет» на
машине, которая не допускает прямого доступа, и все сертификаты выдаются автоматически.

Про сертификаты:  Скайпарк в Сочи: цены 2021, экскурсии, как добраться, сайт

Рекомендуется использовать два отдельных CA – один для
подписания сертификатов хостов, другой для пользователей. Одни и те же процессы не будут добавлять и хосты, и юзеров. А если закрытый
ключ скомпрометируют, нужно будет лишь пересоздать сертификаты для хостов
или пользователей, а не оба сразу.

Создание ssh-ключей под linux

Чтобы создать пару SSH-ключей (приватный и публичный) под Ubuntu выполним следующую операцию:

ssh-keygen

Примечание: У вас должен быть установлен пакет openssh.

Затем сохраните файл с ключами в директории «по умолчанию», просто нажав клавишу Enter. Для дополнительной безопасности ключа будет предложено ввести кодовое слово, если эта опция вам не нужна, смело пропускайте данный шаг. На скриншоте ниже показан процесс генерации ключей в папку «по умолчанию», где они будут сохранены.

В результате, создана пара ключей: приватный ключ — id_rsa, публичный ключ — id_rsa.pub. Для просмотра файла с вашим публичным ключом примените команду:

cat ~/.ssh/id_rsa.pub

Для добавления ключа на удаленный сервер выполните следующую команду:

ssh-copy-id root@X.X.X.X

В итоге, ваш ключ успешно добавлен на сервер. Проверить подключение к удаленному серверу с помощью SSH-ключа можно будет таким образом:

ssh root@X.X.X.X

Примечание: Под Windows SSH-ключи можно сгенерировать с помощью программы PuTTY.

Создание каталога для монтирования

На следующем этапе, создадим точку монтирования на нашем компьютере. Именно в эту папку мы будем монтировать удаленную файловую систему.

sudo mkdir /mnt/sample5

На данный момент наш каталог пустой

Создание ключа ca

Следующая команда сгенерирует приватный /etc/ssh/ca и публичный
/etc/ssh/ca.pub ключи центра сертификации.

Тестируем

Подключаемся
к bastion-у и видим приглашение:

Требования

Данный функционал будет работать только, если версия openssh равна 5.6 или выше.
Например, Debian Squeeze имеет версию 5.5 и описанный ниже функционал работать
не будет (как у клиента, так и на сервера).
Чтобы узнать версию ssh достаточно выполнить:

Установка sshfs

Пакеты SSHFS доступны для всех основных операционных систем, и установка довольно проста.

Установка sshfs в ubuntu и debian

SSHFS доступен из репозиториев Ubuntu и Debian по умолчанию. Обновите индекс пакетов и установите клиент sshfs, набрав:

sudo apt updatesudo apt install sshfs

Установка sshfs в windows

Пользователям Windows необходимо установить два пакета, WinFsp и SSHFS-Win.

Установка sshfs на centos

В CentOS и других производных Red Hat для установки sshfs выполните следующую команду:

sudo yum install sshfs

Установка sshfs на macos

Пользователи macOS могут установить клиент SSHFS, загрузив пакеты FUSE и SSHFS с сайта osxfuse или через Homebrew:

brew cask install osxfusebrew install sshfs

Установка
google-authenticator

В
системах на базе RHEL/CentOS можно установить модуль google-authenticator из
репозитория EPEL:

Частые проблемы при использовании sshfs

SSHFS просто настраивается и удобен в использовании. Однако, встречаются и технические проблемы при настройке sshfs и в процессе работы с ним. Перечислим наиболее распространенные:

  1. Качество канала и скорость соединения. Даже при небольших сбоях, могут происходить зависания, в результате чего удаленная папка будет недоступна и размонтировать ее с помощью команд будет невозможно. В этом случае, может помочь только перезагрузка ОС.
  2. Проблемы с информационной безопасностью. Несмотря на использование безопасного протокола SSH, все равно могут появиться уязвимости и угрозы ИБ.
  3. Проблемы в настройке SSHFS под Linux на постоянной основе. У пользователей, как правило, различные версии и разновидности ОС Линукс, поэтому команды для прописывания в файле /etc/fstab не всегда правильно работают у всех пользователей, у некоторых они требуют прописывания дополнительных параметров и настроек.

Заключение

Приведенные методы дают практические примеры нескольких способов, с помощью которых вы
можете повысить безопасность своей инфраструктуры SSH, предоставляя пользователям
возможность гибко продолжать использовать инструменты, с которыми они знакомы.

Вместо выводов

SSHFS хорошее решение, если Вам нужно быстро и относительно не сложно реализовать постоянный доступ к файлам на удаленном сервере. Это удобное решение для веб-разработчиков, для совместной работы с файлами или если вы работаете удаленно. В зависимости от объема данных, которые будут храниться на сервере, под такую задачу можно использовать виртуальный сервер или арендовать выделенный сервер.

Специалисты поддержки FREEhost.UA помогут с настройкой, если опыта в администрировании серверов у вас недостаточно.

Вывод


Из этого руководства вы узнали, как использовать SSHFS для монтирования удаленного каталога через SSH. Это может быть полезно, когда вы хотите взаимодействовать с удаленными файлами с помощью приложений на локальном компьютере.

Для получения полного списка опций sshfs введите man sshfs свой терминал.

Оцените статью
Мой сертификат
Добавить комментарий