Как сделать ftp сервер на ubuntu
Перейти к содержимому

Как сделать ftp сервер на ubuntu

  • автор:

Как настроить FTP на Ubuntu 20.04 LTS

FTP – это протокол, который позволяет передавать файлы по сети от одного узла другому. Данный протокол является самым старым протоколом прикладного уровня, который появился намного раньше, чем HTTP или TCP/IP. С помощью протокола FTP могут быть организованы соединения с удаленными серверами для просмотра и передачи необходимых данных. При подключении к серверам и рабочим станциям при помощи протокола FTP необходимо использовать специальные приложения, которые именуются FTP-клиентами. Далее о том, как настроить работу с протоколом FTP на сервере, работающем под управлением Ubuntu 20.04 LTS.

Для того чтобы развернуть свой FTP-сервер на Ubuntu 20.04 LTS, необходимо:

  • установить FTP-сервер с поддержкой SSL для безопасного подключения;
  • настроить учетную запись FTP-пользователя;
  • проверить подключение к FTP-серверу.

Установка FTP-сервера

Как всегда при работе с Ubuntu необходимо произвести первоначальную настройку сервера в соответствии с посвящённой данной процедуре статье. Далее следует обновить списки пакетов:

$ sudo apt update

После чего необходимо установить программу vsftpd :

$ sudo apt install vsftpd

По окончании установки можно убедиться, что сервис vsftpd уже успешно работает:

$ systemctl status vsftpd

systemctl status vsftpd

Далее необходимо произвести некоторые настройки в конфигурационном файле. Для этого откройте при помощи текстового редактора файл vsftpd.conf :

$ sudo nano /etc/vsftpd.conf

Вот те основные изменения, которые необходимо внести для корректной работы FTP-сервера:

listen=YES listen_ipv6=NO anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd allow_writeable_chroot=YES

После внесения изменений в файл настроек необходимо сохранить их и перезапустить службу vsftpd :

$ sudo systemctl restart vsftpd

Защита передачи данных при помощи SSL/TLS

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

$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

После установки SSL-сертификата необходимо внести изменения в конфигурационный файл:

$ sudo nano /etc/vsftpd.conf

А именно, внесите изменения в следующие строки данного файла:

rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

Настройка учётной записи FTP-пользователя

Для авторизации на FTP-сервере необходимо создать учетную запись пользователя. Изначально, подключаться к серверу можно и под локальным пользователем. Но более целесообразно для этих целей использовать специальную учётную запись. Для её создания используйте следующую команду:

$ sudo useradd ftpuser

Таким образом, у нас теперь есть пользователь ftpuser . Следующей командой нужно создать для него домашний каталог:

$ sudo mkhomedir_helper ftpuser

После этого для него необходимо создать пароль на вход:

$ sudo passwd ftpuser

Настройка брандмауэра

Если вы производили работы по первоначальной настройке виртуального сервера, то на нём должен быть запущен межсетевой экран UFW. Соответственно, для того, чтобы брандмауэр вашего VPS позволял осуществлять подключения, необходимо внести небольшие изменения в настройки UFW. Проще говоря, нужно будет добавить в брандмауэр исключения для TCP-портов 20 и 21. Делается это следующими командами:

$ sudo ufw allow 20/tcp $ sudo ufw allow 21/tcp

После чего брандмауэр следует перезапустить:

$ sudo ufw disable $ sudo ufw enable

И убедиться, что служба работает без ошибок:

$ sudo ufw status

sudo ufw status

Проверка подключения к FTP-серверу

Корректность произведённых настроек можно проверить через осуществление подключения к FTP-серверу. Для этой цели можно воспользоваться бесплатным FTP-клиентом FileZilla. После запуска приложения в FileZilla следует заполнить поля Хост и Имя пользователя . После нажатия кнопки Быстрое соединение система попросит ввести пароль учётной записи, под именем которой происходит подключение к FTP-серверу.

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

Сервер FTP

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

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

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

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

sudo apt install vsftpd

Для запуска сервиса требуется добавить его в автозагрузку. Начиная с версии Ubuntu 15.04 используется Systemd, поэтому для добавления vsftpd в автозапуск надо ввести следующие команды:

sudo systemctl start vsftpd sudo systemctl enable vsftpd

В Ubuntu Server может использоваться файервол ufw. Тогда вам потребуется разрешить порты 20 и 21

sudo ufw allow 20/tcp sudo ufw allow 21/tcp

Конфигурационный файл содержит много параметров настройки. Информация по каждому параметру доступна в этом же файле. В качестве альтернативы вы можете посмотреть системное руководство по команде

man 5 vsftpd.conf

для уточнения деталей по каждому параметру.

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

Анонимным (Anonymous)
Авторизованным (Authenticated)

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

Настройка анонимного доступа по FTP

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

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

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

anonymous_enable=YES

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

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

sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftp ftp

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

sudo service vsftpd restart

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

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

anon_upload_enable=YES

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

Настройка авторизованного доступа по FTP

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

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Для аутентификации локальных пользователей надо раскоментировать строчку

local_enable=YES

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

write_enable=YES

после чего перезагрузите vsftpd:

sudo service vsftpd restart

Теперь при входе системных пользователей по FTP они будут попадать в свои домашние каталоги, где они смогут скачивать, загружать [файлы], создавать каталоги и т.д.

Защита FTP

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

В /etc/vsftpd.conf существуют опции, помогающие сделать vsftpd более безопасным. Например, данная опция позволяет поместить локального пользователя в chroot() «заточение», выше которого (по дереву каталогов) он не сможет подняться.

chroot_local_user=YES

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

chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

После снятия комментариев с этих опций, создайте /etc/vsftpd.chroot_list, содержащий список пользователей по одному на строку. Затем перезапустите vsftpd:

sudo service vsftpd restart

Если вы сняли комментарии со всех трёх строчек, то пользователи из списка не будут ограничены своими домашними каталогами, в отличии от пользователей не вошедших в список

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

Если при попытке подключения вы видите ошибку 1) :

Ответ: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

то это значит, что локальный пользователь имеет доступ на запись в домашний каталог, чего быть не должно. Способов решения этой ошибки несколько:

Запретить запись в домашний каталог локальному пользователю (подходит не всем и не всегда)

sudo chmod a-w /home/user/

Отменить проверку записи в домашний каталог прописав в конфиге 2)

allow_writeable_chroot=YES

Прописать /home каталогом, куда будут попадать локальные пользователи после входа на FTP сервер. Тогда каждый из них будет иметь возможность писать только в свой домашний каталог

local_root=/home
Шифрование

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

Для настройки FTPS, добавьте в конец файла /etc/vsftpd.conf следующее:

ssl_enable=Yes

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

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

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

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

sudo service restart vsftpd

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

# /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh /usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen /usr/sbin/nologin

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

auth required pam_shells.so

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

Наиболее популярные клиенты FTP могут быть настроены на использование FTPS. FTP клиент командной строки lftp также имеет возможность использовать FTPS.

Установка FTP сервера vsftpd

По умолчанию мы предоставляем доступ к VPS только по протоколам SSH и SFTP. Для того, чтобы подключиться к серверу по FTP-протоколу необходимо установить FTP-сервер. Установка и настройка FTP-сервера несколько разнится в зависимости от дистрибутива ОС Linux.

Мы предлагаем вашему вниманию инструкцию по установке одного из наиболее стабильных FTP-серверов — vsftpd (расшифровывается: Very Secure FTP Daemon)

Для CentOS, Fedora:

# yum install vsftpd

Для Debian, Ubuntu:

# apt-get install vsftpd

Для Gentoo:

# emerge vsftpd

Примечание

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

yum update rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum install yum-plugin-fastestmirror wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-3.15.6-1.el7.elrepo.x86_64.rpm yum install kernel-ml-3.15.6-1.el7.elrepo.x86_64.rpm wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-3.15.6-1.el7.elrepo.x86_64.rpm yum install kernel-ml-devel-3.15.6-1.el7.elrepo.x86_64.rpm wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-doc-3.15.6-1.el7.elrepo.noarch.rpm yum install kernel-ml-doc-3.15.6-1.el7.elrepo.noarch.rpm wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-headers-3.15.6-1.el7.elrepo.x86_64.rpm yum install kernel-ml-headers-3.15.6-1.el7.elrepo.x86_64.rpm wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-tools-3.15.6-1.el7.elrepo.x86_64.rpm wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-tools-libs-3.15.6-1.el7.elrepo.x86_64.rpm yum install kernel-ml-tools-libs-3.15.6-1.el7.elrepo.x86_64.rpm yum install kernel-ml-tools-3.15.6-1.el7.elrepo.x86_64.rpm wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-tools-libs-devel-3.15.6-1.el7.elrepo.x86_64.rpm yum install kernel-ml-tools-libs-devel-3.15.6-1.el7.elrepo.x86_64.rpm wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/perf-3.15.6-1.el7.elrepo.x86_64.rpm yum install perf-3.15.6-1.el7.elrepo.x86_64.rpm wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/python-perf-3.15.6-1.el7.elrepo.x86_64.rpm yum install python-perf-3.15.6-1.el7.elrepo.x86_64.rpm yum --enablerepo=elrepo-kernel install kernel-ml

