Публикация

Первые 5 минут на сервере

Купили VPS, получили от провайдера пароль root и ip-адрес. А дальше что?

Первым делом

Заходим на сервер первый и последний раз под рутом

1
ssh root@ip

Обновляемся

1
apt update && apt upgrade -y

Устанавливаем минимально нужное ПО

1
apt install sudo ufw nano wget fish neofetch ncdu btop fail2ban

Создаем пользователя

1
useradd -m -G sudo -s /usr/bin/fish odmin && passwd odmin

Здесь я для пользователя указываю оболочку fish-shell, к которой я привык

Проверяем сетевые соединения

1
ss -tulpan

На этом этапе ожидаем увидеть только наше соединение на 22 порту.

Если соединений больше - это повод уже на этом этапе озаботится что именно и куда подключается с нашего девственного сервера.

Сделаем сервер чуть безопаснее

Отключаем возможность логиниться под рутом

1
nano /etc/ssh/sshd_config

Меняем значение параметра PermitRootLogin указываем no

Настроим файервол, разрешив любые подключения только со своего ip-адреса

1
ufw allow from 1.2.3.4

1.2.3.4 - ваш статический ip, с которого подключаетесь к VPS

Активируем файервол

1
ufw enable

И проверяем

1
ufw status verbose

Должны увидеть статус active и соединения разрешены любые Anywhere с нашего ip-адреса 1.2.3.4

1
2
3
4
5
6
7
8
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 и заходим под созданным ранее пользователем

1
ssh odmin@ip

Добавим авторизацию по ключам

1
2
mkdir .ssh
nano .ssh/authorized_keys

Добавляем в файл authorized_keys наши публичные ключи

Завершаем сессию exit или Cntrl+d и заходим еще раз

1
ssh odmin@ip

В этот раз вход должен пройти без запроса пароля

Интереса ради можем проверить, кто пытался зайти на наш сервер, пока мы его настраивали

1
2
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

Перезагружаемся

1
sudo reboot

Базовая настройка выполнена

Второстепенные настройки

Настройка UTF-8 локали

1
sudo dpkg-reconfigure locales
1
2
3
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

Меняем имя нашего сервера

1
sudo nano /etc/hostname

Настраиваем часовой пояс

1
sudo timedatectl set-timezone Europe/Moscow

Еще у нас установлены дополнительные утилиты, у каждой есть свои настройки, но можно пользоваться и параметрами по-умолчанию

  • neofetch или более современный fastfetch - отображение системный информации
  • btop - монитор системных ресурсов
  • fail2ban - автобан тех ip-адресов, кто пытается подбирать пароли
  • ncdu - отображение размера папок

Итог

  • создали пользователя и отключили root
  • установили и настроили файервол, разрешив подключения пока только со своего ip-адреса
  • настроили авторизацию по ключам
  • настроили локаль, имя сервера и часовой пояс
  • установили дополнительные утилиты
Публикация защищена лицензией CC BY 4.0 .