Ошибка 530 Login incorrect или обрыв соединения при подключении к FTP в РЕД ОС чаще всего означает, что служба vsftpd установлена, но не настроены права доступа, файрвол или контексты SELinux. РЕД ОС построена на RPM-пакетной базе и использует привычные инструменты семейства: пакетный менеджер dnf, брандмауэр firewalld и принудительный контроль доступа SELinux, поэтому настройка FTP во многом повторяет подход CentOS и Fedora, но с учётом репозиториев самой РЕД ОС.
В этой статье разберём полный цикл: установку сервера vsftpd, базовую конфигурацию, открытие портов, настройку SELinux и типичные ошибки при подключении клиентов. Команды приведены для актуальных версий РЕД ОС 7.x; если у вас иная версия, сверяйте названия пакетов с официальной документацией дистрибутива.
Установка FTP-сервера vsftpd в РЕД ОС
Наиболее распространённый FTP-сервер для Linux-систем — vsftpd (Very Secure FTP Daemon). Он доступен в стандартных репозиториях РЕД ОС. Перед установкой убедитесь, что система имеет доступ к репозиториям: локальным или сетевым, в зависимости от того, как развёрнута ваша инфраструктура.
Установка выполняется одной командой из терминала с правами root:
sudo dnf install vsftpd
После установки службу необходимо запустить и добавить в автозагрузку. Без этого сервер не стартует после перезагрузки системы, что часто становится причиной «внезапно пропавшего» FTP-доступа:
sudo systemctl enable --now vsftpd
sudo systemctl status vsftpd
Вторая команда покажет состояние службы. Статус active (running) означает, что сервер работает. Если служба не стартует, смотрите журнал командой journalctl -u vsftpd — там будет указана конкретная причина, чаще всего синтаксическая ошибка в конфигурационном файле.
Базовая конфигурация vsftpd
Основной файл настроек — /etc/vsftpd/vsftpd.conf. Откройте его в любом текстовом редакторе с правами root, например sudo nano /etc/vsftpd/vsftpd.conf. Ниже — ключевые параметры, которые стоит проверить в первую очередь.
- 🔒
anonymous_enable=NO— отключает анонимный вход; для рабочего сервера это обязательный минимум безопасности. - 👤
local_enable=YES— разрешает вход локальным пользователям системы. - ✍️
write_enable=YES— разрешает загрузку и изменение файлов. - 🏠
chroot_local_user=YES— ограничивает пользователя его домашним каталогом, не давая «гулять» по файловой системе. - 📢
ftpd_banner=...— приветственное сообщение при подключении.
⚠️ Внимание: при включённомchroot_local_user=YESvsftpd может отказывать в подключении, если домашний каталог пользователя доступен на запись ему самому. Возможное решение — добавить параметрallow_writeable_chroot=YESлибо снять право записи с корня домашнего каталога, оставив запись во вложенных папках.
После любого изменения конфигурации перезапустите службу:
sudo systemctl restart vsftpd
☑️ Минимальная проверка после настройки vsftpd
Создание пользователя для FTP-доступа
Для входа по FTP используются обычные системные учётные записи. Создайте отдельного пользователя, не давая ему лишних прав:
sudo useradd -m ftpuser
sudo passwd ftpuser
Ключ -m создаёт домашний каталог — именно в него попадёт пользователь после входа (при включённом chroot). Если пользователю не нужен вход в систему через терминал, можно назначить ему оболочку /sbin/nologin, но тогда проверьте, что эта оболочка перечислена в файле /etc/shells — иначе vsftpd отклонит вход с ошибкой аутентификации.
Права на каталоги настраиваются стандартными средствами: chmod и chown. Например, чтобы пользователь мог загружать файлы только в подкаталог upload, создайте его внутри домашней папки и назначьте владельцем именно этот подкаталог.
Настройка firewalld и SELinux
Даже при корректно настроенном vsftpd подключение извне может не проходить из-за брандмауэра. В РЕД ОС по умолчанию используется firewalld. Откройте службу FTP постоянно:
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --reload
Проверить результат можно командой sudo firewall-cmd --list-services — в списке должен появиться ftp. Если планируется пассивный режим FTP (а большинство клиентов используют именно его), дополнительно задайте диапазон пассивных портов в vsftpd.conf параметрами pasv_min_port и pasv_max_port и откройте этот же диапазон в firewalld.
Второй частый блокирующий фактор — SELinux. Если после открытия портов пользователь авторизуется, но не может загрузить файлы или видит пустой каталог, проверьте булевы параметры SELinux:
getsebool -a | grep ftp
Для разрешения полного доступа FTP к домашним каталогам обычно требуется включить соответствующий булев параметр, например:
sudo setsebool -P ftpd_full_access on
⚠️ Внимание: не отключайте SELinux полностью ради FTP — это резко снижает защищённость системы. Настройте нужные булевы параметры и контексты файлов; точный набор зависит от версии РЕД ОС и политики, действующей в вашей организации.
Пассивный и активный режимы: что выбрать
FTP исторически использует два соединения: управляющее (порт 21) и соединение данных. В активном режиме сервер сам инициирует подключение к клиенту, что почти всегда ломается о NAT и клиентские файрволы. В пассивном режиме клиент сам открывает второе соединение на порт из согласованного диапазона — поэтому пассивный режим является стандартом де-факто.
Для пассивного режима добавьте в конфигурацию строки вида:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
Конкретный диапазон выбирайте произвольно из свободных портов и откройте его в firewalld командой sudo firewall-cmd --permanent --add-port=40000-40100/tcp с последующей перезагрузкой правил. Если сервер находится за NAT и имеет внешний IP, может понадобиться параметр pasv_address с внешним адресом — иначе клиент получит внутренний адрес и не сможет установить соединение данных.
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Connection refused | Служба не запущена или закрыт порт 21 | systemctl status vsftpd, firewall-cmd --list-services |
| 530 Login incorrect | Неверный пароль, оболочка не в /etc/shells, запрет в vsftpd.conf | Журнал journalctl -u vsftpd, файл /etc/shells |
| Вход успешен, но пустой каталог | Ограничения SELinux | getsebool -a | grep ftp, журнал audit |
| Обрыв на команде LIST/MLSD | Не открыт диапазон пассивных портов | pasv_min_port/pasv_max_port и правила firewalld |
| 500 OOPS: vsftpd: refusing to run with writable root | Chroot с записываемым домашним каталогом | allow_writeable_chroot=YES или права на каталог |
Почему обычный FTP считается небезопасным и что делать
Протокол FTP передаёт логин, пароль и данные в открытом виде — их можно перехватить в сети. Если сервер доступен за пределами доверенной локальной сети, рассмотрите альтернативы: SFTP поверх SSH (работает из коробки при установленном openssh-server и не требует vsftpd) либо FTPS — FTP с TLS-шифрованием, которое vsftpd тоже поддерживает через параметры ssl_enable, rsa_cert_file и rsa_private_key_file. Для внутреннего использования в изолированном контуре открытый FTP допустим, но с отключённым анонимным доступом и строгими правами.
Проверка работоспособности и тестовое подключение
Сначала проверьте сервер локально, с самой машины РЕД ОС. Это отсекает проблемы сети и брандмауэра:
ftp localhost
Если локальный вход проходит, а внешний — нет, проблема почти наверняка в firewalld или сетевом оборудовании между клиентом и сервером. Проверить доступность порта с другой машины можно командой telnet IP_сервера 21 или через клиент FileZilla, который наглядно показывает, на каком этапе рвётся соединение.
Полезно наблюдать журнал в реальном времени во время попытки подключения:
sudo journalctl -u vsftpd -f
Так вы увидите точную причину отказа: ошибку пароля, запрет SELinux или проблему с каталогом. Диагностика по журналу занимает минуты, тогда как перебор настроек вслепую — часы.
Частые вопросы
Чем FTP отличается от SFTP в РЕД ОС?
FTP — отдельный протокол со службой vsftpd и портом 21, данные передаются без шифрования. SFTP работает поверх SSH (порт 22), шифрует трафик и не требует установки FTP-сервера — достаточно работающего openssh-server. Для доступа извне предпочтителен SFTP.
Как ограничить пользователя только одним каталогом?
Включите chroot_local_user=YES в /etc/vsftpd/vsftpd.conf — пользователь окажется «заперт» в своём домашнем каталоге. Если после этого вход перестал работать, добавьте allow_writeable_chroot=YES или уберите право записи с корня домашнего каталога.
Клиент подключается, но не видит список файлов. Что делать?
Классический признак проблемы с соединением данных в пассивном режиме. Проверьте, что диапазон pasv_min_port–pasv_max_port задан в конфигурации и открыт в firewalld. Если сервер за NAT — укажите pasv_address с внешним IP. Дополнительно проверьте булевы параметры SELinux.
Как разрешить анонимный доступ только на чтение?
Установите anonymous_enable=YES и убедитесь, что write_enable=NO или отсутствуют параметры anon_upload_enable и anon_mkdir_write_enable. Анонимные файлы обычно размещаются в каталоге /var/ftp. Такой режим допустим только в доверенной сети.
Где смотреть логи FTP-сервера?
Основной источник — журнал systemd: sudo journalctl -u vsftpd. Также vsftpd ведёт собственный журнал /var/log/vsftpd.log, если в конфигурации включён параметр xferlog_enable=YES и задан путь к файлу журнала.