Настройка ftp-сервера Linux

Обновлено: 21.11.2024

FTP или протокол передачи файлов — широко используемый протокол для передачи файлов между компьютерами; один действует как клиент, другой действует как сервер. В этом посте мы поговорим о FTP-сервере в системах Linux, а именно об очень безопасном FTP-демоне (vsftpd).

Программа vsftpd — это очень популярный FTP-сервер, который сегодня используется многими серверами.

Оглавление

Как работает FTP-сервер?

FTP-сервер работает с архитектурой клиент-сервер для связи и передачи файлов.

FTP — это протокол с отслеживанием состояния, что означает, что соединения между клиентами и серверами остаются открытыми во время сеанса FTP.

Чтобы отправлять или получать файлы с FTP-сервера, вы можете использовать FTP-команды; эти команды выполняются последовательно. Это как очередь, один за другим.

Существует два типа FTP-соединений, которые вы можете инициировать:

  • Управляющее соединение, также называемое командным соединением.
  • Подключение для передачи данных.

Когда вы устанавливаете FTP-соединение, TCP-порт 21 открывается для отправки учетных данных для входа; это соединение называется управляющим соединением.

При передаче файла начинается подключение для передачи данных.

Существует два типа подключения для передачи данных:

Активные подключения инициируются удаленным сервером, а клиент ожидает запросов сервера.

Пассивные подключения, инициированные клиентом к удаленному серверу, и сервер ожидает запросов.

Когда FTP-клиент начинает передачу, в вашем FTP-клиенте есть параметр, который определяет, хотите ли вы использовать активное или пассивное FTP-соединение.

Активный режим

Клиент подключается со случайного эфемерного исходного порта к порту управления FTP 21.

Вы можете проверить свой эфемерный диапазон портов с помощью этой команды:

Когда вам нужно передать файл, удаленный FTP-сервер откроет порт 20 для подключения к FTP-клиенту.

При подключении в активном режиме обычно возникают проблемы с брандмауэрами, TCP-порты 20 и 21 должны быть открыты в вашем брандмауэре.

Из-за этих проблем с брандмауэрами активного режима мы можем использовать пассивный режим.

Если вы используете брандмауэр iptables, я рекомендую вам изучить брандмауэр Linux iptables, чтобы узнать, как разрешать определенные порты.

Пассивный режим

В пассивном режиме клиент запускает управляющее соединение со случайного порта на порт назначения 21 на удаленном сервере.

Если FTP-клиент запрашивает файл, он выдает команду PASV FTP. Сервер откроет случайный порт и передаст этот номер порта клиенту.

Вот почему протокол FTP требует подключения, потому что каждый раз, когда вы устанавливаете подключение для передачи данных (например, передаете файл), сервер выполняет описанный выше процесс, и это делается со всеми клиентами, подключенными к серверу.

В пассивном режиме соединение для управления и передачи данных запускается FTP-клиентом.

Функции FTP-сервера Vsftpd

Вам доступно несколько FTP-серверов, как коммерческих, так и с открытым исходным кодом.

Vsftpd имеет некоторые функции безопасности, которые ставят его на первое место, например:

  • Может работать как обычный пользователь с разделением привилегий.
  • Поддерживает FTP-соединения SSL/TLS.
  • Можно заключить пользователей в их домашние каталоги.

Настройка FTP-сервера

В любом случае, некоторые дистрибутивы Linux поставляются с vsftpd, если вы хотите установить его в системах на базе Red Hat, вы можете использовать следующую команду:

В дистрибутивах на основе Debian, таких как Ubuntu, вы можете установить его следующим образом:

После того как вы установили пакет, вы можете запустить службу и разрешить ее запуск во время загрузки.

Файл конфигурации для FTP-сервера vsftpd

На самом деле FTP-сервер в Linux — один из самых простых серверов, с которыми вы можете работать.

Существует два типа доступа к FTP-серверу:

  • Анонимный доступ к FTP: любой может войти в систему с анонимным именем пользователя без пароля.
  • Локальный вход пользователя: всем действительным пользователям в файле /etc/passwd разрешен доступ к FTP-серверу.

Вы можете разрешить анонимный доступ к FTP-серверу из конфигурации в файле /etc/vsftpd/vsftpd.conf, включив анонимный_enable=YES, если он не включен, и перезагрузите службу.

Теперь вы можете попробовать подключиться к FTP-серверу с помощью любого FTP-клиента. Я буду использовать простую команду FTP.

Вы можете установить его, если его нет в вашей системе:

Теперь вы можете получить доступ к своему FTP-серверу следующим образом:

