Только для посетителей нашего блога: получите дополнительные 3 месяца бесплатно + скидку 10% на трехгодичный план YSBLOG10
Захватить сделку

Что такое FTP Руководство по безопасной передаче файлов на сервере Linux?

Последнее обновление: сентябрь 7, 2026 9 min read Санджит Чаухан
Что такое FTP на сервере Linux

FTP на сервере Linux Это клиент-серверный протокол, передающий файлы по протоколу TCP/IP, обычно через порт 21. Он поддерживает аутентификацию пользователей, навигацию по каталогам и операции загрузки/выгрузки.

В то время как классический FTP Если данные не зашифрованы, вы можете защитить их с помощью FTPS (TLS) или замените его на SFTP (SSHДля большинства производственных целей, SFTP or FTPРекомендуется вариант S.

Понимание FTP Эта функция на сервере Linux помогает перемещать файлы веб-сайта, автоматизировать резервное копирование и взаимодействовать с командами. В этом руководстве объясняется, как это сделать. FTP работает, разница между FTP, FTPПесок SFTPкак установить и настроить FTP сервер (vsftpd), обеспечьте его безопасность, устраняйте неполадки и следуйте передовым методам повышения производительности и надежности.

Как FTP Работает на сервере Linux.

FTP Используется два канала: управляющий канал для команд и канал передачи данных для передачи файлов и просмотра содержимого каталогов. Сложность заключается в способе открытия канала передачи данных: активный или пассивный режим.

Как FTP Работает на сервере Linux.

Активный и пассивный FTP

В активном режиме сервер инициирует соединение для передачи данных клиенту. В пассивном режиме клиент инициирует как управляющее, так и информационное соединение, а сервер сообщает клиенту, какой пассивный порт использовать. Пассивный режим лучше работает за NAT, брандмауэрами и в облачных средах.

  • Канал управления: ТКП 21 (FTP) или TCP 21 с аутентификацией TLS (явная) FTPS)
  • Активный канал передачи данных: Сервер подключается по протоколу TCP 20 к клиентскому порту.
  • Канал передачи данных (пассивный): Сервер прослушивает порты в заданном вами диапазоне (например, 40000–50000).

FTP против FTPС против. SFTP

  • FTP: Незашифрованный, простой, широко поддерживаемый. Не рекомендуется использовать в общедоступном интернете.
  • FTPС (FTP через TLS): Шифрует учетные данные и данные. Два варианта: явный. FTPS (аутентификация TLS на порту 21) — наиболее распространенный вариант; неявный. FTPS (порт 990) — устаревшая версия.
  • SFTP (SSH Протокол передачи файлов): Другой протокол SSH (TCP 22). Совместимость с брандмауэрами, аутентификация на основе ключей, легко повышает уровень безопасности. Предпочтителен в большинстве современных конфигураций.

Общее правило: если вы контролируете оба конца и вам нужен классический вариант FTP совместимость, использование FTPЕсли вам нужна более простая система безопасности и меньше проблем с брандмауэром, используйте... SFTP.

Выбор FTP Сервер на Линукс

  • vsftpd: Очень безопасный FTP Демон. Быстрый, легковесный, ориентированный на безопасность. Отличный выбор по умолчанию для FTP/FTPS.
  • ProFTPD: Гибкий, ApacheКонфигурация в стиле программирования, богатый набор модулей. Подходит для сложных виртуальных хостингов.
  • Чистый-FTPd: Простая настройка, виртуальные пользователи, поддержка TLS. Сбалансированная простота и функциональность.

Для большинства администраторов vsftpd предлагает оптимальное сочетание производительности и безопасности при минимальной настройке. В описанных ниже шагах используется vsftpd.

Установка и настройка vsftpd

Установка пакета

# Debian/Ubuntu
sudo apt update
sudo apt install -y vsftpd

# RHEL/CentOS/AlmaLinux/Rocky
sudo dnf install -y vsftpd

# Start and enable service
sudo systemctl enable --now vsftpd
sudo systemctl status vsftpd

Базовая конфигурация, ориентированная на безопасность.

Отредактируйте файл /etc/vsftpd.conf. Следующая настройка повышает безопасность распространенной конфигурации «только для локальных пользователей» с использованием chroot, пассивных портов и запретом анонимного доступа.

# /etc/vsftpd.conf (baseline secure config)
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES

# Chroot local users to their home directories
chroot_local_user=YES
allow_writeable_chroot=YES

# Passive mode ports (match your firewall)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000

# Limit users to a whitelist file (optional)
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

# Disable ASCII mode for performance and safety
ascii_upload_enable=NO
ascii_download_enable=NO

# Security & performance
seccomp_sandbox=YES
pam_service_name=vsftpd

Затем перезапустите vsftpd:

sudo systemctl restart vsftpd

Создайте пользователей и установите права доступа.

# Create a Linux user without shell access
sudo useradd -m -s /usr/sbin/nologin ftpuser
sudo passwd ftpuser

# Optional: limit to specific directory
sudo mkdir -p /var/www/ftpuser
sudo chown ftpuser:ftpuser /var/www/ftpuser
sudo usermod -d /var/www/ftpuser ftpuser

# Add user to vsftpd whitelist (if enabled)
echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist

Открытый брандмауэр и SELinux

Откройте порт 21 и пассивный диапазон, который вы настроили. Также разрешите доступ. FTPS, если вы включите TLS позже.

# UFW (Ubuntu)
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw reload

# firewalld (RHEL/CentOS/Alma/Rocky)
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
sudo firewall-cmd --reload

# SELinux (allow FTP to read/write home directories and passive ports)
sudo setsebool -P ftpd_full_access on
# Or more granular:
# sudo setsebool -P allow_ftpd_anon_write=off
# sudo setsebool -P allow_ftpd_full_access=on

Проверить соединение

# From a client machine
ftp your.server.ip
# or use lftp for better features
lftp -u ftpuser your.server.ip
# Basic commands once connected
pwd
ls
cd dir
get file
put localfile
bye

Безопасный FTP правильный путь

Включите FTPS (TLS) в vsftpd

Если этого требует политика FTP для обеспечения совместимости включите TLS. Используйте явное указание. FTPS (аутентификация TLS на порту 21). Сгенерируйте или установите сертификат:

# Self-signed (replace CN)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 
  -keyout /etc/ssl/private/vsftpd.key 
  -out /etc/ssl/certs/vsftpd.crt 
  -subj "/C=US/ST=State/L=City/O=Org/OU=IT/CN=ftp.example.com"

# vsftpd TLS config additions
sudo bash -c 'cat >> /etc/vsftpd.conf' << "EOF"
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_tlsv1_1=YES
ssl_tlsv1_2=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
EOF

sudo systemctl restart vsftpd

Примечание: Многие современные клиенты предпочитают TLSv1.2+. Если более старые клиенты не работают, скорректируйте настройки TLS соответствующим образом.

SFTP пробегает SSH (порт 22). Дополнительный демон не требуется; ОткрытоSSH Обычно устанавливается по умолчанию. Его проще защитить, и это легче сделать через брандмауэры.

# Ensure SSH is installed and running
sudo systemctl enable --now sshd

# Configure SFTP-only group with chroot
sudo groupadd sftpusers
sudo useradd -m -G sftpusers -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser

# In /etc/ssh/sshd_config (add at the end)
Subsystem sftp internal-sftp

Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

# Permissions: chroot dir must be owned by root and not writable by user
sudo chown root:root /home/sftpuser
sudo mkdir -p /home/sftpuser/upload
sudo chown sftpuser:sftpusers /home/sftpuser/upload

sudo systemctl restart sshd

# Connect
sftp [email protected]

Дополнительные советы по закалке

  • Внедрить использование ключей SSH аутентификация для SFTPПо возможности отключайте аутентификацию по паролю.
  • Используйте надежные пароли и регулярно меняйте учетные данные; интегрируйте Fail2ban для блокировки попыток подбора паролей методом перебора.
  • Отключить анонимный доступ. Ограничить доступ пользователей с помощью списков пользователей или блокировки по совпадению.
  • Установите соответствующую маску прав доступа (например, 022) и права доступа, чтобы предотвратить запись файлов группами/всеми пользователями.
  • Регулярно регистрируйте передачу данных и просматривайте записи. Включите xferlog в vsftpd и syslog для SSH.

Общие FTP и SFTP Команды

# FTP client basics
ftp server
User: ftpuser
Password: ****
ls
cd /path
lcd /local/path
get remote.file
put local.file
mget *.zip
mput *.html
bye

# SFTP client basics
sftp user@server
ls
cd /remote/dir
lcd /local/dir
get file
put file
chmod 640 file
mkdir newdir
exit

# lftp (robust, supports FTPS)
lftp -u user,pass -e "set ssl:verify-certificate no; mirror -R ./site /var/www/html; bye" ftps://server

Диагностика неисправностей FTP в Linux

