
Если вы арендовали свой первый VDS-сервер и не знаете, с чего начать, это нормально — поначалу всё может казаться сложным: терминал, настройки, безопасность… Чтобы упростить старт, я собрал список утилит, которые стоит установить в первую очередь. Они помогут настроить сервер под ваши задачи, повысят удобство его использования и защитят от потенциальных угроз.
▍ Fail2Ban
Начнём с Fail2Ban. В первую очередь, данное ПО предназначено для повышения безопасности вашего VDS-сервера. Программа ведёт логирование и автоматически блокирует IP-адреса, с которых производится подозрительная активность (например, в случае брутфорса, когда кто-то пытается получить доступ к вашему серверу путём перебора паролей).
Для установки утилиты выполним следующие команды:
sudo apt update
sudo apt install fail2ban -y
Далее создаем файл с конфигурацией и открываем его:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
В файле необходимо найти [sshd] и прописать следующие правила:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 3
findtime = 10m
bantime = 5m

- enabled = true (включает защиту для ssh)
- port = ssh
- logpath = /var/log/auth.log (путь до папки с логами авторизации)
- maxretry = 3 (максимальное количество попыток, после которых происходит блокировка)
- bantime = 10m (время, на которое блокируется IP. В данном примере это 10 минут)
- findtime = 5m (промежуток, в котором считаются неудачные попытки входа. Т. е. если в течение 5 минут будет 3 неудачных попытки входа, IP заблокируется)
Сохраняем и закрываем файл, после чего перезапускаем Fail2Ban с помощью команды:
sudo systemctl restart fail2ban
Теперь, когда при попытке подключиться к серверу вводим пароль неправильно 3 раза, IP блокируется, а появляется таймаут.

▍ UFW
UFW (Uncomplicated Firewall) — это упрощённая оболочка к встроенному файрволу Linux — iptables. Используется он для управления входящими и исходящими подключениями. С помощью данного файрвола можно ограничить доступ к VDS-серверу по IP-адресу или портам, блокировать лишние подключения и открывать доступ только к определённым портам (например, оставить открытым порт 22 для доступа к серверу по SSH и порты 80/433 — для работы сайтов).
Для установки UFW выполним команду:
sudo apt install ufw
В момент первой настройки, чтобы случайно не ограничить себе доступ к серверу, лучше отключить файрвол:
sudo ufw disable
Далее в первую очередь разрешаем доступ к серверу по SSH, чтобы после включения файрвола не обрезать себе доступ к серверу:
sudo ufw allow 22/tcp
В случае, если на сервере размещён сайт, необходимо также разрешить к нему доступ. Для этого добавляем правила:
sudo ufw allow 80/tcp #для HTTP
sudo ufw allow 443/tcp #для HTTPS
Если необходимо ограничить доступ к серверу и позволить подключаться к нему только с определённого IP-адреса, добавляем:
sudo ufw allow from 1.2.3.4 #где 1.2.3.4 это ваш IP
И включаем файрвол командой:
sudo ufw enable
Отлично. Теперь, чтобы проверить, какие правила настроены на сервере, достаточно ввести команду:
sudo ufw status numbered

▍ htop
Далее рассмотрим htop, продвинутую версию встроенной утилиты для мониторинга ресурсов сервера top. Утилита показывает нагрузку на процессор, оперативную память, загруженность системы, а также даёт возможность управлять процессами (например, убить зависший процесс).
Из ключевых отличий от top стоит отметить более удобный и наглядный интерфейс, возможность взаимодействовать с процессами с помощью мыши, удаление процесса одной кнопкой.
Для установки выполняем команду:
sudo apt install htop
А для запуска команду:
htop

В самом верху мы видим:
- Загруженность каждого ядра
- Mem — загруженность оперативной памяти
- Swp — использование виртуальной памяти (когда не хватает оперативной)
- Tasks — количество единовременно запущенных процессов
- Load average — средняя нагрузка за 1, 5 и 15 минут
- Uptime — время работы VDS без перезагрузки.
Ниже представлен список самих процессов. Ключевые значения:
- PID — ID процесса
- USER — под каким пользователем был запущен процесс
- RES — количество потребляемой оперативной памяти
- CPU% / MEM% — нагрузка на процессор и память
- TIME+ — время работы процесса
- COMMAND — команда, с помощью которой был запущен процесс.
Чтобы быстро завершить определенный процесс, просто выбираем его и нажимаем F9.
Для выхода из мониторинга достаточно нажать q.
▍ Monit
Monin — ещё одна утилита для мониторинга, но в отличии от htop она следит за состоянием процессов (почтовиков, бд, веб-серверов) и выполняет определенные действия в случае сбоя (например, перезапускает процесс или отправляет уведомление о сбое). Доступ к мониторингу можно получить через веб-интерфейс, что значительно повышает удобство использования
Для установки выполняем команду
sudo apt install monit
Далее настроим доступ к monit через веб интерфейс. Открываем конфигурационный файл:
sudo nano /etc/monit/monitrc
И добавляем в него следующие строки:
set httpd port 2812 and
use address 0.0.0.0
allow admin:password
Строка
use address 0.0.0.0
разрешает доступ к веб-интерфейсу со всех IP. При необходимости можно указать конкретный IP, и тогда доступ будет только с него.Строка
allow admin:password
— это логин и пароль для доступа к веб-интерфейсу. Их можно указать на свое усмотрение.Сохраняем файл и перезагружаем службу:
sudo systemctl restart monit
Открываем браузер и в адресную строку вводим
http://<IP_сервера>:2812
(указывая IP vds сервера). Вводим логин и пароль и попадаем в сам интерфейс, где можно увидеть все процессы, за которыми следит Monit.
В качестве примера, добавим ещё один процесс (Apache) и принудительно остановим его. Устанавливаем Apache командой:
sudo apt install apache2
Вновь открываем файл конфигурации Monit:
sudo nano /etc/monit/monitrc
И в самый конец добавляем следующее:
check process apache2 with pidfile /var/run/apache2/apache2.pid
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if failed host 127.0.0.1 port 80 protocol http
then restart
И перезапускаем Monit:
sudo systemctl restart monit
Теперь, когда Monit не сможет подключиться к Apache по 80-му порту, он автоматически перезапустит сервис. Открываем веб-интерфейс и видим, что появилась новая строка.

Остановим работу Apache, выполнив команду:
sudo systemctl stop apache2
Спустя несколько секунд видим что в веб-интерфейсе поменялся статус с “OK” на “Does not exist”.

Ждём пару минут и Apache автоматически запустится.
▍ Docker
Ну и напоследок самое вкусное — Docker. Мне кажется, каждый пользователь Linux слышал о нём, а пользуется им каждый второй. Докер позволяет запускать приложения в так называемых контейнерах. Думаю, можно сравнить контейнер с виртуалкой. У него есть своя файловая система и свои процессы, но использует он ядро основной системы. Получается что-то вроде виртуалки внутри виртуалки. Каждый контейнер может содержать свой набор софта, который никак не повлияет на работу другого контейнера. Например, в одном контейнере может быть версия Python 3.10, а в другом Python 3.11, и это никак не скажется на работе контейнеров. Они изолированы друг от друга.
Docker часто используется:
- Для быстрого переноса и развертывания приложения на новую систему
- Быстрого создания копий приложений
- Тестирования (можно создать копию приложения и смело протестировать её, не боясь что это повлияет на работу основной программы или системы в целом)
Для установки Docker выполняем следующие действия.
Устанавливаем необходимые пакеты:
sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release
Добавляем официальный GPG-ключ Docker:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Добавляем репозиторий Docker:
echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновляем список пакетов и затем устанавливаем Docker:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Теперь в качестве примера запустим два контейнера с разными версиями Python:
docker run -dit --name python310 python:3.10 bash
docker run -dit --name python311 python:3.11 bash
Выполнив команду docker ps? можно убедиться, что оба контейнера работают:

Выполнив команду
docker exec python310 python --version
, видим, что в контейнере установлен Python 3.10.17.Делаем то же самое для второго контейнера
docker exec python311 python --version
и видим версию Python 3.11.12.
Установка Gitlab с помощью Докера
В качестве ещё одного примера установим на сервер gitlab, используя официальный докер-контейнер с Docker Hub. Контейнер содержит в себе сам Gitlab, а также необходимые для его корректной работы программы (PostgreSQL, Nginx, Unicorn и др.). Для установки выполним команду:
sudo docker run -d --name gitlab -p 8080:80 -p 2222:22 gitlab/gitlab-ce:latest
Где:
gitlab/gitlab-ce
— это официальный образ GitLab Community Editionlatest
— последняя доступная версияТеперь при переходе в браузере по адресу
http://IP-сервера:8080
и дождавшись окончания настройки, мы увидим интерфейс Gitlab:
▍ Бэкапы
Прежде чем завершить данную статью, отдельно хотелось бы отметить создание резервной копии сервера. Да, как правило, хостинг-провайдеры самостоятельно делают бэкапы виртуалок, но всегда надёжнее хранить данные для восстановления сервера при себе. Для создания резервной копии подойдет встроенная утилита tar. Для начала создадим папку, где будут храниться бэкапы:
mkdir ~/backups
И с помощью следующей команды создаем сам бэкап:
sudo tar -cvpzf ~/backups/full_backup.tar.gz --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp --exclude=/run --exclude=/mnt --exclude=/media /
Для проверки создания бэкапа можно воспользоваться командой:
ls -l ~/backups/full_backup.tar.gz
При необходимости архив можно выгрузить с сервера с помощью FTP или способов, и когда потребуется, загрузить обратно на сервер и восстановить данные из него. Для восстановления используем команду:
sudo tar -xvpzf ~/backups/full_backup.tar.gz -C /
▍ Заключение
Разумеется, это далеко не полный список полезных утилит, которые стоит установить на сервер. Но, на мой взгляд, с них удобно начать. Если у вас есть свои must-have инструменты для VDS — делитесь ими в комментариях, будет интересно обсудить.
© 2025 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT 💻
