
Если вы арендовали свой первый 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 — время работы без перезагрузки.
Ниже представлен список самих процессов. Ключевые значения:
- PID — ID процесса
- USER — под каким пользователем был запущен процесс
- RES — количество потребляемой оперативной памяти
- CPU% / MEM% — нагрузка на процессор и память
- TIME+ — время работы процесса
- COMMAND — команда, с помощью которой был запущен процесс.
Чтобы быстро завершить определенный процесс, просто выбираем его и нажимаем F9.
Для выхода из мониторинга достаточно нажать q.
▍ Monit
Monit — ещё одна утилита для мониторинга, но в отличии от 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

В качестве примера, добавим ещё один процесс (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 Edition
latest — последняя доступная версия
Теперь при переходе в браузере по адресу http://IP-сервера:8080 и дождавшись окончания настройки, мы увидим интерфейс Gitlab:

▍ Бэкапы
Прежде чем завершить данную статью, отдельно хотелось бы отметить создание резервной копии сервера. Да, как правило,
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 инструменты для
© 2025 ООО «МТ ФИНАНС»
Автор: Wolfurud