Соединение отклонено или истекло время ожидания

  • Служба запущена? `systemctl status vsftpd or sshd`
  • Брандмауэр открыт? Порты 21 и пассивный диапазон для FTP/FTPС; 22 для SFTP
  • Разрешают ли группы безопасности облачных сервисов/списки контроля доступа сети входящий трафик?

530 Неверный логин

  • Проверьте существование пользователя, пароль и оболочку (для этого подойдет nologin). FTP/SFTP-только).
  • При использовании vsftpd userlist убедитесь, что пользователь находится в белом списке и userlist_deny=NO.
  • Права доступа к домашнему каталогу должны разрешать доступ (не должны быть доступны для записи группой/всеми пользователями при использовании chroot).

425 Не удается открыть соединение для передачи данных / не удается получить список каталогов

  • Откройте пассивные порты в брандмауэре и сопоставьте параметры vsftpd pasv_min_port и pasv_max_port.
  • Клиент находится за NAT? Принудительно включите пассивный режим в настройках клиента.
  • On FTPS, некоторые устройства нарушают глубокий анализ пакетов. Отключите DPI или разрешите. FTPS правильно.

553 Не удалось создать файл / отказано в доступе

  • Проверьте права собственности на каталог и права на запись для пользователя.
  • On SFTP Использование chroot гарантирует, что операции записи будут выполняться в подкаталоге, принадлежащем пользователю.
  • В SELinux используйте setsebool или соответствующие контексты (se).manage fcontext, restorecon).

Передовые методы обеспечения производительности и надежности

  • Используйте пассивный режим с ограниченным диапазоном портов, чтобы упростить настройку брандмауэра и уменьшить количество случайных зависаний.
  • Поддерживайте соединения активными с помощью механизма keepalive на стороне клиента; настройте тайм-ауты (idle_session_timeout, data_connection_timeout).
  • Для каталогов с большим объемом загружаемых файлов используйте выделенную файловую систему или диск, чтобы избежать конфликтов ввода-вывода.
  • При необходимости ограничьте параллельное выполнение (например, один процесс на клиента) или масштабируйте систему горизонтально с помощью нескольких узлов.
  • Для мониторинга журналов и метрик используйте xferlog, systemd journal и сетевые графики для выявления узких мест.

Когда следует выбирать управляемый хостинг?

If FTP/SFTP В случае с производственной инфраструктурой, простои или неправильная настройка обходятся дорого. manageVPS или выделенный сервер от YouStable можно предварительно настроить безопасность SFTP, FTPS с автоматическим продлением TLS, политиками брандмауэра и круглосуточным мониторингом. Это позволит вам сосредоточиться на своем приложении, в то время как наша команда обеспечит быструю и безопасную передачу данных.

FAQ«s

1. Is FTP Безопасно ли это на сервере Linux?

одноцветный FTP Это небезопасно, поскольку учетные данные и данные не зашифрованы. Для обеспечения безопасности используйте FTPS (TLS) с vsftpd или SFTP за SSHОба метода шифруют трафик; SFTP Как правило, его проще развернуть через брандмауэры и системы поддержки. SSH ключи.

2. Какие порты мне нужно открыть? FTP, FTPПесок SFTP?

FTP: TCP 21 плюс пассивный диапазон (например, 40000–50000). FTPS (явное): TCP 21 с тем же пассивным диапазоном после AUTH TLS; неявное FTPS использует TCP 990. SFTP Использует только TCP 22, пассивный диапазон не требуется.

3. Я должен выбрать FTPС или SFTP?

Отбор SFTP По возможности: это проще, безопасно по умолчанию и совместимо с брандмауэром. Выбирайте... FTPТолько если вам требуется строгий FTP совместимость с устаревшими системами или конкретными рабочими процессами обеспечения соответствия требованиям, включающими FTP клиенты и серверы.

4. Как изменить каталог для загрузки файлов по умолчанию для пользователя?

Для vsftpd установите домашний каталог пользователя (usermod -d /path user) и убедитесь, что права доступа соответствуют модели chroot. SFTP При использовании chroot домашний каталог должен принадлежать пользователю root и быть недоступен для записи; создайте подпапку с правами записи, принадлежащую пользователю (например, /home/user/upload).

5. Почему списки в каталогах работают локально, но не работают через интернет?

Обычно проблема связана с пассивным режимом. Убедитесь, что ваш сервер объявляет правильный публичный IP-адрес, определите диапазон пассивных портов в vsftpd и откройте этот диапазон в брандмауэре и группах безопасности облака. Во многих аудитах это само по себе устраняет ошибки 425/тайм-аут.

Оставьте комментарий

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *.

Наверх