Затем введите анонимное имя пользователя и без пароля, просто нажмите клавишу ввода.

Вы увидите приглашение FTP.

Теперь вы можете ввести любую FTP-команду для взаимодействия с FTP-сервером.

Подключиться как локальный пользователь

Поскольку в настройках есть параметр, разрешающий локальным пользователям доступ к FTP-серверу (local_enable=YES), теперь давайте попробуем получить доступ к FTP-серверу, используя локального пользователя:

Затем введите свое локальное имя пользователя и пароль для этого пользователя, и вы увидите сообщение об успешном входе в систему.

Настроить FTP-сервер только как анонимный

Этот тип FTP-сервера полезен, если ваши файлы должны быть доступны для пользователей без каких-либо паролей или логинов.

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

Откройте файл /etc/vsftpd/vsftpd.conf и измените следующие параметры на соответствующие значения.

Затем нам нужно создать непривилегированную системную учетную запись, чтобы использовать ее для анонимного доступа по FTP.

У этого пользователя нет привилегий в системе, поэтому безопаснее использовать его при доступе к FTP-серверу.

Не забудьте перезапустить FTP-сервер после изменения файла конфигурации.

Вы можете получить доступ к FTP-серверу из браузера, просто набрав ftp://youdomain/.

Безопасность FTP-сервера

Мы можем настроить vsftpd для использования TLS, чтобы файлы, передаваемые по сети, были более безопасными.

Сначала мы генерируем запрос сертификата с помощью команды openssl:

Затем мы генерируем запрос сертификата:

Теперь мы удаляем пароль из файла ключа:

Наконец, мы генерируем наш сертификат:

Теперь копируем файл сертификата и ключ в /etc/pki/tls/certs:

Теперь все, что нам нужно сделать, это настроить vsftpd для поддержки безопасных соединений.

Откройте файл / etc/vsftpd/vsftpd.conf и добавьте следующие строки:

Перезапустите службу, чтобы отразить эти изменения. Вот и все.

Попробуйте подключиться к FTP-серверу с любого клиента в любой системе, например Windows, и выберите защищенное соединение или FTPS, и вы успешно увидите свои папки.

SFTP и FTPS

В последнем примере мы видели FTP поверх уровня SSL (FTPS) и успешно подключились к FTP-серверу. Однако из-за сильно защищенного брандмауэра трудно управлять таким типом подключения, поскольку FTPS использует несколько номеров портов.

В этом случае лучшим решением является использование SFTP (FTP через SSH). SFTP использует только порт 22.

FTP-сервер будет использовать этот порт для всех подключений во время сеансов FTP.

Если вы используете брандмауэр, вам следует выбрать SFTP, так как ему нужен только один порт.

Заключение пользователей FTP

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

Откройте /etc/vsftpd/vsftpd.conf и раскомментируйте следующие параметры:

Сохраните файлы и перезапустите службу.

Команды FTP-сервера Linux

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

Первая команда — это команда pwd, вы можете использовать ее для печати текущего рабочего каталога:

Вы можете получить список файлов с помощью команды ls:

Кроме того, вы можете использовать команду cd для изменения рабочего каталога:

Если вы хотите выйти из сеанса FTP, используйте команду bye:

Мы используем команду lcd для отображения локальной папки, а не папки FTP:

Вы можете изменить локальный каталог с помощью команды lcd:

Вы можете загрузить файл с помощью команды get:

Кроме того, вы можете загрузить несколько файлов с помощью команды mget:

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

Используйте команду put для загрузки файла на сервер:

Чтобы загрузить несколько файлов, используйте команду mput:

Вы можете создать каталог с помощью команды mkdir:

Или вы можете удалить каталог с сервера с помощью команды rmdir.

Существует два режима передачи файлов при использовании FTP-сервера, режим ASCII и двоичный режим. Вы можете изменить режим следующим образом:

FTP-сервер — один из самых простых серверов в Linux для настройки и работы.

В этом руководстве я объясню вам, как настроить FTP-сервер. Но сначала позвольте мне быстро рассказать вам, что такое FTP.

Что такое FTP?

FTP — это аббревиатура от File Transfer Protocol. Как следует из названия, FTP используется для передачи файлов между компьютерами в сети. Вы можете использовать FTP для обмена файлами между учетными записями компьютеров, передачи файлов между учетной записью и настольным компьютером или доступа к онлайн-архивам программного обеспечения. Однако имейте в виду, что многие FTP-сайты активно используются и требуют нескольких попыток перед подключением.

Что такое FTP-сервер? Как это настроить?

