Найти в Дзене
Andrey N

Работа с сервером (VPS/VDS) ч. 1

Оглавление

Настройка защиты SSH-соединений (подключений)

Как только у Вас появился сервер LINUX (ОС: Ubuntu, CentOS, Fedora, Debian и т. д.) первым делом нужно подумать о защите!

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

Собственно защитой мы и займемся прямо сейчас.

Я очень постараюсь объяснить все очень подробно, так чтобы и ребенок разобрался, но если у Вас что-то не будет получаться - я постараюсь помочь.

НАСТРОЙКА SSH-КЛЮЧЕЙ С ПОМОЩЬЮ КОНСОЛИ (ТЕРМИНАЛА) PUTTY

Скачать консоль на свой локальный ПК (в данном примере – это PuTTY ). Сайт с русской версией: https://putty.org.ru/download.html

Скачиваем и устанавливаем (с этим проблем возникнуть не должно)!

Лично я выбрал русскую версию без установки (Portable) – скачал архив, распаковал в удобном месте и всё, установка не требуется.

При выборе версии Portable (любой программы, а не только PuTTY) - не рекомендую держать сами программы на рабочем столе. Программы должны находиться где-нибудь на диске, а вот ярлык можно поместить на рабочий стол, для удобства.

Сайт с консолью PuTTY - я выбираю портативную версию (не требующую установку)
Сайт с консолью PuTTY - я выбираю портативную версию (не требующую установку)

Скачиваем, устанавливаем и запускаем.

В моем случае: скачиваю --> открываю --> распаковываю архив в удобное место --> кидаю ярлык на рабочий стол --> запускаю:

Открываем архив и прошел по каталогам до файлов, далее нажимаю «Извлечь»
Открываем архив и прошел по каталогам до файлов, далее нажимаю «Извлечь»

Выбираю куда распаковать (можно указать любой путь):

Выбираем куда распаковать архив и нажимаем «ОК»
Выбираем куда распаковать архив и нажимаем «ОК»

Зажимаем Правую Кнопку Мыши (далее «ПКМ») на файле «putty_portable» и перетаскиваем его на рабочий стол и выбираем «Создать ярлыки», далее его можно переименовать при желании.

Данное действие не является обязательным - пример для тех кому это может понадобиться

Создаем ярлык для «putty_portable» и «puttygen»
Создаем ярлык для «putty_portable» и «puttygen»

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

В каталоге с терминалом запускаем файл «puttygen.exe» (если расширения файлов не отображаются файл будет выглядеть так: «puttygen», но мне удобнее видеть расширения файлов – это и безопаснее так как всегда видишь какой файл запускаешь).

PuttyGen – это утилита для создания SSH-ключей (безопасное соединение с сервером).

Генератор ключей PuTTY
Генератор ключей PuTTY

Тип ключа: RSA

Длина генерируемого ключа (в битах): можно оставить как есть, но я меняю на 4096.

Нажимаем кнопку: «Генерировать» и далее, беспорядочно, водим мышкой по окну «утилиты генерации ключей» до полного создания SSH-ключей. Движения мышкой делаются для создания случайных величин, используемых при генерации ключей. Нам ведь нужен супер уникальные ключи?! :)

По завершению генерации SSH-ключей появится вот такое окно:

Генератор ключей PuTTY с сгенерированным ключом
Генератор ключей PuTTY с сгенерированным ключом

* Поле «Комментарий»: Поле не является обязательным (можно оставить совсем пустым т.е. стереть то, что в нем напишется автоматически), но в нём можно дать комментарий к ключу (например придумать название: rootSSH-test). Сам комментарий дописывается в конец открытого (публичного) ключа, но фактически ключом не является.

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

* Поле заполняется без пробелов и только латиницей!

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

После заполнения всех полей нужно сохранить «Открытый» и «Личный» ключи в надежном месте.

Как правило, файл с открытым (публичным) ключом имеет расширение файла «.pub»(если не указано - допишите самостоятельно, например: andrey.pub), а файл с личным (приватным) ключом имеет расширение файла «.ppk» (обычно дописывается автоматически).

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

Примечание: Если у Вас несколько серверов – НЕ обязательно генерировать для каждого сервера отдельные SSH-ключи, вполне можно использовать одни и те же ключи на множестве серверов, это безопасно и очень удобно.

Подключение к серверу (VPS /VDS )

Первичное подключение к серверу

После генерации SSH-ключей нужно настроить подключение к серверу (в нашем случае VPS) с помощью сгенерированных ключей.

Изначально, подключение к новому серверу происходит с данными, которые прислал хостинг-провайдер (в простонародье – Хостер).

Открываем окно терминала – файл putty.exe (в моем случае putty_portable.exe)

Основное окно окно консоли PuTTY
Основное окно окно консоли PuTTY

В разделе «Сеанс» вводим Имя хоста или IP -адрес и Порт (как правило, по умолчанию, 22) полученные от хостера (обычно присылает на электронную почту).

Тип соединения: выбираем SSH

Примечание: В разделе «Окно» можно настроить размер окна, в пикселях.

Нажимаем на кнопку «Соединиться» - появится вот такое окно:

Окно консоли PuTTY при первом подключении к серверу выдает предупреждение
Окно консоли PuTTY при первом подключении к серверу выдает предупреждение

Не стоит пугаться этого предупреждения – оно появляется только при первом подключении.

Нажимаем на кнопку «ДА» т.е. мы доверяем этому серверу.

Если появится вот такая ошибка – не пугаемся, это просто долго не вводили данные:

Окно консоли PuTTY, подключенное к серверу, с ошибкой если долго не вводили данные
Окно консоли PuTTY, подключенное к серверу, с ошибкой если долго не вводили данные

Закрываем окно с ошибкой и окно терминала, и снова подключаемся к серверу.

После того как мы подтвердили доверие серверу появится вот такое окно:

Окно консоли PuTTY с ожиданием ввода логина
Окно консоли PuTTY с ожиданием ввода логина

На этом этапе нас просят ввести логин.

Вводим Login полученный от хостера, в большинстве случаев это root (маленькими буквами), и нажимаем на клавиатуре клавишу «Enter».

Примечание: root - это пользователь с наивысшими правами! Производить рядовую, ежедневную, работу от имени root является НЕ безопасным, но об этом дальше - всему своё время.

Окно консоли PuTTY с ожиданием ввода пароля от имени пользователя введенного ранее
Окно консоли PuTTY с ожиданием ввода пароля от имени пользователя введенного ранее

На этом этапе нужно ввести пароль. Вводим пароль полученный от хостера и нажимаем «Enter».

Внимание: Отображение ввода пароля не происходит – ни точек, ни звёздочек, ничего иного и это нормальное явление. Вводим пароль и жмем «Enter».

В окно консоли вставка, ранее скопированного, пароля происходит однократным нажатием Правой Кнопки Мыши (далее ПКМ).

Примечание: Копирование в окне консоли происходит Левой Кнопкой Мыши (далее ЛКМ), даже обычное выделение текста ЛКМ приведет к его копированию.

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

Окно консоли PuTTY с ожиданием ввода временного (действующего) пароля
Окно консоли PuTTY с ожиданием ввода временного (действующего) пароля

На этом этапе нужно повторить временный пароль и нажать «Enter».

Появится запрос нового пароля:

Окно консоли PuTTY с ожиданием ввода нового пароля
Окно консоли PuTTY с ожиданием ввода нового пароля

На этом этапе нужно придумать и ввести новый пароль и нажать «Enter»

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

Появится запрос повторить придуманный пароль. Повторяем пароль и попадаем на сервер – вот так это выглядит:

Окно консоли PuTTY с ожиданием ввода команд (мы уже на сервере)
Окно консоли PuTTY с ожиданием ввода команд (мы уже на сервере)

С этого момента пароль выданный хостером является не действительным т.к. он был временным. Все последующие входы на сервер (до полной настройки) будут по новому паролю.

Настройка входа по SSH-ключу

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

Сначала нужно проверить существует ли на сервере, у пользователя root, директория (в простонародье - «папка» или «каталог») «.ssh» так как не у каждого хостера данная директория создается автоматически.

Для этого вводим команду и нажимаем «Enter»:

ls -la

это отображение содержимого текущей директории.

Появится вот такой список и среди этого списка должна присутствовать директория «.ssh»:

Директория «.ssh» существует и создавать её не требуется
Директория «.ssh» существует и создавать её не требуется

Если такой директории нет - ее нужно создать!

Для создания директории «.ssh» вводим команду:

