Мониторинг FTP сервера 2026: vsftpd, ProFTPD, Windows Server — логи, сессии, трафик | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Мониторинг FTP сервера 2026: vsftpd, ProFTPD, Windows Server — логи, сессии, трафик

01 апреля 2026 10 мин. чтения
Содержание статьи

Быстрая диагностика и устранение сбоев FTP: где искать логи и активные сессии

Когда FTP-сервер в рабочей среде начинает работать некорректно — пользователи не могут подключиться, передачи файлов зависают или производительность падает — у системного администратора нет времени изучать полную документацию. Нужны конкретные команды и пути к файлам для немедленной диагностики. Эта секция даст вам инструменты для оперативного устранения проблем: от поиска ошибок в логах до просмотра и принудительного отключения активных сессий.

Где живут логи: vsftpd, ProFTPD и Windows Server

Первый шаг при любой проблеме — анализ логов. Их расположение зависит от платформы и сервиса:

  • vsftpd (Linux): Основной лог обычно находится в /var/log/vsftpd.log. Для детального логирования операций передачи файлов активируйте xferlog_enable=YES в конфигурации (/etc/vsftpd.conf). Лог передач по умолчанию пишется в /var/log/xferlog. Неудачные попытки аутентификации также могут дублироваться в системном /var/log/auth.log или /var/log/secure.
  • ProFTPD (Linux): Сервис использует директорию /var/log/proftpd/. Основной лог — proftpd.log. При включенной директиве TransferLog в конфиге (/etc/proftpd/proftpd.conf) логи передач записываются в отдельный файл, например, /var/log/proftpd/xferlog.
  • Windows Server (IIS FTP): Логи хранятся в директории, указанной в настройках FTP-сайта через IIS Manager (Путь: Сайт → FTP Логирование). По умолчанию это может быть %SystemDrive%\inetpub\logs\LogFiles\FTPSVC*. Также проверяйте журналы событий Windows: Просмотр событий → Журналы приложений и служб → Microsoft → Windows → IIS-FTPSVC.

Ключевые поля в логах, на которые стоит обращать внимание:

  • IP-адрес и пользователь: Источник проблемы.
  • Команда (COMMAND): Какое действие пытался выполнить клиент (USER, PASS, RETR, STOR).
  • Статус (STATUS): Код ответа сервера. 530 — ошибка логина, 550 — ошибка доступа к файлу.
  • Байты (BYTES): Объем переданных данных. Внезапный рост может указывать на неавторизованную активность.

Команды для просмотра и управления активными FTP-сессиями

Чтобы оценить текущую нагрузку или завершить зависшее соединение, используйте инструменты командной строки.

Общий просмотр соединений (Linux/Windows):

# Linux: просмотр соединений на портах FTP (20, 21, пассивный диапазон)
sudo netstat -tpn | grep ':21\|:20'
# Или более современная команда ss
sudo ss -tpn sport = :21

# Windows (PowerShell):
Get-NetTCPConnection -LocalPort 21 -State Established

Специфичные команды для сервисов:

  • ProFTPD: Утилита ftpwho показывает активные сессии. Для безопасного завершения работы сервера используйте ftpshut. Завершить конкретную сессию можно, найдя её PID через ftpwho -v и выполнив kill [PID].
  • vsftpd: Активные сессии соответствуют процессам vsftpd. Их можно просмотреть с помощью ps aux | grep vsftpd. Для принудительного завершения используйте kill или pkill.
  • Windows PowerShell: Для анализа процессов IIS FTP можно использовать модуль IISAdministration.

Разбор типовых ошибок в логах: от подключения до передачи файла

Быстрая расшифровка записей в логах помогает дифференцировать проблемы, аналогично тому, как различают HTTP 503 (перегрузка сервера) и HTTP 429 (превышение лимита запросов).

  • "Connection timed out" или "Connection refused": Проблема на сетевом уровне или уровне фаервола. Проверьте, слушает ли сервер порт (netstat -tln), и правила iptables/брандмауэра Windows.
  • "530 Login incorrect": Ошибка аутентификации. Проверьте учётные данные пользователя, активность учётной записи и настройки PAM (для Linux). Множество таких записей с одного IP — признак брут-форс атаки.
  • "550 Failed to change directory" или "550 Permission denied": Ошибка прав доступа к файлу или директории на сервере. Проверьте владельца, группу и права (chmod/chown в Linux, ACL в Windows).
  • "552 No space left on device": Дисковая подсистема переполнена. Требуется немедленное освобождение места.
  • "425 Can't open data connection": Частая проблема с пассивным режимом (PASV). Проверьте настройки диапазона пассивных портов на сервере и правила фаервола для этого диапазона.

Для каждого случая immediate action разное: сброс правил фаервола, блокировка IP-адреса атакующего, очистка диска или корректировка конфигурации сервера.

Настройка централизованного мониторинга FTP в Zabbix и Prometheus

Ручная проверка логов не масштабируется. Для контроля доступности, нагрузки и получения алертов о проблемах до жалоб пользователей FTP-сервис необходимо интегрировать в корпоративную систему мониторинга.

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

Определите, за чем следить:

  • Статус сервиса (up/down): Проверка доступности порта 21 (TCP).
  • Активные сессии (active_sessions): Текущее количество и тренд. Резкий рост может указывать на атаку или сбой клиента.
  • Скорость передачи (upload/download_rate): В байтах/секунду. Помогает выявить аномалии в трафике.
  • Частота ошибок (error_rate): Количество ошибок в логах за период, сгруппированных по кодам (530, 550).
  • Неудачные логины (login_failures): Количество попыток неудачной аутентификации за период — ключевой индикатор сканирования.

Эти метрики можно получить, парся логи (grep, awk) или проверяя состояние сервера (например, через ss или netstat).

Интеграция с Zabbix: шаблоны и пользовательские скрипты

Для Zabbix создайте UserParameter в конфигурации агента (/etc/zabbix/zabbix_agentd.d/userparameter_ftp.conf):

UserParameter=ftp.active_sessions,ss -tn sport = :21 | grep ESTAB | wc -l
UserParameter=ftp.login_failures[*],grep "530 Login incorrect" /var/log/vsftpd.log | tail -n 60 | wc -l

Затем настройте триггеры в веб-интерфейсе Zabbix, например:

  • Высокая нагрузка: {ftp.active_sessions.last()} > 50
  • Подозрительная активность: {ftp.login_failures[hour].last()} > 100

Готовый XML-шаблон для импорта, содержащий данные элементы данных и триггеры, значительно ускорит развёртывание.

Экспорт метрик в Prometheus через Node Exporter textfile collector

В стеке Prometheus удобно использовать Node Exporter. Создайте скрипт, который собирает метрики и записывает их в файл в формате Prometheus.

Пример скрипта /usr/local/bin/ftp_metrics.sh:

#!/bin/bash
OUTPUT_FILE="/var/lib/node_exporter/textfile_collector/ftp_metrics.prom"

ACTIVE_SESSIONS=$(ss -tn sport = :21 | grep -c ESTAB)
LOGIN_FAILURES=$(grep -c "530 Login incorrect" /var/log/vsftpd.log 2>/dev/null || echo 0)

cat > "$OUTPUT_FILE" << EOF
# HELP ftp_active_sessions Current number of established FTP sessions.
# TYPE ftp_active_sessions gauge
ftp_active_sessions $ACTIVE_SESSIONS
# HELP ftp_login_failures_total Total number of failed login attempts.
# TYPE ftp_login_failures_total counter
ftp_login_failures_total $LOGIN_FAILURES
EOF

Добавьте скрипт в cron для периодического выполнения (например, каждую минуту). В конфигурации Node Exporter укажите путь к каталогу textfile_collector.

Автоматическая ротация логов — обязательная часть настройки. Для Linux используйте logrotate. Пример конфигурации /etc/logrotate.d/vsftpd:

/var/log/vsftpd.log {
    weekly
    rotate 4
    compress
    delaycompress
    missingok
    notifempty
    create 640 root adm
    postrotate
        /usr/bin/killall -HUP vsftpd 2>/dev/null || true
    endscript
}

Аудит безопасности и действий пользователей: логи авторизации и передачи файлов

Для расследования инцидентов и контроля соблюдения политик безопасности необходима полная трассировка действий пользователей.

Настройка детального логирования команд и операций с файлами

  • vsftpd: В /etc/vsftpd.conf добавьте:
    log_ftp_protocol=YES  # Логирует все команды протокола
    xferlog_enable=YES
    xferlog_std_format=YES  # Использует стандартный формат xferlog
  • ProFTPD: В proftpd.conf используйте директивы TransferLog для логов передач и ExtendedLog для детального журналирования команд.
    ExtendedLog /var/log/proftpd/commands.log ALL default
  • Windows IIS FTP: В настройках FTP-логирования выберите формат «W3C» и отметьте для журналирования поля sc-status, sc-substatus, cs-method (команда FTP), cs-uri-stem (путь к файлу).

Такое логирование позволит видеть не только факт передачи файла, но и команды LIST, RETR (скачивание), STOR (загрузка), DELE (удаление).

Анализ логов на предмет подозрительной активности

Используйте простые команды для выявления шаблонов атак:

  • Брут-форс атаки: Поиск IP с множественными неудачными попытками входа за короткий период.
    grep "530 Login incorrect" /var/log/vsftpd.log | awk '{print $(NF-2)}' | sort | uniq -c | sort -nr | head -10
  • Успешный вход после атаки: Поиск IP, с которого после серии неудачных попыток произошёл успешный логин.
  • Доступ к чувствительным директориям: Поиск в логах команд, указывающих на обращение к каталогам типа /etc, /home/*/.ssh.
    grep -E 'RETR.*(\.(pem|key|ppk|sql|bak)$|/passwd|shadow)' /var/log/proftpd/commands.log
  • Аномально большие передачи: Анализ поля байтов в xferlog для выявления нехарактерно крупных скачиваний или загрузок.

Автоматизируйте создание ежедневных отчётов с помощью скриптов, отправляющих сводку по подозрительным событиям на email. Этот подход перекликается с принципами динамического тестирования безопасности (DAST), где система проактивно ищет уязвимости в работающем приложении.

Для безопасного управления учётными записями регулярно проводите аудит: отзывайте доступ у уволенных сотрудников, проверяйте назначенные привилегии и используйте сложные пароли или ключевую аутентификацию.

Сравнение платформ: vsftpd, ProFTPD и Windows Server для задач мониторинга

Выбор или эффективное администрирование FTP-сервера требует понимания особенностей мониторинга на каждой платформе. Сравнение основано на практическом опыте и фактах.

Особенности мониторинга и администрирования на каждой платформе

Критерий vsftpd (Linux) ProFTPD (Linux) Windows Server / IIS FTP
Расположение логов /var/log/vsftpd.log, /var/log/xferlog /var/log/proftpd/ Журналы событий Windows, директория IIS.
Формат логов Свой, стандартный xferlog. Гибкий, настраиваемый через ExtendedLog. W3C, IIS.
Просмотр сессий ps aux | grep vsftpd, ss/netstat. Специфичные утилиты ftpwho, ftptop. PowerShell (Get-NetTCPConnection), счётчики производительности.
Встроенный мониторинг Минимальный. Основная информация — в логах. Более богатый, модуль mod_snmp. Счётчики производительности IIS FTP Server.
Интеграция с Zabbix/Prometheus Простая через UserParameter или textfile collector на основе парсинга логов. Аналогично vsftpd, возможен сбор данных через модуль mod_snmp. Сложнее. Требуются PowerShell-скрипты для сбора данных из Event Log или счётчиков.
Детальный аудит Хороший (log_ftp_protocol=YES). Отличный, гибкая настройка через ExtendedLog. Средний, зависит от настроек журналирования IIS.

Рекомендации по выбору:

  • vsftpd: Выбор для лёгких и безопасных решений. Прост в настройке, логирование понятное, но инструменты мониторинга — в основном внешние.
  • ProFTPD: Подходит для сложных сценариев, требующих гибкой конфигурации и богатого аудита. Имеет больше встроенных возможностей для мониторинга.
  • Windows Server / IIS FTP: Естественный выбор в экосистеме Windows. Мониторинг тесно интегрирован с системными инструментами (Event Viewer, PerfMon), но менее гибок для интеграции в Linux-ориентированные стеки мониторинга.
  • TrueNAS/FreeNAS: Предоставляют базовый FTP-сервис с веб-интерфейсом управления. Мониторинг ограничен системными логами и базовой статистикой в интерфейсе. Для глубокого анализа потребуется доступ к базовой ОС (FreeBSD).

Выбор должен основываться на существующей инфраструктуре: для Linux-окружения с акцентом на автоматизацию и скрипты vsftpd или ProFTPD предпочтительнее; для гомогенных сред Windows — решение на базе IIS.

Автоматизация рутинных задач: сбор статистики, ротация логов и алерты

Ручной сбор статистики и очистка логов отнимают время. Автоматизация этих процессов повышает надёжность и освобождает администратора для решения более сложных задач.

Скрипты для ежедневного отчета по трафику и активности пользователей

Bash-скрипт для анализа xferlog (vsftpd/ProFTPD):

#!/bin/bash
LOG_FILE="/var/log/xferlog"
REPORT_DATE=$(date +"%Y-%m-%d")

# 1. Общий объём переданных данных за день (в МБ)
TOTAL_BYTES=$(grep "$REPORT_DATE" "$LOG_FILE" | awk '{sum += $9} END {print sum}')
TOTAL_MB=$(echo "scale=2; $TOTAL_BYTES / 1024 / 1024" | bc)

# 2. Топ-5 пользователей по объёму скачанного (RETR)
echo "=== Top 5 users by download (RETR) volume ==="
grep "$REPORT_DATE.*\bRETR\b" "$LOG_FILE" | awk '{user[$7] += $9} END {for (u in user) printf "%s: %.2f MB\n", u, user[u]/1024/1024}' | sort -k2 -nr | head -5

# 3. Количество сессий (уникальных комбинаций IP+пользователь)
SESSION_COUNT=$(grep "$REPORT_DATE" "$LOG_FILE" | awk '{print $7"-"$(NF-2)}' | sort -u | wc -l)

echo "\n=== Summary for $REPORT_DATE ==="
echo "Total data transferred: $TOTAL_MB MB"
echo "Unique user sessions: $SESSION_COUNT"

# Отправка отчёта на email (раскомментировать при необходимости)
# echo "Report body" | mail -s "FTP Daily Report $REPORT_DATE" admin@example.com

PowerShell-скрипт для анализа логов IIS FTP: Используйте cmdlet Get-Content для чтения W3C-логов и Select-Object с Group-Object для агрегации данных по полям cs-username и sc-bytes.

Настройка автоматической ротации и очистки логов

Помимо стандартного logrotate, для Windows можно использовать Scheduled Tasks. Пример PowerShell-скрипта для архивации и очистки старых логов IIS:

# PowerShell: Archive-IISFtpLogs.ps1
$LogPath = "C:\inetpub\logs\LogFiles\FTPSVC1"
$ArchivePath = "D:\FTPLogArchive"
$DaysToKeep = 30

# Архивировать логи старше 1 дня
Get-ChildItem -Path $LogPath -Filter "*.log" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-1)} | ForEach-Object {
    $ArchiveName = "$ArchivePath\$($_.BaseName)_$(Get-Date -Format 'yyyyMMdd').zip"
    Compress-Archive -Path $_.FullName -DestinationPath $ArchiveName -Force
    Remove-Item $_.FullName -Force
}

# Удалить архивы старше $DaysToKeep дней
Get-ChildItem -Path $ArchivePath -Filter "*.zip" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-$DaysToKeep)} | Remove-Item -Force

Настройте выполнение этого скрипта по расписанию через Планировщик заданий Windows.

Простые алерты о доступности можно организовать через cron или Scheduled Tasks, используя curl или PowerShell для проверки порта и отправки уведомления в Telegram/Slack при недоступности. Принцип аналогичен интеграции проверок в CI/CD pipeline для повышения общей надёжности инфраструктуры.

Использование контейнеризации, например, через Docker, может дополнительно упростить развёртывание и мониторинг FTP-сервисов, изолируя их от основной системы и стандартизируя конфигурацию.

Поделиться:
Сохранить гайд? В закладки браузера