Обычно компьютер с FTP-адресом предназначен для получения FTP-подключения. Компьютер, предназначенный для приема FTP-соединений, называется FTP-сервером или FTP-сайтом.
Теперь давайте начнем особое приключение. Мы сделаем FTP-сервер для обмена файлами с друзьями и семьей. Для этой цели я буду использовать vsftpd.

VSFTPD — это программное обеспечение FTP-сервера, которое претендует на звание самого безопасного программного обеспечения FTP. Фактически, первые две буквы в VSFTPD означают «очень безопасный». Программное обеспечение было построено с учетом уязвимостей протокола FTP.

Тем не менее, вы всегда должны помнить, что есть лучшие решения для безопасной передачи файлов и управления ими, такие как SFTP (использует OpenSSH).Протокол FTP особенно удобен для обмена неконфиденциальными данными и при этом очень надежен.

Шаг 1. Установка VSFTPD в Linux

Вы можете быстро установить VSFTPD на свои серверы Fedora/Red Hat/SUSE через интерфейс командной строки с помощью:

Если вы используете дистрибутивы на основе Ubuntu/Debian, вы можете установить VSFTPD с помощью этой команды:

Если вы используете дистрибутивы на основе Arch, попробуйте эту команду для установки VSFTPD.

Шаг 2. Настройка FTP-сервера

Большая часть конфигурации VSFTPD находится в файле /etc/vsftpd.conf. Сам файл хорошо документирован, поэтому в этом разделе выделены только некоторые важные изменения, которые вы, возможно, захотите внести. Все доступные параметры и базовую документацию см. на справочных страницах:

Файлы по умолчанию обслуживаются из /srv/ftp в соответствии со стандартом иерархии файловой системы.

Включить загрузку на FTP-сервер:

Флаг write_enable должен быть установлен в YES, чтобы разрешить изменения в файловой системе, например загрузку:

Разрешить вход локальным пользователям:

Чтобы разрешить вход пользователям из /etc/passwd, директива local_enable должна выглядеть следующим образом:

Анонимный вход

Следующие строки определяют, могут ли анонимные пользователи входить в систему:

Тюрьма Chroot

Можно настроить среду chroot, которая не позволит пользователю покинуть свой домашний каталог. Чтобы включить это, добавьте/измените следующие строки в файле конфигурации:

Переменная «chroot_list_file» указывает файл, в котором содержатся заключенные в тюрьму пользователи.

Шаг 4. Перезапустите FTP-сервер

В конце вы должны перезагрузить ваш ftp-сервер. Введите командную строку

Вот и все. Ваш FTP-сервер в Linux запущен и работает. FTP все чаще заменяется протоколом FTP через SSH, поэтому вы можете настроить SFTP-сервер в Linux.

Всегда приветствуются любые вопросы или предложения.

Чудо Али

Али — программист, увлеченный Linux. Он использует Trisquel Linux и иногда пишет об этом в блогах. И все это он делает с помощью программы чтения с экрана Orca, потому что не видит.

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

FTP работает по модели клиент/сервер. Серверный компонент называется демоном FTP. Он постоянно прослушивает FTP-запросы от удаленных клиентов. Когда запрос получен, он управляет входом в систему и устанавливает соединение. Во время сеанса он выполняет любую из команд, отправленных FTP-клиентом.

Доступом к FTP-серверу можно управлять двумя способами:

В анонимном режиме удаленные клиенты могут получить доступ к FTP-серверу, используя учетную запись пользователя по умолчанию, называемую «анонимной» или «ftp», и отправив адрес электронной почты в качестве пароля. В режиме аутентификации пользователь должен иметь учетную запись и пароль. Этот последний вариант очень ненадежен и не должен использоваться, за исключением особых обстоятельств. Если вы хотите безопасно передавать файлы, см. SFTP в разделе OpenSSH-Server. Доступ пользователей к каталогам и файлам FTP-сервера зависит от разрешений, определенных для учетной записи, используемой при входе в систему. Как правило, демон FTP скрывает корневой каталог FTP-сервера и заменяет его на домашний каталог FTP. Это скрывает остальную часть файловой системы от удаленных сеансов.

vsftpd — установка FTP-сервера

vsftpd — демон FTP, доступный в Ubuntu. Его легко установить, настроить и обслуживать. Чтобы установить vsftpd, вы можете запустить следующую команду:

Анонимная конфигурация FTP

По умолчанию vsftpd не настроен на анонимную загрузку. Если вы хотите включить анонимную загрузку, отредактируйте /etc/vsftpd.conf, изменив:

Во время установки создается пользователь ftp с домашним каталогом /srv/ftp . Это каталог FTP по умолчанию.

Если вы хотите изменить это местоположение, например, на /srv/files/ftp, просто создайте каталог в другом месте и измените домашний каталог пользователя ftp:

После внесения изменений перезапустите vsftpd:

Наконец, скопируйте любые файлы и каталоги, которые вы хотите сделать доступными через анонимный FTP, в /srv/files/ftp или /srv/ftp, если вы хотите использовать значение по умолчанию.

Конфигурация FTP с аутентификацией пользователя

По умолчанию vsftpd настроен на аутентификацию пользователей системы и разрешение им загружать файлы. Если вы хотите, чтобы пользователи могли загружать файлы, отредактируйте /etc/vsftpd.conf :

Теперь перезапустите vsftpd:

Теперь, когда системные пользователи входят в FTP, они начинают со своих домашних каталогов, где они могут загружать, загружать, создавать каталоги и т. д.

Точно так же по умолчанию анонимным пользователям не разрешено загружать файлы на FTP-сервер. Чтобы изменить этот параметр, вы должны раскомментировать следующую строку и перезапустить vsftpd:

Предупреждение

Включение анонимной загрузки по FTP может представлять серьезную угрозу безопасности. Лучше не включать анонимную загрузку на серверы, доступ к которым осуществляется напрямую из Интернета.

Файл конфигурации состоит из множества параметров конфигурации. Информация о каждом параметре доступна в файле конфигурации. Кроме того, вы можете обратиться к справочной странице man 5 vsftpd.conf для получения подробной информации о каждом параметре.

Защита FTP

В /etc/vsftpd.conf есть параметры, которые помогут сделать vsftpd более безопасным. Например, пользователи могут быть ограничены своими домашними каталогами, раскомментировав:

Вы также можете ограничить определенный список пользователей только их домашними каталогами:

Кроме того, файл /etc/ftpusers содержит список пользователей, которым запрещен доступ к FTP. Список по умолчанию включает root, daemon, Nobody и т. д. Чтобы отключить доступ по FTP для дополнительных пользователей, просто добавьте их в список.

FTP также можно зашифровать с помощью FTPS. В отличие от SFTP, FTPS — это FTP по протоколу Secure Socket Layer (SSL). SFTP – это сеанс, аналогичный FTP, через зашифрованное соединение SSH. Основное отличие состоит в том, что пользователям SFTP необходимо иметь в системе учетную запись shell, а не nologin. Предоставление всем пользователям оболочки может быть не идеальным для некоторых сред, таких как общий веб-хост. Однако можно ограничить такие учетные записи только SFTP и отключить взаимодействие с оболочкой.

Чтобы настроить FTPS, отредактируйте /etc/vsftpd.conf и внизу добавьте:

Также обратите внимание на параметры, связанные с сертификатом и ключом:

По умолчанию для этих параметров заданы сертификат и ключ, предоставляемые пакетом ssl-cert. В производственной среде их следует заменить сертификатом и ключом, сгенерированными для конкретного хоста. Дополнительные сведения о сертификатах см. в разделе Безопасность — Сертификаты.

Теперь перезапустите vsftpd, и неанонимные пользователи будут вынуждены использовать FTPS:

Чтобы разрешить пользователям с оболочкой /usr/sbin/nologin доступ к FTP, но не иметь доступа к оболочке, отредактируйте /etc/shells, добавив оболочку nologin:

Это необходимо, потому что по умолчанию vsftpd использует PAM для аутентификации, а файл конфигурации /etc/pam.d/vsftpd содержит:

Модуль PAM shells ограничивает доступ к оболочкам, перечисленным в файле /etc/shells.

Большинство популярных FTP-клиентов можно настроить для подключения с помощью FTPS. FTP-клиент командной строки lftp также может использовать FTPS.

Это руководство поможет вам установить и настроить FTP-сервер с vsftpd в Ubuntu.

  • Доступ к учетной записи пользователя с правами sudo
  • Доступ к окну терминала/командной строке (Ctrl-Alt-T)
  • Менеджер пакетов apt, включенный по умолчанию

Шаг 1. Обновите системные пакеты

Начните с обновления ваших репозиториев — введите в окне терминала следующее:

Система переходит к обновлению репозиториев.

Шаг 2. Установите сервер vsftpd в Ubuntu

Распространенной утилитой FTP с открытым исходным кодом, используемой в Ubuntu, является vsftpd. Рекомендуется из-за простоты использования.

<р>1. Чтобы установить vsftpd, введите команду:

Это пример вывода в Ubuntu.

<р>2. Чтобы запустить службу и включить ее при запуске, выполните команды:

Примечание. Инструкции по установке и настройке FTP-сервера с помощью vsftpd также доступны для CentOS 7 и Rasberry Pi.

Шаг 3. Резервное копирование файлов конфигурации

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

<р>1. Создайте резервную копию файла конфигурации по умолчанию, введя следующее:

Шаг 4. Создайте пользователя FTP

Создайте нового пользователя FTP с помощью следующих команд:

Система должна попросить вас создать пароль для новой учетной записи testuser.

Шаг 5. Настройте брандмауэр для разрешения FTP-трафика

Если вы используете UFW, который входит в стандартную комплектацию Ubuntu, он по умолчанию блокирует FTP-трафик. Введите следующие команды, чтобы открыть порты 20 и 21 для FTP-трафика:

Примечание. Если вы используете другой брандмауэр, обратитесь к инструкциям, чтобы разрешить доступ к портам 20 и 21. Это порты прослушивания для службы FTP.

Шаг 6. Подключитесь к FTP-серверу Ubuntu

Подключитесь к FTP-серверу с помощью следующей команды:

Замените ubuntu-ftp на имя вашей системы (взятое из командной строки).

Войдите в систему, используя учетную запись testuser и пароль, которые вы только что установили. Теперь вы должны успешно войти на свой FTP-сервер.

Настройка и защита сервера Ubuntu vsftpd

Изменить каталог по умолчанию

По умолчанию FTP-сервер использует каталог /srv/ftp в качестве каталога по умолчанию. Вы можете изменить это, создав новый каталог и изменив домашний каталог пользователя FTP.

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

Перезапустите службу vsftpd, чтобы применить изменения:

Теперь вы можете поместить любые файлы, которыми хотите поделиться через FTP, в папку /srv/ftp (если вы оставили ее по умолчанию) или в папку /srv/ftp/new_location/ (если вы изменили его).

Аутентификация пользователей FTP

Если вы хотите разрешить пользователям, прошедшим проверку подлинности, загружать файлы, отредактируйте файл vsftpd.conf, введя следующее:

Найдите запись с пометкой write_enable=NO и измените значение на "YES".

Сохраните файл, выйдите, затем перезапустите службу FTP, выполнив следующие действия:

Это позволяет пользователю вносить изменения в свой домашний каталог.

Примечание. Чтобы узнать больше об использовании FTP, обратитесь к нашему подробному руководству по команде Linux ftp.

Защита FTP

Многочисленные эксплойты используют незащищенные FTP-серверы. В связи с этим в vsftpd.conf есть несколько параметров конфигурации, которые могут помочь защитить ваш FTP-сервер.

Ограничить доступ пользователей

Один из способов – ограничить доступ пользователей к их домашнему каталогу. Откройте vsftpd.conf в редакторе и раскомментируйте следующую команду:

Это пример файла в nano:

Создать файл со списком пользователей

Укажите своему FTP-серверу ограничить этот список пользователей их собственными домашними каталогами, отредактировав файл vsftpd.conf:

Изображение иллюстрирует внесенные изменения:

Перезапустите службу vsftpd:

По умолчанию список пользователей, которым заблокирован доступ по FTP, хранится в /etc/ftpusers. Чтобы добавить заблокированных пользователей, отредактируйте этот файл и добавьте по одному пользователю в каждой строке.

Шифровать трафик с помощью FTPS

Еще один способ защитить ваш FTP-сервер – шифрование трафика. Это делается с помощью FTPS — протокола передачи файлов через SSL (Secure Socket Layer).

Чтобы это работало, пользователям необходимо настроить учетную запись оболочки на FTP-сервере. Это добавит уровень безопасного шифрования к вашему FTP-трафику.

<р>1. Начните с создания нового сертификата с помощью openssl. Для этого выполните команду:

<р>2. Введите необходимую информацию при появлении запроса или оставьте конфигурацию по умолчанию, нажав Enter.

<р>3. Затем откройте файл vsftpd.conf в редакторе и измените строку ssl_enable=NO на ssl_enable=YES :

<р>4. Затем добавьте следующие строки:

<р>5. Сохраните изменения и закройте файл.

<р>6. Наконец, перезапустите службу, чтобы изменения вступили в силу:

Примечание. Дополнительные сведения о конфигурациях SSL и сертификатах см. в документации по FTP-серверу Ubuntu. Также стоит отметить, что FTPS — это другой протокол, отличный от SFTP. SFTP расшифровывается как Secure File Transfer Protocol, и это совершенно другой протокол.

Теперь вы должны установить FTP-сервер на Ubuntu с помощью vsftpd.

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

Читайте также: