FTP или протокол передачи файлов — протокол который обычно используется для передачи файлов между компьютерами, один из который выступает как клиент, а другой как сервер. В этой статье мы поговорим о FTP-сервере в системах Linux, а именно о Very Secure FTP Daemon (vsftpd).
Программа vsftpd — очень популярный FTP-сервер, который сегодня используется многими предприятиями.
Содержание
- Как работает FTP-сервер
- Активный режим
- Пассивный режим
- Особенности сервера FTP Vsftpd
- Настройка FTP-сервера
- Подключение в качестве локального пользователя
- Установка анонимного FTP-сервер
- Безопасность сервера FTP
- SFTP vs FTPS
- Ограничение круга пользователей FTP
- Команды FTP-сервера Linux
Как работает FTP-сервер?
FTP работает по клиент-серверной архитектуре для обмена и передачи файлов.
FTP — это протокол с состоянием, что означает, что соединения между клиентами и серверами остаются открытыми во время сеанса FTP.
Чтобы отправлять или получать файлы с FTP-сервера, вы можете использовать команды FTP, эти команды выполняются последовательно. Они выполняются поочередно, одна за другой.
Существует два типа подключений FTP:
- Соединение управления (также называется командным соединением.)
- Соединение для передачи данных.
Когда вы устанавливаете соединение FTP, открывается порт TCP 21 для отправки ваших учетных данных, это соединение называется соединением управления.
Когда вы передаёте файл, запускается соединение для передачи данных.
Существует два типа подключения к данным:
- Пассивный режим.
- Активный режим.
Активные соединения инициируются удаленным сервером, и клиент ждёт запросов сервера.
Пассивные соединения , инициируются клиентом на удаленный сервер, и сервер ждёт запросов клиента.
Когда клиент FTP запускает передачу, то на нём можно указать опцию, которая указывает, хотите ли вы использовать активное или пассивное FTP-соединение.
Активный режим FTP
Клиент подключается из случайного порта источника к порту управления FTP 21.
Вы можете проверить свой диапазон портов, используя следующую команду:
Когда вам нужно передать файл, удаленный FTP-сервер откроет порт 20 для подключения к FTP-клиенту.
В соединениях с активным режимом обычно возникают проблемы с брандмауэрами, порты TCP 20 и 21 должны быть открыты и на вашем брандмауэре.
Из-за этих проблем активного режима с брандмауэрами был введен пассивный режим.
Пассивный режим FTP
В пассивном режиме клиент запускает соединение управления из произвольного порта в порт назначения 21 на удаленном сервере.
Если клиент FTP запрашивает файл, он выдаст команду PASV FTP. Сервер откроет случайный порт и предоставит этот номер порта клиенту.
Вот почему FTP — это протокол, зависящий от подключения, потому что каждый раз, когда вы выполняете соединение для передачи данных, сервер будет выполнять вышеуказанный процесс, и это выполняется для всех клиентов, подключенных к серверу.
В пассивном режиме соединения управления и данных запускаются FTP-клиентом.
Возможности FTP-сервера Vsftpd
Существует несколько FTP-серверов, доступных для использования, как коммерческих так и с открытым исходным кодом.
У Vsftpd есть множество функций безопасности, которые явно отличают его перед конкурентами:
- Может работать как обычный пользователь с разделением привилегий.
- Поддержка FTP/TLS FTP-соединений.
- Может помещать пользователей в свои домашние каталоги.
Настройка FTP-сервера
Некоторые дистрибутивы Linux, поставляются с предустановленным vsftpd, в любом случае, если вы хотите установить vsftpd в системах на базе Red Hat, вы можете использовать следующую команду:
После установки пакета вы можете запустить службу и включить её во время загрузки:
Конфигурационным файлом для FTP-сервера vsftpd является файл /etc/vsftpd/vsftpd.conf или в дистрибутивах на основе Debian, вы можете найти его в /etc/vsftpd.conf.
Фактически, FTP-сервер в Linux — один из самых простых серверов, с которыми вы можете работать.
Существует два типа доступа к FTP-серверу:
- Анонимный доступ к FTP: любой пользователь может войти с именем пользователя анонимно без пароля.
- Локальный доступ пользователя: всем действительным пользователям внесённым в /etc/passwd разрешен доступ к FTP-серверу.
Вы можете разрешить анонимный доступ к FTP-серверу в конфигурации, в /etc/vsftpd/vsftpd.conf, включив anonymous_enable=YES, если он не включен и перезапустите службу.
Теперь вам нужно перезапустить ftp сервер и вы сможете попытаться подключиться к FTP-серверу с помощью любого FTP-клиента.
Вы можете установить его, если он отсутствует в вашей системе:
В дистрибутивах на базе Debian следующим образом:
Теперь вы можете получить доступ к своему FTP-серверу следующим образом:
Затем введите имя пользователя anonymous и войдите без пароля, просто нажмите enter:
Вы увидите подсказку о 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 vs FTPS
В последнем примере мы видели FTP на SSL уровене(FTPS), и мы успешно подключились к FTP-серверу, однако на брандмауэре с большим количеством подключений таким подключением достаточно трудно управлять, поскольку FTPS использует несколько номеров портов.
Лучшим решением в этом случае является использование SFTP (FTP через SSH). SFTP использует только порт 22.
Этот порт используется для всех подключений во время сеансов FTP.
Если вы используете брандмауэр, то рекомендуем выбрать именно SFTP, так как ему нужен только один порт при подключении.
Ограничение круга пользователей FTP
Вы можете защитить свой FTP-сервер, ограничив доступ пользователей FTP к своим домашним каталогам и разрешая доступ к службе только определенным пользователям.
Откройте /etc/vsftpd/vsftpd.conf и раскомментируйте следующие параметры:
Файл /etc/vsftpd.chroot_list содержит список круга ограниченных пользователей, по одному в строке.
Сохраните файлы и перезапустите службу.
Команды FTP-сервера Linux
Вы можете использовать любой GUI-клиент для работы с вашими файлами, но вам также полезно будет узнать и некоторые команды для работы с FTP сервером.
Вы можете просмотреть текущий рабочий каталог с помощью команды pwd:
Вы можете просмотреть файлы список файлов и каталогов с помощью команды ls:
Кроме того, вы можете использовать команду cd для изменения рабочего каталога:
Если вы хотите выйти из сеанса FTP, используйте команду bye:
Команда lcd используется для отображения локальной папки, а не папки FTP:
Вы можете изменить локальный каталог, используя команду lcd:
Вы можете загрузить (скачать) файл, используя команду get:
Кроме того, вы можете загрузить несколько файлов с помощью команды mget:
Используйте команду delete для удаления файла на сервере:
Используйте команду put для загрузки файла на сервер:
Чтобы загрузить несколько файлов, используйте команду mput:
Вы можете создать каталог, используя команду mkdir:
Вы можете удалить каталог с сервера с помощью команды rmdir:
Существует два режима передачи файлов при использовании FTP-сервера:
- ASCII-режим
- Двоичный режим
Вы можете изменить этот режим следующим образом:
FTP-сервер — один из самых простых серверов в Linux для настройки и работы.
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
3 комментария. Оставить новый
Доброго времени суток. Проблема следующая — создать ftp сервер для двух пользователей.- одному доступ только к домашнему каталогу с возможностью скидывать файлы на фтп, и он будет подключаться с винды через тотал командер. А другому — доступ к нескольким папкам на разных дисках. Поставил ProFtpd + Gadmin. Но как правильно настроить пока ни как не получается, и толковой инструкции не могу найти. В линуксе не очень силён, так как до этого использовал винду. Сейчас на этот же комп не могу винду поставить, а линукс минт 19.1 х64 поставил. Если есть лучше решение для Линукса, подскажите пожалуйста, буду очень рад.
Везде где пишу (на форумах по линукс) отправляют читать, читать, читать
Какая домашняя папка vsftpd? В какую папку смотрит vsftpd после установки?
В примере anonymous, «взаимодействия с сервером»? хочу например дать команду на сохранения файла на серевере. В какую папку он сохранит файл? Это возможно?
Доброго времени суток. Подскажите как сделать чтоб при загрузке на сервер из винды файлов, имена файлов с русскими буквами читались, а не были в виде «????», так же в логах.
Заранее спасибо.