Привет, Хабр!
В первой части нашего путешествия мы превратили голый VPS в маленькую крепость. Мы создали пользователя с sudo, настроили вход по SSH-ключам, выставили на стражу файрвол UFW и наняли вышибалу Fail2ban. Теперь лобовые brute-force атаки и автоматические сканеры разбиваются о наши стены, не доставляя хлопот. Мы победили, верно?
Не совсем. Наша крепость неприступна, но она слепа. Мы отбиваем тех, кто ломится в ворота, но совершенно не видим, что происходит на периметре. Что если уязвимость найдется в нашем веб-сервере? Что если одна из запущенных нами программ начнет слать странный трафик, став частью ботнета?
Здесь нам нужна «сигнализация». Система, которая станет нашими глазами и ушами, и поднимет тревогу при малейшем подозрительном движении. Сегодня мы установим именно такую — Maltrail.

Если продолжать нашу аналогию, то Fail2ban — это охранник у двери, а Maltrail — это система камер наблюдения по всему периметру. Это легковесная система обнаружения вторжений (IDS), которая работает по очень простому принципу:
-
Она тихо слушает весь сетевой трафик, идущий к вашему серверу и от него.
-
Она сверяет IP-адреса, домены и URL из этого трафика с огромной, постоянно обновляемой базой данных, собранной из сотен публичных «чёрных списков» и статических сигнатур. Туда входят списки от AlienVault, dshield, Emerging Threats, трекеры Ransomware и данные о тысячах семейств вредоносов, от AgentTesla до Zeus.
-
Если обнаруживается совпадение — Maltrail немедленно записывает это в лог и показывает в красивом веб-интерфейсе.
Это не замена Fail2ban, а идеальное дополнение. Они работают на разных уровнях.

Шаг 1: Установка и базовый запуск
Установка Maltrail на удивление проста, никаких танцев с бубном.
# Клонируем репозиторий с GitHub git clone https://github.com/stamparm/maltrail.git cd maltrail # Ставим зависимости через pip # Если pip3 не установлен: sudo apt install python3-pip sudo pip3 install -r requirements.txt
Всё! Для быстрого теста можно запустить сервер и сенсор прямо в консоли.
Лайфхак: Чтобы не занимать терминал, используйте screen или tmux. Это позволит запустить процесс в фоне и спокойно отключиться от сервера.
# Создаем новую сессию screen screen -S maltrail # Запускаем сенсор (он собирает данные) python3 sensor.py # Нажмите Ctrl+C чтобы остановить его и запустить сервер # Запускаем сервер (он отдает веб-интерфейс) python3 server.py # Чтобы "свернуть" сессию screen, не убивая процесс, нажмите Ctrl+A, а затем D. # Вернуться в сессию можно командой `screen -r maltrail`
После запуска сервер будет доступен на порту 8338, но только локально. Не спешите открывать его на весь мир! Сначала мы его как следует защитим.
Шаг 2: Прячем админку за Nginx (Обязательный шаг!)
Светить админку такого инструмента в «голом» виде на весь интернет — это очень плохая идея. Мы же строим крепость, а не проходной двор. Поэтому мы настроим Nginx как reverse proxy, который будет:
-
Давать доступ к Maltrail по красивому доменному имени (напрример, sec.yourdomain.com).
-
Шифровать трафик с помощью бесплатного SSL-сертификата от Let’s Encrypt.
-
Защищать вход логином и паролем.
2.1. Генерируем пароль
Сначала установим утилиту htpasswd для создания файла с паролями.
sudo apt update sudo apt install apache2-utils
Теперь создадим файл и добавим в него пользователя (например, admin). Команда попросит вас ввести и подтвердить пароль.
# Флаг -c создает новый файл. Используйте его только для первого пользователя! sudo htpasswd -c /etc/nginx/.htpasswd admin
Лайфхак: Для добавления других пользователей убирайте флаг -c, чтобы не перезаписать файл: sudo htpasswd /etc/nginx/.htpasswd another_user.
2.2. Настраиваем Nginx
Создаем новый конфиг для нашего сайта в /etc/nginx/sites-available/maltrail:
sudo nano /etc/nginx/sites-available/maltrail
Вставляем туда следующий конфиг, заменив sec.cyberscope360.com на свой домен:
server { server_name sec.cyberscope360.com; location / { # Перенаправляем все запросы на локальный порт Maltrail proxy_pass http://127.0.0.1:8338; # Важные заголовки, чтобы Maltrail видел реальный IP клиента proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Включаем нашу парольную защиту! auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; } }
Активируем конфиг, создав на него символическую ссылку:
sudo ln -s /etc/nginx/sites-available/maltrail /etc/nginx/sites-enabled/
Теперь натравим Certbot, чтобы он автоматически получил SSL-сертификат и настроил HTTPS:
# Если Certbot не установлен: sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d sec.cyberscope360.com
Certbot сам изменит ваш конфиг, добавив всё необходимое для SSL. После этого проверяем синтаксис и перезапускаем Nginx:
sudo nginx -t sudo systemctl reload nginx
Теперь, если вы зайдете на https://sec.cyberscope360.com, браузер покажет окно для ввода логина и пароля. Наша админка под замком!
Шаг 3: Делаем по-взрослому: запуск через systemd
Запускать сервисы в screen хорошо для тестов, но для постоянной работы нам нужно, чтобы Maltrail стартовал автоматически после перезагрузки сервера. Для этого создадим systemd-юниты.
Лайфхак: В репозитории Maltrail уже есть готовые файлы maltrail-sensor.service и maltrail-server.service. Вы можете скопировать их в /etc/systemd/system/ и адаптировать под себя. Но для наглядности мы создадим их с нуля.
maltrail-sensor.service
sudo nano /etc/systemd/system/maltrail-sensor.service
[Unit] Description=Maltrail Sensor After=network.target [Service] ExecStart=/usr/bin/python3 /путь/к/maltrail/sensor.py Restart=always User=root # Сенсору нужны права root для прослушки трафика WorkingDirectory=/путь/к/maltrail/ [Install] WantedBy=multi-user.target
maltrail-server.service
sudo nano /etc/systemd/system/maltrail-server.service
[Unit] Description=Maltrail Server After=network.target [Service] ExecStart=/usr/bin/python3 /путь/к/maltrail/server.py Restart=always # Сервер можно запускать и от обычного пользователя User=www-data Group=www-data WorkingDirectory=/путь/к/maltrail/ [Install] WantedBy=multi-user.target
Важно: Не забудьте заменить /путь/к/maltrail/ на ваш реальный путь (например, /home/admin/maltrail или /opt/maltrail).
Теперь командуем systemd:
# Перечитываем конфиги sudo systemctl daemon-reload # Включаем автозапуск sudo systemctl enable maltrail-sensor sudo systemctl enable maltrail-server # Запускаем сервисы sudo systemctl start maltrail-sensor sudo systemctl start maltrail-server # Проверяем, что все работает sudo systemctl status maltrail-sensor maltrail-server
Шаг 4: Анализируем дашборд
Теперь самое интересное. Заходим на наш защищенный домен, вводим логин/пароль и видим дашборд Maltrail. Не пугайтесь, если там сразу появятся события — это нормально. Интернет — место шумное.
Что именно вы там увидите?
Maltrail — это не просто список IP. Он показывает суть угрозы. Вот лишь несколько примеров того, что вы сможете отловить:
-
Сканеры уязвимостей: Попытки найти дыры в вашем веб-сервере с помощью таких инструментов, как sqlmap или nmap.
-
Обращения к C&C серверам: Ваш сервер (или один из его докер-контейнеров) оказался заражен и пытается связаться со своим «командным центром».
-
Трафик через Tor: Кто-то пытается анонимно получить доступ к вашим сервисам.
-
Подозрительные загрузки: Попытки скачать с вашего сервера или на него файлы .exe, .dll, .ps1.
-
DGA-домены: DNS-запросы на странные, автоматически сгенерированные домены — явный признак работы вредоноса.
Кликнув на событие, можно получить исчерпывающую информацию об IP, включая данные Whois и репутацию.
На что смотреть:
-
Events: Лента событий в реальном времени.
-
Source IP: IP-адрес, с которого пришел подозрительный трафик.

-
Threat: Насколько серьезная угроза (по шкале от 0 до 100).

-
Info: Самое главное. Здесь написано, в чём именно подозревается IP-адрес: (malware), (scanner), (tor), (botnet) и т.д.
Кликнув на событие, можно получить исчерпывающую информацию об IP.
Правило честного компромисса: о чём стоит помнить
Maltrail — фантастически полезный инструмент, но важно понимать его место.
-
Это IDS, а не IPS. Maltrail обнаруживает, но не блокирует трафик по умолчанию. Он — ваша сигнализация, а не автоматическая турель.
-
Возможны ложные срабатывания (false positives). Иногда в списки попадают IP-адреса крупных сервисов вроде Google или Cloudflare. Не стоит паниковать и сразу банить их. Смотрите на контекст.
-
Идеален для pet-проектов и небольших серверов. Он очень лёгкий, почти не потребляет ресурсов и прост в настройке. Для защиты корпоративного гиганта, возможно, понадобятся решения «потяжелее».
Заключение: крепость стала зрячей
Поздравляю! Наше путешествие продолжается. Мы не просто построили стены, мы установили на них дозорных. Теперь наша крепость не только защищена от атак «в лоб», но и находится под постоянным наблюдением. Мы будем в курсе, если к нам попытаются подобраться «по‑тихому».
А теперь открытый вопрос к сообществу: какими ещё легковесными IDS/IPS вы пользуетесь для своих проектов? Может, есть что-то интереснее и функциональнее, чем Maltrail, для небольших серверов? Давайте делиться опытом в комментариях

ссылка на оригинал статьи https://habr.com/ru/articles/926414/
Добавить комментарий