Ubuntu VPS
В этом посте, будет описание настройки 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
- Включаем запрет по умолчанию, на входящие.
- Разрешаем исходящие.
- Открываем 2128 порт для доступа по SSH (на всех интерфейсах).
(vps)$ sudo ufw default deny incoming (vps)$ sudo ufw default allow outgoing (vps)$ sudo ufw allow 2128
- Включаем UFW.
- Cмотрим заданные правила.
- Смотрим статус службы 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}
.