← Cloudflare One / cloudflare-one / access-controls / applications / non-http
Краткосрочные сертификаты (устаревшие)
Cloudflare Access может заменить традиционные SSH-ключи краткосрочными сертификатами, которые выдаются пользователям на основе токена, полученного при входе через Access. В традиционной модели пользователи создают пару SSH-ключей, а администраторы предоставляют доступ к отдельным SSH-серверам, загружая на них открытые ключи пользователей. Такие SSH-ключи могут оставаться на серверах без изменений месяцами или годами. Cloudflare Access избавляет от необходимости управлять SSH-ключами и одновременно повышает безопасность, заменяя долгоживущие SSH-ключи краткосрочными SSH-сертификатами.
1. Защитите сервер с помощью Cloudflare Access
Краткосрочные сертификаты Cloudflare Access работают с любым современным SSH-сервером, независимо от того, находится ли он за Access. Тем не менее мы рекомендуем размещать сервер за Access ради дополнительной безопасности и таких функций, как аудит и терминалы прямо в браузере.
Чтобы защитить свой сервер, находящийся за Cloudflare Access:
- Подключите сервер к Cloudflare как опубликованное приложение.
- Создайте локально размещённое приложение Access для сервера.
2. Убедитесь, что имена пользователей Unix совпадают с их SSO-идентификаторами
Cloudflare Access извлекает данные о личности из токена и с помощью краткосрочных сертификатов авторизует пользователя в целевой инфраструктуре.
Проще всего настроить систему так, чтобы имя пользователя Unix совпадало с префиксом адреса электронной почты. Выданные краткосрочные сертификаты будут действительны для этого префикса адреса электронной почты пользователя. Например, если пользователь в вашей организации Okta или GSuite зарегистрирован как [email protected], они будут входить на SSH-сервер как jdoe.
Для тестирования вы можете выполнить следующую команду, чтобы создать пользователя Unix на этой машине:
sudo adduser jdoeРасширенная настройка: разные имена пользователей
Сертификаты SSH включают один или несколько principals в своей подписи, указывающие имена пользователей Unix, под которыми сертификату разрешено выполнять вход. Cloudflare Access всегда задаёт субъект как префикс адреса электронной почты пользователя. Например, если [email protected] пытается подключиться, Access выдаёт кратковременный сертификат, авторизованный для субъекта jdoe.
По умолчанию SSH-серверы сверяют имя пользователя Unix со списком principals в сертификате пользователя. Вы можете настроить SSH-сервер так, чтобы он принимал principals, не совпадающие с именем пользователя Unix.
Имя пользователя совпадает с другим email-адресом
Чтобы разрешить [email protected] чтобы войти в систему от имени пользователя johndoe, добавьте следующее в принадлежащий серверу /etc/ssh/sshd_config:
Match user johndoe
AuthorizedPrincipalsCommand /bin/echo 'jdoe'
AuthorizedPrincipalsCommandUser nobodyЭто указывает SSH-серверу, что при попытке аутентификации от имени пользователя johndoe, проверьте их сертификат на наличие принципала jdoe. Это позволило бы пользователю [email protected] чтобы войти на сервер с помощью команды, например:
ssh johndoe@serverИмя пользователя совпадает с несколькими email-адресами
Чтобы разрешить нескольким адресам электронной почты входить как vmuser, добавьте следующее в принадлежащий серверу /etc/ssh/sshd_config:
Match user vmuser
AuthorizedPrincipalsFile /etc/ssh/vmusers-list.txtЭто указывает SSH-серверу загрузить список principals из файла. Затем в /etc/ssh/vmusers-list.txt, перечислите префиксы электронной почты, которые могут выполнять вход от имени vmuser, по одному на строку:
jdoe
bwayne
robinИмя пользователя совпадает со всеми пользователями
Чтобы разрешить любому пользователю Access входить как vmuser, добавьте следующую команду в принадлежащий серверу /etc/ssh/sshd_config:
Match user vmuser
AuthorizedPrincipalsCommand /bin/bash -c "echo '%t %k' | ssh-keygen -L -f - | grep -A1 Principals"
AuthorizedPrincipalsCommandUser nobodyЭта команда принимает сертификат, предоставленный пользователем, и авторизует любого principal, указанного в нём.
Разрешить всех пользователей
Чтобы разрешить любому пользователю Access входить с любым именем пользователя, добавьте следующее в конфигурацию сервера /etc/ssh/sshd_config:
AuthorizedPrincipalsCommand /bin/bash -c "echo '%t %k' | ssh-keygen -L -f - | grep -A1 Principals"
AuthorizedPrincipalsCommandUser nobodyПоскольку в этом случае безопасность сервера будет полностью зависеть от настройки Access, убедитесь, что ваши Политики доступа правильно настроены.
3. Сгенерируйте открытый ключ краткосрочного сертификата
-
В Панель управления Cloudflare ↗, перейдите в Zero Trust > Контроль доступа > Учетные данные службы > SSH.
-
Выберите Добавьте сертификат.
-
В Приложение раскрывающемся списке выберите приложение Access, которое представляет ваш SSH-сервер.
-
Выберите Создать сертификат. В таблице краткосрочных сертификатов появится новая строка с названием вашего приложения Access.
-
Выберите краткосрочный сертификат для вашего приложения.
-
Скопируйте его Открытый ключ CA. Вы можете вернуться и скопировать этот открытый ключ в любое время.
4. Сохраните свой публичный ключ
- Скопируйте открытый ключ, созданный в панели управления на шаге 3.
-
Используйте следующую команду, чтобы перейти в каталог конфигурации SSH на удалённой целевой машине:
cd /etc/ssh -
Там вы можете использовать следующую команду, чтобы одновременно создать файл и открыть текстовый редактор для ввода или вставки открытого ключа.
vim ca.pub -
В
ca.pubфайл, вставьте открытый ключ без каких-либо изменений.ca.pubecdsa-sha2-nistp256 <redacted> [email protected]ca.pubфайл может содержать несколько ключей, перечисленных по одному в строке. Пустые строки и комментарии, начинающиеся с#также разрешены. -
Сохраните
ca.pubфайл. В некоторых системах может потребоваться выполнить следующую команду, чтобы принудительно сохранить файл в зависимости от ваших прав доступа::w !sudo tee % :q!
5. Измените свой sshd_config файл
Настройте свой сервер SSH, чтобы он доверял Cloudflare SSH CA, обновив sshd_config файл на удалённой целевой машине.
-
Находясь в
/etc/sshкаталоге на удаленной машине откройтеsshd_configфайл.sudo vim /etc/ssh/sshd_config -
Нажмите
iчтобы перейти в режим вставки, а затем добавьте следующие строки в начало файла, перед всеми остальными директивами:PubkeyAuthentication yes TrustedUserCAKeys /etc/ssh/ca.pub -
Нажмите
escа затем введите:xи нажмитеEnterи сохраните и выйдите.
6. Перезапустите свой SSH-сервер
После изменения вашего sshd конфигурации перезапустите службу SSH на удаленном компьютере, чтобы изменения вступили в силу.
Для Debian/Ubuntu:
sudo systemctl reload sshДля CentOS/RHEL 7 и новее:
sudo systemctl reload sshd7. Подключитесь как пользователь
Настройте свою конфигурацию клиента SSH
На стороне клиента, настроить своё устройство чтобы использовать Cloudflare Access для доступа к защищённой машине. Чтобы использовать краткосрочные сертификаты, необходимо включить следующие настройки в файл конфигурации SSH (~/.ssh/config).
Чтобы сэкономить время, можно использовать следующую команду cloudflared, которая выведет нужную команду конфигурации:
cloudflared access ssh-config --hostname vm.example.com --short-lived-certЕсли вы предпочитаете настраивать вручную, вот пример сгенерированной конфигурации SSH:
Match host vm.example.com exec "/usr/local/bin/cloudflared access ssh-gen --hostname %h"
HostName vm.example.com
ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h
IdentityFile ~/.cloudflared/vm.example.com-cf_key
CertificateFile ~/.cloudflared/vm.example.com-cf_key-cert.pubПодключитесь через терминал в браузере
Конечные пользователи могут подключаться к сеансу SSH без какой-либо настройки, используя браузерный терминал Cloudflare. Чтобы включить эту функцию, см. Терминал, отображаемый в браузере.
По умолчанию терминал на основе браузера запрашивает у пользователя вход по имени пользователя и паролю. Если вы хотите использовать аутентификацию по сертификату, убедитесь, что у вас есть создал краткосрочный сертификат для конкретного приложения Access, настроенного для SSH-доступа через браузер.
Теперь ваш SSH-сервер защищен Cloudflare Access: перед подключением пользователям нужно будет пройти аутентификацию у вашего провайдера идентификации.