mkdir .ssh

обратите внимание на то, что перед ssh стоит точка.

Если папка существует вводить команду «mkdir .ssh» не требуется, но если вы ввели команду, при уже имеющейся директории, с точно таким же названием ничего страшного не произойдет - сервер сообщит, что такая директория уже существует:

Директория «.ssh» уже существует
Директория «.ssh» уже существует

Идём дальше!

Для сведения: Переход в корневую директорию текущего пользователя осуществляется вводом команды (ввести команду и нажать «Enter»):

cd

Введена команда «cd» и где бы мы не находились нас переместит в корневую директорию

После ввода команды «cd» система переместила в корневую директорию
После ввода команды «cd» система переместила в корневую директорию

В данном случае ничего не изменилось так как мы и так находимся в корневой директории.

Ввод следующей команды нужно делать находясь в корневой директории пользователя root.

Пишем в консоли (можно копировать и вставлять):

cat >> .ssh/authorized_keys << EOF

Нажимаем «Enter», затем вставляем публичный ключ, еще раз нажимаем «Enter», пишем:

EOF

и еще раз нажимаем «Enter».

*Примечание: Публичный ключ – это всё, от начала до конца, что находится в этом поле:

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

*Обращаю внимание на маленькую стрелочку справа – ей я хотел сказать то, что ключ длинный и он не умещается в выделенное поле т.е. нужно зажать ЛКМ на самом начале ключа, начиная с ssh-rsa и тянуть мышкой вниз пока не выделится весь ключ.

После того как мы ввели команду, вставили ключ, ввели EOF (естественно после каждого этапа нажимая «Enter») – ключ добавлен на сервер.

Можно пойти немного другим путем:

В ниже представленном блоке, аккуратно меняем мой SSH-ключ на свой (SSH-ключ это всё что между EOF и EOF), выделяем весь блок (включая саму команду - от «cat» до второго «EOF»), копируем и вставляем в окно консоли (при выделении и копировании, случайно, не зацепите лишний пробел так как пробел – это тоже символ):

cat >> .ssh/authorized_keys << EOF
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAgEAg4MAL6YHXew1bq8YLp0fuWqDOCY7sA2t8SglVYJ1AXqcc76txvhu6wL1G5ZYCzW/KfeMySQEgYgbiib8WtCOL+J3gIa1hdrzfEAqUaiK+lfpa0zsqW9IYRPQyBUfEW91YAki32i3eJLmFDKtYltssMXgrTHmNGVwcpL0P+zbC5Q2SF8vLjDIdCVTaA/p/VsUnmF0bvqM4ej38D/WTtWmCixMg9CP7Nq0dmkDI0mxp9axACy7AXcu0Zxn651bvwPTa+4BIZ/m2/qJI4jVsN1M7f1RlDWZH3+Nay7koURkIyafWyx1eBB7P8Y1K5lyZW9htdOtKfCh6IRwLyvLnq7OkNiI4AdyeaOLTz2fDkI4ar+hSpOiLrEPadRFczdb2W4JiM/anYiPNfwtzo66gBmIW4bmpMW2HeTr+6k7glb9J7tSzE3vD+TtWnPaal03sh7AOYdHABgdY25lQviE4hkTfn+z3ZR5zgcS0UfmSCEYGqmKX/BurPwl8ihRcO8PipxzehqwDQ5vyrrInPGntdJjc4rdwlMc570PTtVnAtDGZ5OIQDBL3hb0VkuDRqvRCdPYFqjnOM4yE7CHuTkWuDf3ukDy4X/jrCYEc/mBzY/Ngsj9+bCxNUqfOwNSL/2h811+G1Y2IYLYXSU8SODeT0gRk1ovzvdPPNLrsOCvZEIpA0s= rootSSH-test
EOF

Нажимаем «Enter»

Ниже на скриншоте я добавил открытый SSH-ключ на сервер вставив консоль целый блок:

Окно консоли PuTTY после вставки SSH-ключа целым блоком (ожидает новой команды)
Окно консоли PuTTY после вставки SSH-ключа целым блоком (ожидает новой команды)

Отлично, ключ добавлен!

Для удобства очищаем экран – для этого нажимаем сочетание клавиш «Ctrl+L» и экран консоли очистится, вернее вся писанина переместится за пределы экрана консоли, но ее всё равно можно посмотреть пролистав экран колёсиком мышки (это можно делать в любой момент когда нужно чистое окно консоли):

Чистое окно консоли PuTTY (после нажатия «Ctrl+L») - ожидает ввода новой команды
Чистое окно консоли PuTTY (после нажатия «Ctrl+L») - ожидает ввода новой команды

Далее проверим добавился ключ на сервер или нет.

Поочередно вводим команды и нажимаем «Enter»

cd .ssh

это мы попали в директорию «.ssh», в которой должен был создаться файл с нашим публичным SSH-ключом.

ls -la

это отображение содержимого текущей директории.

Окно консоли PuTTY - файл authorized_keys создан
Окно консоли PuTTY - файл authorized_keys создан

Видим, что файл «authorized_keys» существует.

Далее можем проверить содержимое файла – для этого вводим команду и нажимаем «Enter»

cat authorized_keys

Отобразится содержимое файла «authorized_keys»:

Окно консоли PuTTY - содержимое файл authorized_keys
Окно консоли PuTTY - содержимое файл authorized_keys

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

Проверка соединения по SSH-ключу

Сейчас нужно проверить само подключение по SSH-ключу, для этого полностью закрываем окно консоли, если открыто и открываем PuTTY - файл putty.exe (в моем случае putty_portable.exe)

Переходим в раздел «Соединение», далее в подраздел «SSH»

В разделе «SSH» нужно убедиться в том, что предпочтительная версия SSH: «SSH-2»:

Окно консоли PuTTY - подраздел «SSH»
Окно консоли PuTTY - подраздел «SSH»

Далее, в подразделе «SSH» есть еще один подраздел – «Аутентификация»:

Окно консоли PuTTY - подраздел «Аутентификация»
Окно консоли PuTTY - подраздел «Аутентификация»

Здесь нужно нажать кнопку «Обзор», далее найти и выбрать ранее сохраненный приватный SSH-ключ.

Примечание: Путь к ключу к всех разный – ищите куда сохраняли SSH-ключи при их создании.

Возвращаемся в раздел «Сеанс» вводим имя хоста (или IP -адрес) полученный от хостера, в моем случае это 135.181.193.125

Окно консоли PuTTY - раздел «Сеанс»
Окно консоли PuTTY - раздел «Сеанс»

Тип соединения: SSH

Управление сеансами: Вводим, абсолютно, любое имя (хоть абра-кадабру) и жмем кнопку «Сохранить».

Делается это для того, чтобы в последствии каждый раз не настраивать PuTTY для входа на сервер.

После того, как все настроили и сохранили нажимаем кнопку «Соединиться» (в английской версии – кнопка «Open»).

Вводим Логин (обязательно тот логин ключ которого добавлен при соединении, другой не подойдёт если все настроено верно):

Ожиданием ввода логина SSH-ключ которого добавлен при соединении
Ожиданием ввода логина SSH-ключ которого добавлен при соединении

Я, при создании SSH-ключей, заполнял поле «Комментарий» и в моем случае отображается этот комментарий, и я понимаю, что сервер запрашивает у меня пароль именно от этого SSH-ключа:

Запрос пароля от SSH-ключа «rootSSH-test» - именно так я назвал его в комментарии
Запрос пароля от SSH-ключа «rootSSH-test» - именно так я назвал его в комментарии

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

Вводим пароль НЕ от пользователя «root» (тот который мы вводили при замене временного пароля выданного хостером), а от самого SSH-ключа.

После ввода пароля от SSH-ключа мы попадаем на сервер в корневую директорию пользователя, в данном случае пользователя «root»:

Сервер ожидает ввода команды, вход на сервер выполнен ИМЕННО с SSH-ключом
Сервер ожидает ввода команды, вход на сервер выполнен ИМЕННО с SSH-ключом

Замечательно, теперь мы знаем, что соединение по SSH-ключу работает нормально.

ВАЖНО! Для каждого пользователя нужно создавать отдельные SSH-ключи!

На этом первая часть данной инструкции (статьи) подошла к концу, но это далеко не конец.

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

Пожертвования и благодарность:

Яндекс (Ю.Money): https://sobe.ru/na/nuzhdy_Andrey_N

IDNA: 0x5d69be52a201f9d0a2f3ec49060112811a63e4d1