Купили VPS, получили от провайдера пароль root и ip-адрес. А дальше что?
Первым делом#
Заходим на сервер первый и последний раз под рутом
ssh root@ip
Обновляемся
apt update && apt upgrade -y
Устанавливаем минимально нужное ПО
apt install sudo ufw nano wget fish neofetch ncdu btop fail2ban
Создаем пользователя
useradd -m -G sudo -s /usr/bin/fish odin && passwd odin
Проверяем сетевые соединения
ss -tulpan
На этом этапе ожидаем увидеть только наше соединение на 22 порту.
Сделаем сервер чуть безопаснее#
Отключаем возможность логиниться под рутом
nano /etc/ssh/sshd_config
Меняем значение параметра PermitRootLogin указываем no
Настроим файервол, разрешив любые подключения только со своего ip-адреса
ufw allow from 1.2.3.4
1.2.3.4 - ваш статический ip, с которого подключаетесь к VPS {: .prompt-info } Активируем файервол
ufw enable
И проверяем
ufw status verbose
Должны увидеть статус active и соединения разрешены любые Anywhere с нашего ip-адреса 1.2.3.4
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
Anywhere ALLOW IN 1.2.3.4
Завершаем сессию под рутом exit или Cntrl+d и заходим под созданным ранее пользователем
ssh odin@ip
Добавим авторизацию по ключам
mkdir .ssh
nano .ssh/authorized_keys
Добавляем в файл authorized_keys наши публичные ключи
Завершаем сессию exit или Cntrl+d и заходим еще раз
ssh odin@ip
В этот раз вход должен пройти без запроса пароля
sudo grep "Failed password" /var/log/auth.log | cut -d ' ' -f 9 | sort | uniq -c | sort -rh
sudo grep "Invalid user" /var/log/auth.log | cut -d ' ' -f 9 | sort | uniq -c | sort -rh
Перезагружаемся
sudo reboot
Базовая настройка выполнена
Второстепенные настройки#
Настройка UTF-8 локали
sudo dpkg-reconfigure locales
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
Меняем имя нашего сервера
sudo nano /etc/hostname
Настраиваем часовой пояс
sudo timedatectl set-timezone Europe/Moscow
Еще у нас установлены дополнительные утилиты, у каждой есть свои настройки, но можно пользоваться и параметрами по-умолчанию
neofetchили более современныйfastfetch- отображение системный информацииbtop- монитор системных ресурсовfail2ban- автобан тех ip-адресов, кто пытается подбирать паролиncdu- отображение размера папок
Итог#
- создали пользователя и отключили root
- установили и настроили файервол, разрешив подключения пока только со своего ip-адреса
- настроили авторизацию по ключам
- настроили локаль, имя сервера и часовой пояс
- установили дополнительные утилиты
