Мониторинг FTP и FTPS
FTP-монитор подключается к файловому серверу, входит с указанными логином и паролем (анонимно, если вы их не задали), спрашивает у сервера, в каком каталоге оказалась сессия, и выходит. Это проверка входа, а не проверка файлов: ничего не перечисляется, не скачивается и не загружается.
Для чего подходит
Обменный каталог, куда загружают файлы партнёры или клиенты
Обмен файлами ломается на входе, а не на порту. Истёк пароль, отключили учётную запись, пропал домашний каталог, перестал отвечать сервер авторизации — а порт всё это время открыт. Монитор выполняет тот же вход, что и ваш партнёр, поэтому вы узнаете об этом раньше, чем придёт письмо.
Публичное или анонимное FTP-зеркало
Оставьте логин и пароль пустыми — монитор войдёт как anonymous с паролем anonymous@, ровно так же, как это делает анонимный клиент. Если сервер перестанет пускать анонимных пользователей, вы увидите неудачную проверку, а не обращение в поддержку.
Сервер за файрволом, NAT или белым списком
Проверка из региона PingZen приходит к серверу так же, как внешний клиент, поэтому правило, которое тихо перестало кого-либо пускать, становится заметным. Чтобы увидеть тот же сервер изнутри своей сети, запустите монитор с приватного чекера.
Подтвердить, что сервис действительно поднялся после перезапуска
FTP-демон начинает принимать соединения задолго до того, как сможет обслуживать учётные записи. Проверка доходит до входа и одной команды, поэтому сервер, который здоровается, а потом отказывает всем пользователям, записывается как недоступный — обычная проверка порта 21 назвала бы его здоровым.
Для чего не подходит
Этот монитор говорит только по FTP и останавливается сразу после входа:
| Что нужно узнать | Что использовать |
|---|---|
| Работает ли мой SFTP-сервер? SFTP — это не FTP: это подсистема SSH на порту 22, совсем другой протокол. Этот монитор с ним говорить не умеет, и других мониторов для него в PingZen тоже нет | Монитор TCP на порту 22 — он подтверждает, что SSH принимает соединения; это самое близкое, что есть |
| Пришёл ли ночной файл и того ли он размера? Проверка не делает листинг и не передаёт данные, поэтому пустой или устаревший каталог всё равно пройдёт | Монитор Heartbeat — пусть задача, которая пишет файл, дёргает его URL после успешной загрузки |
| Когда истекает сертификат на моём FTPS-сервере? | Монитор TLS/SSL-сертификата, наведённый на порт со сразу-TLS, обычно 990: проверка FTPS шифрует вход, но сертификат не проверяет, а сам сертификатный монитор AUTH TLS отправлять не умеет |
| Открыт ли порт вообще? Учётной записи у вас нет или вы не хотите каждую минуту оставлять попытку входа в журнале сервера | Монитор TCP на порту 21 — он подключается и отключается, не входя |
| Работает ли веб-файлменеджер или страница загрузки? | Монитор HTTP / HTTPS |
Что делает проверка
- Подключается к хосту и порту — к 21-му, если в адресе не указан другой. На порту 990 соединение шифруется с самого первого байта, ещё до чтения.
- Читает приветствие сервера.
- На любом другом порту поднимает TLS прямо в этом соединении, если проверка шифрованная: отправляет
AUTH TLS, и всё дальнейшее идёт уже внутри TLS. - Отправляет вход:
USER, затемPASS. - Отправляет одну команду,
PWD, и читает каталог, в котором началась сессия. Это и есть доказательство, что сессия настоящая, а не просто открытый сокет. - Отправляет
QUITи закрывает соединение.
Это вся проверка. Никакого листинга каталога, скачивания, загрузки и вообще никакого соединения для данных — а значит, пассивный режим и диапазон портов данных не проверяются.
Время отклика покрывает соединение, вход и ответ на PWD. Каталог, который назвал сервер, прикрепляется к результату проверки, но он не сохраняется в истории и нигде не показывается, так что считайте его внутренней деталью, а не возможностью.
FTP, FTPS и разница, которая важна
FTPS бывает двух видов, и они не взаимозаменяемы:
- Явный FTPS подключается открытым текстом на порт 21, а потом повышает сессию командой
AUTH TLS. - Неявный FTPS ждёт TLS с самого первого байта, обычно на порту 990 — так же, как HTTPS.
Поддерживаются оба, и выбор делает порт: 990 — неявный TLS, любой другой порт — явный. Настраивать нечего: монитор FTPS всегда шифрованный, а обычный FTP шифруется, когда у него включена галочка «Использовать TLS (FTPS)».
Явный вариант подходит почти всем. Именно его из коробки включают FileZilla Server, vsftpd и ProFTPD, а неявный FTPS на 990 — форма постарше, которую держат живой в основном сетевые устройства. Если не знаете, что у вас за сервер, не трогайте порт и оставьте явный вариант.
Что TLS здесь доказывает, а что нет
- Вход зашифрован. Логин и пароль идут внутри TLS-сессии, и сервер, настроенный отвергать вход открытым текстом, эту проверку примет.
- Сертификат не проверяется. На файловых серверах самоподписанные сертификаты — норма: NAS и FileZilla Server генерируют их при первом запуске, так что отказ от них ронял бы почти каждый реальный FTPS-сервер. Проверка отвечает на вопрос «сервис жив и пускает по логину», а доверие к сертификату — отдельный вопрос. Чтобы следить за самим сертификатом, добавьте монитор TLS/SSL-сертификата — ему нужен порт со сразу-TLS вроде 990, потому что сам он
AUTH TLSотправлять не умеет. - Канал данных не проверяется.
PBSZиPROTне отправляются, потому что эта проверка не открывает соединение для данных. Сервер может пройти проверку и всё равно быть неверно настроенным для шифрованной передачи.
Логика статусов
Состояния деградации у FTP-монитора нет. Каждая проверка — это «работает», «не работает» или «таймаут».
| Результат | Статус |
|---|---|
Вход принят, и сервер ответил на PWD | UP |
| Сервер отказал во входе или в любой другой команде — в сообщении об ошибке будут его код ответа и текст, например 530 при неверном пароле | DOWN |
| В соединении отказано — на этом порту никого нет | DOWN |
| Имя хоста не разрезолвилось, маршрута нет или соединение разорвано | DOWN |
TLS-рукопожатие не удалось или сервер отказал в AUTH TLS — на этом порту он не FTPS | DOWN |
Соединение, вход и PWD не уложились в таймаут | TIMEOUT |
DOWN и TIMEOUT считаются простоем и открывают инцидент после порога подтверждения — по умолчанию это три неудачные проверки подряд, чтобы один отказ во входе во время перезапуска никого не будил.
Про неверный пароль стоит сказать отдельно. Для монитора он неотличим от аварии: сервер отвечает, отказывает во входе, проверка краснеет. Многие FTP-серверы к тому же блокируют адрес после нескольких неудачных попыток, так что монитор со старым паролем может сам себя заблокировать и потом сообщать о вполне настоящей на вид аварии. Меняете пароль этой учётной записи — поменяйте его и в мониторе.
Настройки
Адрес
Хост и, при необходимости, порт: files.example.com или files.example.com:2121. Префикс ftp:// или ftps:// принимается и отбрасывается, IPv6 пишется в квадратных скобках. Без порта проверка идёт на 21 — и для типа FTP, и для типа FTPS. Отдельного поля порта в этой форме нет: порт живёт в адресе.
Логин и пароль
Оба необязательны. Пустой логин означает anonymous, пустой пароль — anonymous@. Пароль хранится только на запись: API сообщает, задан ли он, но никогда не возвращает значение. Не пишите учётные данные в адрес в виде ftp://user:pass@host — такой адрес отклоняется, потому что URL попадает в ответы, уведомления и логи.
Использовать TLS (FTPS)
Показывается только на мониторах FTP и превращает проверку в явный FTPS — то же самое, что делает монитор FTPS. У монитора FTPS такой галочки нет, потому что он шифрованный всегда. Сертификат сервера не проверяется ни в том, ни в другом случае — см. выше.
Таймаут
По умолчанию пять секунд, и они покрывают весь обмен — соединение, приветствие, вход и PWD. Для загруженного или далёкого FTP-сервера это мало: он отвечает на каждую команду отдельным round trip. От 10 до 15 секунд здесь реалистичнее, чем для простой проверки порта.
Оба типа монитора читают одни и те же три настройки, так что монитор FTP с включённой галочкой TLS и монитор FTPS — это одна и та же проверка.
Ключевые возможности
- Настоящий вход, а не проверка порта: соединение,
USER,PASS,PWD,QUIT - FTPS в обоих видах: явный
AUTH TLSна любом порту и неявный TLS на 990 - Поддерживаются и анонимный вход, и вход по учётной записи; пустые поля означают анонимный
- Пароль хранится только на запись и никогда не возвращается через API
- Код ответа и текст самого сервера попадают в сообщение об ошибке, поэтому 530 при неверном пароле не спутать с недоступным хостом
- Нестандартный порт прямо в адресе и проверки из любого региона или с приватного чекера
- Обычные уведомления и инциденты с привычным подтверждением по трём неудачам