SSH-авторизация по ключу

Безопасность —

превыше всего!

Пришло время усилить меры безопасности сервера, VESTA, доступа к ПУА. И первым делом, обезопасим  доступ к VPS-серверу.

 

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

 

Это проще чем может показаться на первый взгляд. Для начала создадим приватный и публичный ключи. Скачиваем программу puttygen

Запускаем программу, жмём Generate и шевелим мышкой пока не заполнится зелёная полоса.

После того как ключи сгенерировались, в поле Key passphrase прописываем наш пароль к приватному ключу (который будет хранится у вас), дублируем пароль в поле Confirm passphrase. Потом сохраняем ключи, для этого жмём Save public key и Save private key соответственно. Приватный ключ сохраните в надёжное место, можете продублировать его в облако, т.к. его утрата чревата потерей доступа к серверу.

На данном этапе у нас уже есть:

- приватный ключ - оставляем у себя на ПК

- публичный ключ - загружаем на VPS (есть два варианта):
1). Простой - загружаем его при создании нового VPS, он автоматически установится.
2). По-сложнее - загружаем его на рабочий VPS вручную.

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

Рассмотрим оба варианта.

1). Загрузка публичного ключа при создании нового VPS:

Нажимаем на кнопку Добавить ключ.

Копируем публичный пароль

Копируем публичный ключ из Puttygen и вставляем его в соответствующее поле. Присвоим ключу любое название (он так будет отображаться в ПУА).

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

Ключ будет установлен при создании VPS. Авторизация на сервер может происходить как по паролю, так и по ключу. Нас это не устраивает, пароль мы отключим.

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

Итак, теперь пробуем войти на сервер с помощью ключа.

 

Заходим через Putty выбираем категорию Connection - SSH - Auth

 

Жмём кнопку Browse и указываем местоположение приватного ключа (у нас на ПК)

Далее возвращаемся в категорию Session вписываем наш IP-адрес (сервера). Жмём Open

Вводим логин root и пароль от ключа (который мы задали при его генерации в puttygen).

 Сейчас авторизация на сервер может происходить как по паролю, так и по ключу. Нас это не устраивает, пароль мы отключим.

 

Для этого заходим на сервер по SFTP - через Firezilla

Переходим по адресу /etc/ssh/ Находим файл sshd_config

/etc/ssh/

Открывает его в любом нормально редакторе кода (например, Notepad++) Просмотр/Правка

 

Находим строчку PasswordAuthentication

 

Меняем значение yes на no

 

Сохраняем изменения в файле, и отправляем его обратно на сервер (с заменой старого).

 

Заходим в терминал и перезапускаем SSH-сервис командой:

service ssh restart

Теперь при попытки зайти по паролю будет вылетать предупреждение

2). Загрузка публичного ключа на созданный VPS

 

Если же у вас уже создан сервер с авторизацией по паролю, тогда заходим через Firezilla по адресу /root/.ssh

 

/root/.ssh

Открываем файл  authorized_keys и вставляем в него содержимое поля public key из puttygen

 

При вставке убеждаемся, что публичный код скопирован полностью. (в начале должно быть ssh-rsa, а в конце название ключа, которое мы дали или  которое было по-умолчанию)

Сохраняем файл, загружаем его обратно на сервер.

Проверяем, нажимаем F5 теперь у файла authorized_keys появился размер отличный от нулевого:

Теперь осталось проверить - войти на сервер через терминал по ключу. А также выключить авторизация по паролю (как было описано в начале главы).

После отключения авторизации по паролю - изменился принцип входа и через FTP-клиент.

Теперь Тип входа выбираем Файл с ключом. А в поле Файл с ключом указываем путь к приватному ключу. Дальше Соединиться. И указываем пароль от приватного ключа во всплывающем окне.

Генерируем сложный пароль

А сейчас изменим пароль для входа в VESTA на очень сложный. В этом нам поможет генератор паролей с энтропией. Переходим на сайт:

Выставляем всё как на картинке внизу. Жмём Генерировать и водим курсором мыши в разные стороны. В итоге нам генерируется пароль длинной в 256 символов. Копируем его к себе как минимум в блокнот, а лучше в менеджер паролей типа KeePass.

После того, как новый пароль создан, изменяет его в VESTA.

 

Заходим в редактор профиля пользователя.

Вставляет и сохраняем изменения.

Файрвол в VESTA

В панели управления VESTA (в нашей конфигурации) как мы уже знаем есть Файрвол.

Сейчас мы его рассмотрим. Переходим во вкладку ФАЙРВОЛ

Видим список правил для различных портов. По-умолчанию они открыты для всех IP-адресов.

Для примера, закроем вход в панель VESTA (порт 8083) от всех IP-адресов кроме IP своего ПК.

Это имеет смысл если ваш интернет-провайдер закрепил за вами выделенный IP-адрес.

 

Часто эта услуга платная, но не дорогая.

Находим нужное правило, и открываем для Редактирования

Далее Действие - ACCEPT означает что порт будет открыт только для определённых IP.
В поле IP адрес пишем свой IPшник. Сохраняем правило.

Также в нашей конфигурации VESTA установлена программа-фаервол fail2ban с базовыми настройками (например, бан IP-адреса на 5 минут после 5 неправильных вводов паролей).

 

Чтобы проверить список заблокированных IP, нажимаем показать FAIL2BAN

Как видим список пока пуст, но мы можем вручную внести IP - Заблокировать IP

Как видим список пока пуст, но мы можем вручную внести IP - Заблокировать IP

Безопасность аккаунта Beget

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

 

Как видим мы можем подключить:
- Авторизацию по Email (каждый раз на почту будет приходить пароль, к-рый нужно будет ввести). Неплохой вариант, главное чтобы почта тоже была достойно обезопасена от взлома (например, та же двухфакторная авторизация)

- Авторизация по SMS (услуга платная, но по-удобнее).

 

Также можно ограничить доступ к аккаунту по IP. (это подойдёт если у вас выделенный IP-адрес).

Также в этом выпуске: