В этом посте, будет описание настройки VPS, на базе Ubuntu 22.04.

Погнали.

Обозначения

$ - выполнением комадны, под учеткой пользователя.
# - выполнением комадны, под root, на локальном хосте (домашнем компуктере например).
$ - выполнением комадны, под учеткой пользователя, на локальном хосте (домашнем компуктере например).
(vps)$ - выполнением комадны, под учеткой пользователя, на VPS.

Настройка VPS

Выбираем VPS провайдера. Я остановился на Timeweb Cloud.
Конфигурация VPS: Proc 1*3.3ГГц / RAM 1Гб / NVMe 15Гб / Net 200 Мбит.
ОСь: Ubuntu 22.04.

Настраиваем рабочую учетку на VPS

Через веб-консоль, на сайте провайдера VPS, логинимся в VPS под root. У Timeweb Cloud там все удобной сделано.

Добавляем учетку user123 и сразу добавляем эту учетку в группу sudo.

(vps)# useradd -m user123
(vps)# user123
(vps)# usermod -aG sudo user123

Настройки безопасности VPS

SSH

На локальном компе, генерим ssh-ключ и сразу копируем его на VPS.

$ ssh-keygen -t ed25519 -C "VPS" -f ed25519_vps 
$ ssh-copy-id -i ~/.ssh/ed25519_vps.pub user123@<vps-ip>
$ ssh -i .ssh/ed25519_vps user123@<vps-ip> 

<vps-ip> - это публиный IP4-адресс, VPS.

Далее, включаем доступ только по ssh-ключам, меняем стандартный порт и разрешаем доступ только нашей учетке, на VPS. Для редактирования файлов, я использую vim. Если не знакомы с vim, то лучше попробуйте nano.

(vps)# vim /etc/ssh/sshd_config

Оставляем раскомментированными только указанные ниже строчки.

Port 2128
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
AllowUsers user123

Перезапускаем ssh-сервис.

(vps)# systemctl restart sshd.service

После этих настроек, можно логинится по ssh на VPS и закрывать Web-консоль.

$ ssh -P 2128 -i path/to/generated/ed25519_vps user123@<vps-ip>

Можно вообще запретить root учетку. Но это по желанию. Я не стал заморачиваться.

Обновляем ОСь и меняем shell

Обновляемся.

(vps)$ sudo apt update
(vps)$ sudo apt upgrade

Меняем sh на bash. chsh запросит указать новый шел, надо ввести /bin/bash.

(vps)$ chsh 

Защита SSH от подбора пароля. Fail2ban

У Timeweb Cloud, есть статья по настройке Fail2Ban. Уже не помню, но кажется я ей пользовался при настройке Fail2Ban на VPS.

Устанавливаем Fail2Ban.

(vps)$ sudo apt install fail2ban

Создаем фалй настроек, со следующим содержимым.

(vps)$ sudo nano /etc/fail2ban/jail.local
[sshd]  
enabled  = true  
port = 2128
findtime = 120  
maxretry = 3  
bantime = 43200

Стартуем сервис fail2ban:

(vps)$ sudo systemctl restart fail2ban.service

Смотрим статус:

(vps)$ sudo fail2ban-client status sshd

Если вдруг, сами попали в бан, то заходим в web-консоль, смотрим статус (как показано выше), находим свой ip и убираем его из бана.

(vps)$ sudo fail2ban-client unban <ip>

Настройка фаервола. UFW

Статья на Timeweb Cloud. Еще одна статья.

UFW должен быть установлен на Ubuntu из коробки.

Отключаем добавление IPv6 правил.

(vps)$ sudo nano /etc/default/ufw

Строчку IPV6=yes меняем на IPV6=no

  1. Включаем запрет по умолчанию, на входящие.
  2. Разрешаем исходящие.
  3. Открываем 2128 порт для доступа по SSH (на всех интерфейсах).
    (vps)$ sudo ufw default deny incoming
    (vps)$ sudo ufw default allow outgoing
    (vps)$ sudo ufw allow 2128
    
  4. Включаем UFW.
  5. Cмотрим заданные правила.
  6. Смотрим статус службы UFW
    (vps)$ sudo ufw enable
    (vps)$ sudo ufw status numbered verbose
    (vps)$ sudo systemctl status ufw.service
    

Смена имени хоста

Для удобства, можно поменять имя хоста на VPS. Удобство в том, что в приглашении коммандной строки (шеле), теперь будет написано заданное имя хоста, вместо сгенерированного провайдером.
Посмотреть текущее имя хоста, можно командой hostname или hostnamectl.
Поменять имя хоста, можно командой sudo hostnamectl set-hostname {new-name-here}.