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
Безопасность аккаунта Beget
На данный момент в наш аккаунт на хостинге может попасть любой кто знает пароль и логин.
Если они сложные - это маловероятно. Но, чтобы полностью себя обезопасить от такой участи, можно включить двухфакторная авторизацию. Переходим в ПУА - Настройки аккаунта.
Как видим мы можем подключить:
- Авторизацию по Email (каждый раз на почту будет приходить пароль, к-рый нужно будет ввести). Неплохой вариант, главное чтобы почта тоже была достойно обезопасена от взлома (например, та же двухфакторная авторизация)
- Авторизация по SMS (услуга платная, но по-удобнее).
Также можно ограничить доступ к аккаунту по IP. (это подойдёт если у вас выделенный IP-адрес).
Также в этом выпуске: