Установка, настройка и защита сервера FTP vsftpd в Linux

Установка, настройка и защита сервера FTP vsftpd в Linux

FTP

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

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

 

Содержание

  1. Как работает FTP-сервер
    • Активный режим
    • Пассивный режим
  2. Особенности сервера FTP Vsftpd
  3. Настройка FTP-сервера
    • Подключение в качестве локального пользователя
  4. Установка анонимного FTP-сервер
  5. Безопасность сервера FTP
  6. SFTP vs FTPS
  7. Ограничение круга пользователей FTP
  8. Команды FTP-сервера Linux

 

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

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

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

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

Существует два типа подключений FTP:

  • Соединение управления (также называется командным соединением.)
  • Соединение для передачи данных.

 

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

Когда вы передаёте файл, запускается соединение для передачи данных.

 

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

  • Пассивный режим.
  • Активный режим.

 

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

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

 

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

 

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

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

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

$ cat /proc/sys/net/ipv4/ip_local_port_range

 

 

Когда вам нужно передать файл, удаленный 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, вы можете использовать следующую команду:

$ sudo dnf -y vsftpd

 

 

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

$ sudo apt-get install vsftpd

 

 

После установки пакета вы можете запустить службу и включить её во время загрузки:

 

$ systemctl start vsftpd

$ systemctl enable vsftpd

 

Конфигурационным файлом для 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-клиента.

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

$ dnf -y install ftp

 

В дистрибутивах на базе Debian следующим образом:

$ sudo apt-get install ftp

 

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

$ ftp localhost

 

 

Затем введите имя пользователя anonymous и войдите без пароля, просто нажмите enter:

Вы увидите подсказку о FTP.

ftp>

 

 

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

 

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

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

$ ftp localhost

 

 

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

 

 

Настройка FTP-сервера для анонимного доступа

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

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

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

listen=NO

listen_ipv6=NO

anonymous_enable=YES

local_enable=NO

write_enable=NO

 

 

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

$ useradd -c " FTP User" -d /var/ftp -r -s /sbin/nologin ftp

 

 

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

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

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

 

 

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

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

Во-первых, мы сгенерируем запрос сертификата с помощью команды openssl:

$ openssl genrsa -des3 -out FTP.key

 

 

Затем мы создадим запрос сертификата:

$ openssl req -new -key FTP.key -out certificate.csr

 

 

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

$ cp FTP.key FTP.key.orig

$ openssl rsa -in FTP.key.orig -out ftp.key

 

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

$ openssl x509 -req -days 365 -in certificate.csr -signkey ftp.key -outmycertificate.crt

 

 

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

 

$ cp ftp.key /etc/pki/tls/certs/

$ cp mycertificate.crt /etc/pki/tls/certs

 

 

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

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

ssl_enable=YES

allow_anon_ssl=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

rsa_cert_file=/etc/pki/tls/certs/mycertificate.crt

rsa_private_key_file=/etc/pki/tls/certs/ftp.key

ssl_ciphers=HIGH

require_ssl_reuse=NO

 

 

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

Попробуйте подключиться к вашему 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 и раскомментируйте следующие параметры:

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

 

 

Файл /etc/vsftpd.chroot_list содержит список круга ограниченных пользователей, по одному в строке.

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

$ systemctl restart vsftpd

 

 

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

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

Вы можете просмотреть текущий рабочий каталог с помощью команды pwd:

ftp> pwd

 

 

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

ftp> ls

 

 

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

ftp> cd /

 

 

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

ftp> bye

 

 

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

ftp> lcd

 

 

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

ftp> lcd /home

 

 

Вы можете загрузить (скачать) файл, используя команду get:

ftp> get myfile

 

 

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

ftp> mget file1 file2

 

 

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

ftp> delete filename

 

 

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

ftp> put filename

 

 

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

ftp> mput file1 file2

 

 

Вы можете создать каталог, используя команду mkdir:

ftp> mkdir dirName

 

 

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

ftp> rmdir dirName

 

 

Существует два режима передачи файлов при использовании FTP-сервера:

  • ASCII-режим
  • Двоичный режим

 

Вы можете изменить этот режим следующим образом:

ftp> binary

ftp> ascii

 

 

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

 

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасности от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
FTP

Больше похожих постов

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

  • Доброго времени суток. Проблема следующая — создать ftp сервер для двух пользователей.- одному доступ только к домашнему каталогу с возможностью скидывать файлы на фтп, и он будет подключаться с винды через тотал командер. А другому — доступ к нескольким папкам на разных дисках. Поставил ProFtpd + Gadmin. Но как правильно настроить пока ни как не получается, и толковой инструкции не могу найти. В линуксе не очень силён, так как до этого использовал винду. Сейчас на этот же комп не могу винду поставить, а линукс минт 19.1 х64 поставил. Если есть лучше решение для Линукса, подскажите пожалуйста, буду очень рад.

    Везде где пишу (на форумах по линукс) отправляют читать, читать, читать

    Ответить

Добавить комментарий

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

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню