Первые 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-адреса
- настроили авторизацию по ключам
- настроили локаль, имя сервера и часовой пояс
- установили дополнительные утилиты