VPS Ubuntu - начальная настройка

2023.02.20
Вот у нас появилась VPS на Ubuntu, и что нужно сделать с ней в первую очередь чтобы обезопасить от воздействия из вне рассмотрим в данной статье.

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

А где взять VPS?

Не реклама, этот текст не оплачен.

Я некоторое время искал дешевые VPS, требования к безопасности и надежности были малые. Долгое время пользуюсь firstbyte.ru реально дешевые и надежные VPS, безопасность еще не удалось протестировать. ЛК не такой красивый как у гигантов, но со своими функциями справляется. Пока доволен.

Обновления

$ sudo apt update
$ sudo apt upgrade

Имя хоста

Меняем имя хоста на нужное:

$ sudo nano /etc/hostname

Нужно будет перезагрузить чтобы имя хоста поменялось.

root пароль

Меняем пароль root пользователя (чтобы тот который в панеле был неактуален, а самый актуальный был только у нас):

$ sudo passwd root

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

Новый sudo пользователь

Многие действия не требуют root прав, поэтому создадим нового пользователя и предоставим ему права суперпользовтаеля через sudo:

$ sudo adduser username
$ sudo usermod -aG sudo username

Желательно задать пароль для пользователя, так будет дополнительное препятствие для злоумышленика, и стоп-сигнал при совершинии sudo действий.

Поменять пароль пользователю можно так:

$ sudo passwd username

Переключимся на нашего нового пользователя:

$ sudo su username

Заранее на клиентской машине нужно подготовить ssh ключ для доступа на сервер:

$ ssh-keygen

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

Теперь предоставим пользователю доступ по ssh, добавив публичный ключ на VPS:

# создаем директорию если ее еще не было
$ [ -d ~/.ssh] || mkdir ~/.ssh -m 700

# открываем файл с ключами пользователя
$ nano ~/.ssh/authorized_keys

Вставляем при помощи Ctrl+Shift+V ключ, затем сохраняем Ctrl+S и закрываем Ctrl+X.

ssh ключей для одного и того же пользователя может быть несколько.

Заходим на VPS:

$ ssh -i ~/.ssh/keyname username@x.x.x.x

Удаление пользователя

$ sudo userdel -rf username 

Флаги:

$ sudo killall -u username

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

Что делать с root пользователем?

Предлагаю посмотреть что происходит в логах ssh:

$ sudo journalctl _SYSTEMD_UNIT=ssh.service -xe

В логах ssh множество записей о неудачных попытка входа, с разных адресов, и кстати для разных пользователей, но root самый популярный. Это сканеры уязвимостей. Когда дыра будет найдена или подобран пароль, тогда третьей лицо получит доступ на сервер. Это плохо.

Неудачная попытка входа по ssh

Открываем конфиг ssh:

$ sudo nano /etc/ssh/sshd_config

Здесь мы должны найти (Ctrl+W) и указать следующие значения директивам:

Выполнять sudo действия необходимо от ранее созданного пользователя username, например переключившись на пользователя root:

$ sudo su root

Сохраним файл (Ctrl+S) перезагрузим демон ssh чтобы изменения вступили в силу:

$ sudo systemctl restart ssh

Приветствие при входе

При входе по ssh можно наблюдать такое сообщение:

Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-154-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Last login: Wed Jan 25 11:42:35 2023 from x.x.x.x

Эта информация выводится при помощи bash файлов, которые находятся по пути /etc/update-motd.d, (файлы можно удалить).

Это можно заменить на что-то более информативное (здесь хороший набор) и/или приятное для глаз. Например можно воспользоваться сервисами генераторами ASCII баннеров этим или этим.

Можно сделать что-то типа такого:

Красивое и информативное приветствие при входе

Итог

Базовая настройка завершена, оказывается не так уж и сложно, только нудно делать это руками на каждой машине в кластере, можно посмотреть в сторону Ansible.

А что дальше - зависит от потребностей, можно например настроить VPN.

В телеграм канале DevOps от первого лица можно оставить комментарий или почитать интересные истории из практики DevOps