Опубликовано

Настройка VPS/VDS сервера с нуля


Управление виртуальным сервером осуществляется с помощью командной строки. Для этих целей будем использовать SSH-клиент Termius.После покупки vps обычно вы получаете пароль от рута и ip адрес вашего севера, используйте их для входа.

Terminal
ssh root@your_ip

Подключаемся на сервер, нажимаем yes и вводим пароль. И начинаем последовательно вводить команды:

Terminal
###### ЗАЩИТА SSH
# Обновление списка пакетов
apt update
# Обновление всех пакетов до актуальных версий
apt upgrade -y
# Смена пароля root
passwd root
### Ввод нового пароля для root
# Добавление нового пользователя
adduser user
#### Ввод пароля для user
# Добавляем пользователя user в группу sudo
usermod -aG sudo user
# Устанавливаем редактор nano, если не установлен
apt install nano -y
# Открываем конфиг SSH-сервера
nano /etc/ssh/sshd_config
# Находим строку #Port 22, расскомментируем и устанавливаем кастомный порт, например 2222
# Рекомендуется выбрать порт из диапазона 102449151, например, 47122.
# Находим строку PermitRootLogin yes и меняем на PermitRootLogin no — запрещаем вход по SSH для root.
# Сохраняем файл: нажимаем CTRL+O и затем ENTER для подтверждения.
# Закрываем файл с помощью CTRL+X.
# Перезапуск службы SSH
systemctl restart ssh
# Переход на пользователя user
su - user
# Создание директории .ssh для ключей
mkdir -p ~/.ssh
# Установка прав доступа на директорию .ssh
chmod 700 ~/.ssh
# Создаем/открываем файл authorized_keys в редакторе nano
nano ~/.ssh/authorized_keys
# Создаем пару ключей для SSH
ssh-keygen -t ed25519 -C "mykey"
### Нажимаем Enter, чтобы сохранить ключи в стандартное место и под стандартными именами
### Придумываем и вводим пароль для защиты приватного ключа SSH
### Создаются два файла:
### id_ed25519.pub — публичный ключ
### id_ed25519 — приватный ключ, его нужно хранить в секрете
# Выводим содержимое публичного ключа
cat ~/.ssh/id_ed25519.pub
### Копируем этот ключ и вставляем его на сервере в файл ~/.ssh/authorized_keys
### Сохраняем файл, для сохранения нажимаем CTRL+O и затем ENTER
# Установка прав на файл authorized_keys
chmod 600 ~/.ssh/authorized_keys
# Открываем конфигурацию SSH, пишем sudo, так как нужны права администратора
sudo nano /etc/ssh/sshd_config
### Вводим пароль пользователя user
### Находим строку #PasswordAuthentication yes и меняем на PasswordAuthentication no
### Сохраняем файл, для сохранения нажимаем CTRL+O и затем ENTER
# Перезапуск службы SSH
sudo systemctl restart ssh
# Выходим из-под пользователя user
exit
# Закрываем терминал
exit
### Меняем порт SSH в клиенте на тот, который указали
### Меняем пользователя на user
### Убираем пароль и выбираем авторизацию по ключу
### Создаем ключ в клиенте, в поле label пишем любое название
### В поле Private Key необходимо вставить приватный ключ
### Идем в терминал клиента (например, на Windows) и выводим в терминал приватный ключ
# Выводим в терминал приватный ключ
cat ~/.ssh/id_ed25519
### Копируем приватный ключ и вставляем в клиент SSH в поле Private Key
### Жмем connect, при запросе passphrase вводим пароль от нашего ключа
### Вуаля, у нас работает вход по ключу!

УСТАНОВКА 2FA GOOGLE ДЛЯ SSH

Terminal
###### УСТАНОВКА 2FA GOOGLE ДЛЯ SSH
# Устанавливаем пакет для двухфакторной аутентификации от Google
sudo apt install libpam-google-authenticator -y
# Открываем конфиг SSH-сервера
sudo nano /etc/ssh/sshd_config
### Находим строку #PasswordAuthentication no и меняем на PasswordAuthentication yes
### Сохраняем файл, для сохранения нажимаем CTRL+O и затем ENTER
# Перезапуск службы SSH
sudo systemctl restart ssh
# Настраиваем Google Authenticator
google-authenticator
### Сканируем QR-код или вручную добавляем секретный ключ в приложение Google Authenticator
### Вводим временный код из приложения в терминале для завершения настройки
### Сохраняем резервные коды и отвечаем на вопросы по своему усмотрению (обычно вводим 'y' для активации функций безопасности)
# Открываем конфиг PAM для SSH
sudo nano /etc/pam.d/sshd
### Находим строку @include common-auth и ниже добавляем auth required pam_google_authenticator.so
# Открываем конфиг SSH
sudo nano /etc/ssh/sshd_config
### Ищем строку KbdInteractiveAuthentication no и меняем на KbdInteractiveAuthentication yes
### Проверяем, что UsePAM yes присутствует в конфигурации
### Сохраняем файл, для сохранения нажимаем CTRL+O и затем ENTER
# Перезагрузка сервера для применения настроек
sudo reboot
### Теперь возможен доступ либо по приватному ключу, либо с использованием пароля + 2FA