Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll Сертификаты
Содержание
  1. Введение
  2. 1 — настраиваем ssh сервер
  3. 2- создаем директорию для ключей
  4. 3 — добавляем на целевую машину открытый ключ
  5. Анонимность в интернете своими руками. настройка ssh (вход по сертификату) – securityforall
  6. Аутентификация на сервере с использованием ключей ssh
  7. Вход по ssh ключу для локальных администраторов windows
  8. Генерируем ключи ssh
  9. Как встроить открытый ключ при создании сервера
  10. Как работают ключи ssh?
  11. Как скопировать открытый ключ на ваш сервер
  12. Копирование открытого ключа вручную
  13. Копирование открытого ключа с использованием ssh-copy-id
  14. Копирование открытого ключа с помощью ssh
  15. Настройка ssh сертификатов на сервере
  16. Настройка подключения putty с использованием ssh сертификата
  17. Отключение аутентификации с помощью пароля на сервере
  18. Подготовка папок
  19. Предварительная настройка сервера
  20. Преобразуем приватный ключ в формат ключа putty
  21. Проверяем работу
  22. Создание ключей ssh
  23. Финальная настройка сервера

Введение

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

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

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

sudo nano /etc/ssh/sshd_config

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

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

.ssh

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

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

Анонимность в интернете своими руками. настройка ssh (вход по сертификату) – securityforall

Все настройки выполнены в VPS от hostsailor.com

Управлять нашим сервером мы будем через SSH-консоль. Да, есть множество решений графического интерфейса для управления linux-серверами, но это не наш путь. Во-первых, наш VPS очень базового уровня и его ресурсов если и хватит для работы графического интерфейса, то впритык. Во-вторых, практически для любого графического интерфейса потребуется Web-сервер и дополнительные открытые порты, что резко увеличивает уязвимость нашего сервера для атак злоумышленников. Ну и в-третьих, нам его один раз настроить и забыть.

Нам потребуется сам SSH-клиент, а также утилиты для генерации ключей. Качаем и распаковываем архив https://the.earth.li/~sgtatham/putty/latest/w32/putty.zip

Из архива нужны будут сам клиент putty.exe и утилита генерации ключей puttygen.exe. Также можно скачать их по-отдельности на этой странице:

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.ht…

Еще нам понадобиться WinSCP. Очень удобная штука, особенно для тех, кто не любит работать в консоли. Качаем здесь:

https://winscp.net/download/files/202105310908cd3ce105c1c1ca… и распаковываем архив. Для запуска используем WinSCP.exe

Теперь все готово. Начинаем настраивать.

Для начала подключимся по SSH по паролю и убедимся, что наш сервер работает. Для этого запускаем putty.exe

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

в поле Host Name вписываем полученный по почте IP-адрес и жмем кнопку Open (если появится окно PuTTY Security, жмем «Да») и вводим логин (root) и пароль из письма.

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Маленький лайфхак: сейчас вам придётся в консоль вводить длинный и не удобный пароль, а в дальнейшем длинные и неудобные команды. Можно сократить ручной труд и просто копировать вставлять. Копировать как обычно, а для вставки переводим курсор на черное окно putty и жмем правую кнопку мыши. Всё. То, что копировали, будет вставлено. И пароль тоже вставиться. Этого будет не видно, но ничего страшно, после нажатия правой кнопки мыши сразу нажмите Enter. При копировании будьте аккуратны, выделяя текст для копирования не зацепите лишние пробелы.

Чтобы завершить ввод команды, нужно набрать Enter. Например, добавим нужный репозиторий и обновим наш сервер. Вводим (или копируем отсюда) следующую команду и жмем Enter.

Результат будет выглядеть примерно так:

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Теперь обновим сервер:

Свернём пока консоль, она нам понадобиться чуть позже. Попробуем подключать к серверу в WinSCP. Запускаем WinSCP.exe.

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Настраиваем параметры:

File protocol: SFTP

Host name: IP-адрес из письма

User name: root

Password: оставляем пустым

 Жмём “Save”, в появившемся окне «ОК». Теперь слева, в списке, появилась запись вида [email protected][IP-адрес]. Дважды кликнем по ней. Появится окно с предупреждением, жмём Yes. Вводим пароль и WinSCP подключается. Теперь мы видим две панели: слева файловую систему своего компьютера (диск С), а справа файловую систему VPS (обычно бывает открыта папка /root). Обратите внимание: в правой понели сверху списка папок всегда будет символ папки со стрелочкой и двумя точками. Если его два раза кликнуть (или стрелками переместить на него курсор и нажать Enter) вы перейдёте на уровень вверх. Например, сейчас сможете попасть в корень файловой структуры и сервера. Выглядит это так:

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Свернём пока WinSCP и запустим puttygen.exe.

Про сертификаты:  Подключаемся к Бонусной программе от МГТС: пошаговая инструкция – Блог МГТС

Сейчас мы создадим сертификаты для SSH-подключения. Ранее мы подключились по простому паролю. Использование пароля не безопасно: его можно перехватить или подобрать. Поэтому сделаем ключи и настроим наш сервер на подключение только с этими ключами.

Проверяем, что выбран тип ключа RSA, количество бит не менее 2048

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

И жмём кнопку “Generate”. Теперь на время освоим роль биологического генератора случайных чисел: двигаем хаотично мышкой и(или) жмем хаотично кнопки на клавиатуре (желательно кнопки с буквами и цифрами, остальные не трогаем). Как только зелёная полоска доползет, закрытый ключ готов. Придумываем для его защиты хороший пароль (Не менее 10 символов, латинские маленькие и большие буквы, хотя бы один спец-символ [email protected]#$%^&*()<>,.:;”’). Пароль забывать нельзя, его никак не восстановить! Вводим этот пароль два раза:

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Жмем “Save public key” и сохраняем публичный ключ (даём ему имя public.pub и не забываем куда сохранили. Я создал папку test на диске С:, дальше буду использовать её). Жмём “Save private key” и сохраняем приватный ключ (даём ему имя private и сохраняем рядом с публичным). У нас должно получиться два файла: private.ppk и public.pub

Рuttygen можно закрывать, он нам больше не понадобиться. Возвращаемся к WinSCP. Слева находим папку с двумя указанными выше файликами, а права открываем папку /tmp. Слева «становимся» на файл public.pub, нажимаем F5 (одна из ненужных кнопок в самом верхнем ряду клавиатуры) и ОК. Наш файлик копируется на сервер. Получится вот так:

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Возвращаемся к консоли PuTTY. Вводим команду:

Если команда возвращает ошибку, то Вы должны создать .ssh каталог и authorized_keys файл в первый раз.

Для этого выполните последовательно команды:

А затем уже

Всё, наш сервер готов принимать подключения по сертификату. Закрываем (совсем, крестиком) окно PuTTY и снова запускаем putty.exe. Создадим профиль для нашего сервера. Опять в поле “Host Name” вписываем IP-адрес сервера. Справа, в списке находим пункт Connection -> Data и в поле “Auto-login username” вписываем root.  Справа в списке находим пункт Connection -> SSH -> Auth находим поле “Private key file for authentication:” и жмём кнопу “Browse …”. Указываем путь на приватный ключ (в моём случае C:testprivate.ppk)

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Слева в списке выбираем пункт Session, в поле “Saved Session” вписываем любое имя профиля (например, my_vpn) и жмем “Save”.

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Ниже в списке появится строчка с этим именем. Щелкнем её двойным кликом. Появится консоль и попросит ввести пароль от приватного ключа (вы ведь его не забыли):

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Вводим его, жмём Enter. Если все сделали правильно, мы авторизуемся. Отлично. Теперь настроим WinSCP. Закроем его окно (крестиком) и вновь запустим wincsp.exe. У нас есть уже сохраненный профиль, просто отредактируем его. Выберем профиль («встать» на него в списке слева) и нажмём кнопку Edit, а затем кнопку Advanced… В появившемся окне слева, в списке, выбираем пункт SSH -> Authentication. Возле поля “Private key file” жмем кнопку с тремя точками и указываем путь на файл приватного ключа (также, как мы это делали для putty).

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Жмём ОК и в первоначальном окне жмём кнопку Save. Теперь двойным кликом по названию профиля подключаемся, вводим пароль от приватного ключа.

Теперь запретим нашему серверу принимать подключения по простому паролю. В правой панели WinCSP открываем папку /etc/ssh/ и находим файл sshd_config

Анонимность в интернете своими руками. Настройка SSH (вход по сертификату) – SecurityForAll

Двойным кликом открываем его. Находим строчку, в которой написано

Именно так, без символа #, и меняем yes на no. Получится:

Нажимает сверху символ дискеты и закрываем окно редактирования файла. Если кто-то никогда не видел дискет, то просто закрываем окно редактирования файла и нажимаем Yes в окне с предупреждением. Закрываем окно WinSCP. В консоли PuTTY вводим команду

и закрываем окно. Сервер перезагружается. Обычно это занимает от 10 до 60 секунд. По истечении это времени снова запускаем putty.exe и wincsp.exe и подключаемся к серверу и подключаемся к серверу в каждом из них.

со своего сайта.

Аутентификация на сервере с использованием ключей ssh

Если вы успешно выполнили одну из вышеописанных процедур, вы сможете войти на удаленный хост без пароля учетной записи для удаленного хоста.

Базовый процесс выглядит аналогично:

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

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

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

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

Как встроить открытый ключ при создании сервера

Если вы создаете новый сервер DigitalOcean, вы можете автоматически встроить открытый ключ SSH в учетную запись root нового сервера.

Внизу страницы создания дроплета есть опция для добавления ключей SSH на ваш сервер:

Про сертификаты:  Аккредитация стоматологов ортопедия с 1-400 вопрос

Если вы уже добавили файл открытого ключа в учетную запись DigitalOcean, вы сможете выбрать данную опцию (в примере выше указаны два существующих ключа: “Work key” и “Home key”). Чтобы встроить существующий ключ, нажмите на него, чтобы его выделить.

Если в вашу учетную запись еще не выгружен открытый ключ SSH, или если вы хотите добавить новый ключ, нажмите кнопку “ Add SSH Key”. При этом будет открыто диалоговое окно:

Вставьте содержимое открытого ключа SSH в поле “SSH Key content”. Если вы сгенерировали ключи, используя указанный выше метод, вы можете получить содержимое открытого ключа на локальном компьютере, введя следующую команду:

cat ~/.ssh/id_rsa.pub

Как работают ключи ssh?

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

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

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

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

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

Открытый ключ выгружается на удаленный сервер, на который вы хотите заходить, используя SSH. Этот ключ добавляется в специальный файл ~/.ssh/authorized_keys в учетной записи пользователя, которую вы используете для входа.

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

Как скопировать открытый ключ на ваш сервер

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

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

Копирование открытого ключа вручную

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

Содержимое файла id_rsa.pub нужно будет каким-то образом добавить в файл ~/.ssh/authorized_keys на удаленном компьютере.

Чтобы вывести содержимое ключа id_rsa.pub, введите на локальном компьютере следующую команду:

cat ~/.ssh/id_rsa.pub

Вы увидите содержимое ключа, которое может выглядеть примерно так:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44 tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q bqgZ8SeeM8wzytsY dVGcBxF6N4JS zVk5eMcV385gG3Y6ON3EG112n6d SMXY0OEBIcO6x PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77 xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66 PujOO xt/2FWYepz6ZlN70bRly57Q06J ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv Ow9gI0x8GvaQ== demo@test

Откройте удаленный хост, используя любой доступный метод. Например, если вы используете дроплет DigitalOcean Droplet как сервер, вы можете выполнить вход, используя веб-консоль на панели управления:

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

mkdir -p ~/.ssh

Теперь вы можете создать или изменить файл authorized_keys в этом каталоге. Вы можете добавить содержимое файла id_rsa.pub в конец файла authorized_keys и, при необходимости, создать этот файл, используя следующую команду:

Копирование открытого ключа с использованием ssh-copy-id

Самый удобный способ скопировать открытый ключ на существующий сервер — использовать утилиту под названием ssh-copy-id. Поскольку этот метод очень простой, если он доступен, его рекомендуется использовать.

Инструмент ssh-copy-id входит в пакеты OpenSSH во многих дистрибутивах, так что, возможно, он уже установлен на вашей локальной системе. Чтобы этот метод сработал, вы должны уже настроить защищенный паролем доступ к серверу через SSH.

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

Про сертификаты:  Как установить SSL-сертификат на почтовый домен?

Синтаксис выглядит следующим образом:

Копирование открытого ключа с помощью ssh

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

Для выполнения этой задачи мы можем вывести содержимое нашего открытого ключа SSH на локальный компьютер и передать его через соединение SSH на удаленный сервер. С другой стороны, мы можем подтвердить существование каталога ~/.ssh в используемой нами учетной записи и вывести переданные данные в файл authorized_keys в этом каталоге.

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

Полная команда выглядит следующим образом:

Настройка ssh сертификатов на сервере

Выполним генерацию ключей SSH.

ssh-keygen -a 1000 -b 4096 -o -t rsa

Укажем путь хранения ключа и его имя

/root/.ssh/id_rsa

💡 В моем случае при создании сертификата для root оказалось важным указать жесткий путь /root/.ssh/, вместо относительного ~/.ssh/ чтобы избежать ошибки SSH Server refused our key.

Система так же создаст публичный ключ по данному пути.

Указываем ключевую фразу для доступа к приватному ключу.

Добавляем содержимое файла публичного ключа к файлу сертификата авторизации SSH.

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Перезапускаем SSH

sudo service ssh restart 

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

Добавьте приватный сертификат в подключение:

Connection > SSH > Auth > Private key file for authentication

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

Успешный вход c SSH сертификатом на Ubuntu сервер
Успешный вход на сервер с SSH сертификатами

💡 Если при входе на сервер вы получаете сообщение SSH Server refused our key, проверьте правильность прав на папку .ssh и файл authorized_keys, а так же укажите прямой путь до папки с ключами при.

Отключение аутентификации с помощью пароля на сервере

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

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

Когда вышеуказанные условия будут выполнены, войдите на удаленный сервер с помощью ключей SSH с учетной записью root или с учетной записью с привилегиями sudo. Откройте файл конфигурации демона SSH:

sudo nano /etc/ssh/sshd_config

Подготовка папок

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

Важный момент при настройке авторизации SSH по ключам — это указать правильные Права доступа на папку и файл ключа.

Выполните:

mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys

Предварительная настройка сервера

Разрешим вход с использованием публичного сертификата SHH на сервер и укажем путь до сертификата в настройках SSH, файл sshd_config.

nano /etc/ssh/sshd_config

Раскомментируйте или добавьте значения:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Преобразуем приватный ключ в формат ключа putty

💡 При попытке использовать скопированный ключ, PuTTY покажет ошибку: Unable to use key file (OpenSSH SSH-2 private key (new format)).

  1. Скопируйте приватный ключ id_rsa (или содержимое ключа в файл) на локальный компьютер;
  2. Запустите программу puttygen (из папки PuTTY);
  3. Нажмите кнопку Load и выберите файл приватного ключа;
  4. Введите пароль на приватный сертификат;
  5. Нажмите Save private key для сохранения приватного ключа в нужном формате (вы можете изменить Key comment, это не повлияет на работу ключа).
Как настроить SSH сертификаты для входа в putty
Загруженный RSA ключ в PuTTY Key Generator

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

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

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

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

Для этого мы можем использовать специальную утилиту ssh-keygen, которая входит в стандартный набор инструментов OpenSSH. По умолчанию она создает пару 2048-битных ключей RSA, что подходит для большинства сценариев использования.

Сгенерируйте на локальном компьютере пару ключей SSH, введя следующую команду:

ssh-keygen

Финальная настройка сервера

Последний шаг настройки SSH — отключение возможности входа на сервер по паролю, в файле конфигурации.

nano /etc/ssh/sshd_config

Раскомментируйте или добавьте значениe:

PasswordAuthentication no

После чего перезапустите службу SSH.

sudo service ssh restart

Настройка авторизации по сертификату SSH — завершена!

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