VPS Ubuntu - начальная настройкаУже несколько лет пользуюсь услугой VPS от разных провайдеров. Но недавно понадобилось собрать кластер VPS для микросервисной архитектуры. Первый вопрос - что делать с новоиспеченной VPS? Разберем в статье.
Не реклама, этот текст не оплачен.
Я некоторое время искал дешевые VPS, требования к безопасности и надежности были малые. Долгое время пользуюсь firstbyte.ru реально дешевые и надежные VPS, безопасность еще не удалось протестировать. ЛК не такой красивый как у гигантов, но со своими функциями справляется. Пока доволен.
$ sudo apt update
$ sudo apt upgrade
Меняем имя хоста на нужное:
$ sudo nano /etc/hostname
Нужно будет перезагрузить чтобы имя хоста поменялось.
Меняем пароль root пользователя (чтобы тот который в панеле был неактуален, а самый актуальный был только у нас):
$ sudo passwd root
Пароль желательно не забывать, но если вдруг забуем тогда зайти можно через VNC, которую предоставляет хостер, неудобно, но базовый минимум можно сделать.
Многие действия не требуют root прав, поэтому создадим нового пользователя и предоставим ему права суперпользовтаеля через sudo:
$ sudo adduser username
$ sudo usermod -aG sudo username
Желательно задать пароль для пользователя, так будет дополнительное препятствие для злоумышленика, и стоп-сигнал при совершинии
sudoдействий.
Поменять пароль пользователю можно так:
$ sudo passwd username
Переключимся на нашего нового пользователя:
$ sudo su username
Заранее на клиентской машине нужно подготовить ssh ключ для доступа на сервер:
$ ssh-keygen
Программа задаст нужные вопросы, в том числе путь до файла ключа. В итоге будет сгенерировано 2 ключа по указанному пути:
.pubТеперь предоставим пользователю доступ по 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
Флаги:
r - удалить домашнуюю директироюf - принудительное удаление пользователя (даже с активной сессией) и уничтожение всех запущенных им процессов, либо так:$ sudo killall -u username
Если в имени пользователя есть кириллица, то для удаления такого пользователя для начала нужно поправить его имя в следующих файлах:
/etc/shadow/etc/passwdПредлагаю посмотреть что происходит в логах ssh:
$ sudo journalctl _SYSTEMD_UNIT=ssh.service -xe
В логах
sshмножество записей о неудачных попытка входа, с разных адресов, и кстати для разных пользователей, ноrootсамый популярный. Это сканеры уязвимостей. Когда дыра будет найдена или подобран пароль, тогда третьей лицо получит доступ на сервер. Это плохо.

Открываем конфиг ssh:
$ sudo nano /etc/ssh/sshd_config
Здесь мы должны найти (Ctrl+W) и указать следующие значения директивам:
PasswordAuthentication no - запрещаем вход по паролюPermitRootLogin no - запрещает вход rootВыполнять 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.