Далее отредактируйте файл /boot/grub/grub.conf. Его содержимое должно в итоге иметь следующий вид:

default=0 timeout=5 title vmlinuz-4.0.4-1.el7.elrepo.x86_64 root (hd0,0) kernel /boot/vmlinuz-4.0.4-1.el7.elrepo.x86_64 console=hvc0 xencons=tty0 root=/dev/xvda1 ro initrd /boot/initramfs-4.0.4-1.el7.elrepo.x86_64.img

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

Настройка и запуск FTP-сервера:

Редактируем конфигурационный файл vsftpd.conf согласно своим потребностям: В CentOS, Fedora конфигурационный файл располагается в директории:

/etc/vsftpd/vsftpd.conf

Настройки по умолчанию позволяют уже подключаться как анонимным пользователям (ftp, anonymous) без ввода пароля, так и локальным пользователям, которые созданы на Вашем сервере (кроме root).

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

В Gentoo изначально представлен пример конфигурационного файла, расположенный в директории /etc/vsftpd/vsftpd.conf.example. Раскомментировав необходимые параметры в примере файла, Вы можете его сохранить под названием vsftpd.conf в этой же директории:

cp /etc/vsftpd/vsftpd.conf.example /etc/vsftpd/vsftpd.conf nano /etc/vsftpd/vsftpd.conf
service vsftpd start

После правки конфигурационного файла FTP-сервер нужно запустить командой:

/etc/init.d/vsftpd start

Проверить успешность установки можно командой

netstat -tanp | grep LISTEN

Среди результатов вывода должен отображаться порт 21.

Также, для ознакомления с принципом работы vsftpd Вы можете вызвать справку по данному FTP-серверу командой:

man vsftpd

Примечание

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

CentOS, Fedora, Debian, Ubuntu:

# service vsftpd restart
# /etc/init.d/vsftpd restart

Как установить FTP-сервер на Ubuntu

Попробуйте настроить FTP-сервер по нашей инструкции — мы расскажем, как установить FTP-сервер на Ubuntu 20.04, настроить сервер vsftpd и подключить защищённое FTP-соединение простым способом. Инструкция также подойдет для дистрибутива Ubuntu версий 22.04, 18.04 и 16.04.

С FTP-сервером можно работать благодаря одному из базовых протоколов интернета — FTP. В операционной системе Ubuntu можно подключить такие популярные FTP-серверы, как: proftpd, wu-ftpd, pureftpd и vsftpd. Мы рассмотрим, как установить vsftpd Ubuntu — один из самых быстрых и безопасных серверов.

Чтобы начать работу с FTP-сервером vsftpd, установите и настройте его. Затем подключите защищённое соединение SSL/TLS, назначьте доступ FTP-пользователям и настройте брандмауэр. В инструкции ниже мы подробно описали каждый из этих этапов.

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

Чтобы установить на Ubuntu server vsftpd:

Обновите пакеты apt:

sudo apt update

Установите FTP-сервер vsftpd:

sudo apt install vsftpd

Проверьте работоспособность сервера:

sudo systemctl status vsftpd

вывод

Если сервер активен, в выводе появится надпись active: FTP server Ubuntu

Добавьте службу в автозагрузку:

sudo systemctl enable vsftpd

Готово, вы установили FTP-сервер vsftpd.

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

Настройте сервер vsftpd через файл конфигурации — /etc/vsftpd.conf. Для этого:

Скопируйте оригинальный файл с настройками в файл /etc/vsftpd.conf.original:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original

Откройте конфигурационный файл:

sudo nano /etc/vsftpd.conf

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

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