Настройка на примере Ubuntu Linux В данной статье будет показано, как выполняется настройка FTP сервера на Ubuntu Linux. Статья подходит пользователям Виртуального сервера Ubuntu. Для передачи файлов используется протокол FTP (File Transfer Protocol), поэтому мы будем настраивать ни что иное, как .

Выбор

На базе Linux/UNIX разработано очень много различных , а именно: proftpd, , , vsftpd. Какой из них выбрать?

Если вам нужно максимум настроек и максимальная гибкость, тогда нужно выбрать proftpd. Это настоящий монстр (в хорошем смысле этого слова) по сравнению с остальными.

Vsftpd (Very Secure FTP Daemon) позиционируется как простой, но очень защищенный FTP. Обслуживает официальные репозитарии ftp.debian.org, ftp.redhat.com, ftp.openbsd.org, ftp.freebsd.org и других дистрибутивов. Если настройка FTP сервера Ubuntu выполнена правильно, и есть надежда на лучшую защищенность, он вроде бы работает чуть быстрее — вот что можно сказать о vsftpd. Серьезное ограничение vsftpd — он не позволяет в системе одновременную регистрацию обычных и анонимных клиентов.

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

Самый древний вариант — . Старый и «дырявый». По причине его почтенного возраста и не очень совершенной безопасности не рекомендуется к использованию. Оптимальным вариантом на сегодняшний день является сервер proftpd. Настройка FTP сервера Ubuntu такого типа требует знаний, но это наиболее гибко настраиваемое и при этом защищенное решение.

Установка

Для установки proftpd нужно установить одноименный пакет, который имеется во всех дистрибутивах Linux. Введите команду:

Рис. 1. Установка

Конфигурационные файлы сервера хранятся в каталоге /etc/proftpd. Основной конфигурационный файл называется proftpd.conf и будет рассмотрен далее.

Управление и настройка FTP сервера Ubuntu выполняется с помощью команд:

Первая команда, как обычно, запускает сервер, вторая — перезапускает, третья — останавливает. Последняя команда показывает состояние сервера. Когда серверу «плохо», с помощью этой команды можно узнать, что ему «не нравится». Пока запускать сервер не нужно.

Настройка

Далее — небольшое практическое руководство, необходимое чтобы была выполнена настройка FTP сервера Ubuntu. Первым делом нужно исправить директиву DefaultRoot так:

Для каждого пользователя его домашний каталог станет его корневым каталогом. Это означает, что клиент не сможет выйти за пределы его домашнего каталога и прочитать ваши системные конфигурационные файлы.

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

В глобальной секции можно ограничить доступ только пользователям вашей виртуальной сети, для этого потребуется дополнительная настройка FTP сервера Ubuntu. Это можно сделать путем ограничения операции LOGIN, например:

виртуальной сети можно посмотреть в разделе Сети панели управления Xelent. Если у вас несколько виртуальных сетей, нужно указать сети, к которой подключен настраиваемый сервер.

Рис. 2. виртуальной сети

Конечно, такое ограничение допустимо только, если вы создаете для нужд компании. Если вы собираетесь предоставлять доступ всем желающим, например, создаете , то ограничивать регистрацию клиентов не нужно.

Теперь поговорим об аутентификации пользователей. В большинстве случаев вам будет удобнее использовать для аутентификации саму систему:

Если немного (пусть даже около сотни), тогда в Linux настройка FTP сервера делается проще. При желании можно использовать аутентификацию PAM:

Когда же пользователей очень много (несколько сотен или тысяч), удобнее для аутентификации использовать MySQL. В этом случае учетные записи будут храниться не в /etc/passwd, а в отдельной таблице MySQL. Такой вариант настройки выходит за рамки этой статьи и будет непременно рассмотрен в следующих наших статьях. Следите за нашим блогом.

Ускорить аутентификацию может отключение следующих директив:

Первая строка отключает (давно уже не используются), вторая — запрещает разрешать пользователей в доменные имена. При желании вы всегда сможете разрешить в доменное имя вручную, если вам это будет нужно. Зато при частом использовании сервера отключив разрешение , вы существенно повысите скорость работы сервера.

Директива TimeoutLogin задает, сколько времени можно потратить пользователю на аутентификацию. По умолчанию — 60 секунд. Представьте ситуацию. Пользователь подключается к серверу. Сервер просит его ввести логин. Пользователь его вводит. Затем пользователь долго и нудно вспоминает свой пароль. Если с момента подключения прошло 60 секунд, а пользователь так и не ввел пароль, то он отключается. Но кто сейчас вводит пароль вручную? Обычно он сохраняется в таком как Total Commander, Filezilla. Программа вводит пароль моментально, поэтому нечего ждать 60 секунд. Достаточно ожидания в 20 секунд — специально для пользователей, которые вводят пароль вручную. Думаю, 20 секунд вполне достаточно, чтобы ввести имя и пароль вручную:

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

Но если вы настраиваете , к которому будут подключаться пользователи Интернета, нужно помнить о NAT. Представьте, что есть другая локальная сеть с одним реальным (как правило, реальный есть только на шлюзе). Получается, что к вашему серверу могут подключиться несколько пользователей из этой сети и у всех них будет одинаковых , хотя сами пользователи будут разные. Обычно такие ситуации — редкие, поэтому можно ограничиться 2–3 клиентами. Но бывают исключения — у вас может быть очень популярный сервер, например, с музыкальным контентом или же вы знаете, что есть другая сеть, практически все пользователи которой будут подключаться к вашему серверу. Здесь решать вам, в Ubuntu установка FTP сервера позволяет настраивать и этот параметр. Пока установим ограничение на уровне 3 пользователей с одного :

Максимальное число одновременных клиентов задается директивой MaxInstances. Для предотвращения лучше не устанавливать большие значения для этого параметра:

С другой стороны, если выполняется Ubuntu установка FTP сервера , на котором будет 1000 пользователей, а вы разрешили одновременную работу всего двадцати пользователям, может возникнуть ситуация, когда пользователи не смогут войти на сервер. Тогда придется увеличивать это число. Насколько — нужно смотреть по ситуации и по количеству пользователей. Теоретически можно увеличить это значение до 10% от количества пользователей, например:

Об оперативной памяти можно особо не заботиться, proftpd довольно экономно ее использует. Каждый процесс proftpd занимает около 2.5 Мб, следовательно, 100 процессов займут всего 250 Мб. Самое страшное — это загрузка процессора. При закачке одного файла один процесс proftpd занимает от 10 до 30% процессорного времени одного ядра. Вот и считаем, что если даже один процесс расходует 10% процессорного времени одного ядра, всего 10 процессов «сожрут» одно ядро процессора. 40 одновременных процессов окажут ощутимое влияние даже на четырехядерный процессор. Вот поэтому в настройках по умолчанию и рекомендует не превышать значение 30 для этого параметра. Также довольно интересный параметр MaxClientsPerUser. Означает, сколько соединений может создать один пользователь. Чтобы один пользователь не залогинился 30 раз и не узурпировал все 30 процессов, рекомендую ограничить это значение до 1:

MaxClientsPerUser 1 «Only one connection at a time».

Когда выполняется настройка FTP сервера Ubuntu server, первый параметр этой директивы — число соединений. Второй — сообщение об ошибке, которое будет выведено. Если у клиента медленное или нестабильное соединение, бывает так, что он может начать передачу файла, но потом связь может оборваться. Можно задать , определяющий, сколько нужно ждать в такой ситуации до разъединения. Медленные и нестабильные соединения уходят в прошлое, поэтому можно понизить время ожидания с 5 минут (300 секунд) до 2 минут:

Это делается специально, чтобы процесс proftpd завершился как можно быстрее и не занимал драгоценное процессорное время.

Максимальная продолжительность сессии с момента аутентификации задается директивой TimeoutSession. По умолчанию эта настройка FTP сервера Ubuntu server составляет 1 час, чего вполне хватит даже для загрузки больших файлов. Например, при относительно низкой скорости загрузки в 1 Мбайт/с файл размером 1 Гб загрузится примерно за 1024 секунды. То есть за одну такую сессию пользователь сможет загрузить три таких файла. Думаю, этого более, чем достаточно.

Вступление

В этом руководстве расскажем, как установить FTP сервер на VPS с ОС Ubuntu. Будем использовать сервер vsftpd, который считается самым быстрым и безопасным FTP сервером для UNIX-систем.

FTP или File Transfer Protocol – протокол приема и передачи файлов в сети. Используя модель клиент/сервер и безопасность SSL/TLS, FTP позволяет пользователям обмениваться файлами с удаленными компьютерами безопасно, эффективно и надежно, передавая данных по протоколу TCP/IP.

FTP работает подобно HTTP или SMTP, с единственным отличием, что он ответственен за безопасную передачу данных от отправителя к получателю, а не веб-страницы с сервера к пользователю или электронного письма через интернет. В этом руководстве рассмотрено создание FTP сервера на ОС Ubuntu версии 16.04.

Примечание: Текущее руководство основывается на версии ОС Ubuntu 16.04. Но вы можете применить те же шаги по созданию FTP сервера на Ubuntu 14.04.

Прокачайте ваш проект, воспользовавшись скидками на VPS-хостинг в Hostinger! Большой выбор планов, как для учебных, так и для крупных коммерческих проектов.

  • Шаг 1 – Установка Vsftpd
  • Шаг 2 – Разрешение FTP трафика на фаерволе
  • Шаг 3 – Создание каталога пользователя
  • Шаг 4 – Настройка vsftpd
  • Шаг 5 – Делаем защищенный FTP
  • Шаг 6 – Проверка подключения, используя FileZilla
  • Заключение

Шаг 1 – Установка Vsftpd

Прежде всего, давайте сделаем обновление всех пакетов перед началом установки демона vsftpd. Для этого выполним команду:

Дождитесь завершения всех процессов и вы увидите подтверждающее сообщение:

Затем установим демон vsftpd следующей командой:

Вы получите уведомление требующее подтверждения, нажмите Y и Enter для продолжения установки.

Установка vsftpd на ubuntu vps

По завершению установки, сделаем бэкап оригинального файла конфигурации, чтобы начать с чистого файла настроек:

Теперь мы можем переходить к следующему шагу и настраивать фаервол.

Шаг 2 – Разрешение FTP трафика на фаерволе

Чтобы позволить серверу FTP, развёрнутому на ОС Ubuntu взаимодействовать с внешним миром, нужно настроить путь через фаервол. Для начала посмотрим включён ли фаервол. Запустите следующую команду для определения статуса:

Если вы увидите такое сообщение:

Это значит, что фаервол не установлен и можно перходить к следующему шагу.

Если же на выходе будут показаны правила или сообщение о том, что фаервол активен, нужно определить, как он будет обрабатывать FTP-трафик. Давайте сделаем следующее, откроем порты 20 и 21 для трафика FTP; порты 40000-50000 будут зарезервированы, как диапазон пассивных портов, который в конечном итоге будет установлен в файле конфигурации; порт 990 будет использоваться, когда TLS будет включен. Выполним следующие команды:

Теперь посмотрим на статус:

Результат будет выглядеть где-то так:

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

Шаг 3 – Создание каталога пользователя

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

Заполните пароль и другие детали, когда запросит. В идеале, с точки зрения безопасности, FTP должен быть ограничен одним специальным каталогом. Vsftpd использует chroot для создания этой защиты. Со включённым chroot, локальный пользователь ограничивается его домашним каталогом (по умолчанию). Однако, может оказаться, что из-за защиты vsftpd, пользователь не сможет ничего создавать в каталоге. Мы не убираем права на запись в домашнем каталоге, вместо этого мы сделаем каталог ftp, который будет вести себя как chroot вместе с сохранением способности к записи, что будет позволять хранить файлы. Используйте такую команду для создания каталога FTP:

Установите права владения:

Наконец, удалите права на запись:

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

На выходе мы увидим приблизительно это:

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

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

Шаг 4 – Настройка vsftpd

Чтобы продолжить устанавливать FTP сервер на Ubuntu VPS, нам нужно настроить vsftpd и наш FTP-доступ. В этом руководстве мы разрешим одному пользователю подключаться по FTP, используя локальную консоль. Необходимая для этого двух этапная настройка уже установлена в конфигурационном файле (vsftpd.conf). Вначале проверьте, чтобы настройки в файле совпадали с указанными ниже, используя команду nano:

В этом же файле, продолжим удаляя # включаем write_enable:

Chroot также раскоментируем, чтобы убедиться, что пользователь, подключившийся по FTP имеет доступ к файлам внутри разрешённой директории:

Несколько новых значений будут также нужны для добавления вручную. Вы можете просто вставить их в конец файла. Вначале, user_sub_token добавим к пути каталога local_root. Это позволит конфигурации работать с текущим пользователем и любым другим пользователем, который будет добавлен позже:

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

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

Флаг userlist_deny отвечает за переключение логики, когда он установлен в “NO”, только те пользователи, которые есть в списке имеет доступ. По завершению нажмите CTRL+X и подтвердите сохранения изменений в файле.

В завершение, продолжим создание и добавление нашего пользователя в файл:

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

Вывод должен быть “alex”, как показано на скриншоте:

Перезапустите демона, используя следующую команду, чтобы запустить изменения настроек:

Шаг 5 – Делаем защищенный FTP

По умолчанию, FTP не делает никакого шифрование данных, поэтому мы будем использовать TLS/SSL, чтобы позаботиться о безопасности. В качестве первого шага нам нужно создать SSL сертификат и использовать его для защиты Ubuntu FTP сервера. Для начала выполним следующую команду:

Флаг —days делает сертификат действующим в течение года и мы включаем 2048-битный приватный ключ RSA в этой же команде. Когда запросит нужные данные введите их в предоставленном поле.

После создания сертификата ещё раз откройте конфигурационный файл:

В конце файла есть строка с “_rsa”. Закомментируйте эти две строки:

Вместо этого мы направим конфиг файл на сертификат, который мы создали. Добавьте такие строки:

Теперь мы включим SSL и убедимся, что только пользователи со включённым SSL могут с нами связываться. Измените значение ssl_enable на YES:

Теперь добавьте следующие строки для продолжения создания защиты (это запретить какие-либо анонимные соединения с использованием SSL):

Настройте TLS используя:

Здесь мы добавим ещё 2 опции. Во-первых, повторное использование SSL не будет необходимым, потому что это может привести к разрывам у большого количества клиентов. Во-вторых, мы будем использовать высокозащищенный код шифрования, что будет означать, что длина ключа соответствует (или больше, чем) 128 бит.

Сделаем ещё раз перезапуск, для вступления изменений в силу:

Прекрасно! Вот вы и настроили FTP сервер на вашем Ubuntu VPS для работы с протоколом SSL/TLS.

Шаг 6 – Проверка подключения, используя FileZilla

Сегодня FTP клиенты поддерживают настройку шифрования TLS, поэтому это прекрасная возможность проверить, работает ли наш Ubuntu FTP сервер как следует. Чтобы проверить соединение, будем использовать FileZilla FTP клиент. Для начала запустите FileZilla, нажатием на иконку Site Manager.

Нажмите на кнопку New Site в появившемся окне начните заполнять данные о Ubuntu FTP сервере.

Добавление ubuntu ftp server в filezilla

Заполните необходимые поля информацией о недавно созданном Ubuntu FTP сервере. Так как мы настроили его с использованием TLS, мы может отметить настройку шифрования в «explicit FTP over TLS» положение. Окончательное окно настроек выглядит так:

filezilla завершающая настройка для ftp server

Как только настроите, нажимайте Connect и появится окошко с запросом для введения пароля пользователя FTP.

Пароль пользователя ftp filezilla

В заключение вам нужно будет подтвердить SSL сертификат на вашем FTP сервере на Ubuntu VPS.

Подтвердить сертификат ftp сервера

После подтверждения, корневой root-каталог с тестовым файлом появятся на вашем экране.

Успешное подключение к серверу ftp ubuntu

Это всё! Теперь вы можете производить любую передачу файлов с вашего компьютера на Ubuntu FTP сервер и обратно.

Заключение

В этом руководстве мы прошли шаг за шагом путь создания для локального пользователя безопасного способа передачи файлов через FTP с SSL/TLS на Ubuntu FTP сервере. Также мы протестировали соединения, используя FileZilla, чтобы убедиться, что всё работает.

Автор

Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.

Содержание

Сервер FTP

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

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

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

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

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

Настройка анонимного доступа по 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

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

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

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

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

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

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

Шифрование

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

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

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

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

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

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

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Простой FTP-сервер на базе Ubuntu (vsftpd)

Простой FTP-сервер на базе Ubuntu (vsftpd)

  • Автор: Уваров А.С.
  • 27.02.2012

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

Но сначала немного теории. Протокол FTP (File Transfer Protocol) предназначен, как следует из названия, для передачи файлов и появился в 1971 году, но несмотря на свой преклонный возраст продолжает широко использоваться до сих пор. Хотя сегодня его использование носит чаще технический характер, для доступа конечных пользователей к данным обычно используют браузер и протокол HTTP. К достоинствам FTP можно отнести возможность докачки файла при обрыве связи и возможность одинаково легко как считывать файлы, так и записывать их. Но есть и недостатки, самый серьезный — низкая безопасность, поэтому этому вопросу следует уделить самое пристальное внимание.

FTP, как и PPTP, использует разные соединения для передачи команд и передачи данных. При инициации соединения клиент передает управляющие команды на порт 21 сервера, который в свою очередь устанавливает исходящее соединение для передачи данных на 20 порту, порт со стороны клиента определяется в результате согласования. Однако при нахождении клиента за NAT соединение подобным образом установить не удастся, поэтому был разработан дополнительный режим FTP passive mode (пассивный режим), когда соединение для передачи данных устанавливает не сервер, а клиент, однако с параметрами, указанными сервером. Эти моменты следует учитывать при форвардинге FTP и при настройке сетевого фильтра.

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

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

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

Данная опция имеет взаимоисключающую запись, которую следует привести к виду:

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

Разрешим пользователям записывать файлы и укажем серверу автоматически выставлять нужные права (755 на папки и 644 на файлы):

Если требуется установить иной набор прав: 775 и 664, то umask должен быть равен 002.

По умолчанию сервер использует время GMT, чтобы файлам устанавливалось время вашего часового пояса, используйте опцию:

Включим лог загружаемых и скачиваемых файлов:

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

Следующие опции задают место и формат хранения логов:

Зададим таймауты сессии:

Также в целях безопасности изолируем пользователя в его домашнем каталоге и сразу разрешим запись в его корень:

Для коррекной работы с текстовыми данными можно включить поддержку ASCII, это позволит при передаче текстового файла с Windows системы в UNIX (Linux) корректно заменить символы переноса строки с CR+LF на LF для корректного отображение содержимого и выполнить обратное преобразование при передаче его назад.

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

Достаточно интересная опция:

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

Все остальные опции оставляем по умолчанию, хотя можете отредактировать приветствие сервера, написав там все что вам нравится:

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

Перезапускаем сервер (это нужно делать всякий раз после внесения изменений в конфигурацию):

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

В случае появления ошибки, связанной с некорректной работой vsftpd и системы безопасности seccomp:

добавьте в файл недокументированную опцию:

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

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

По умолчанию vsftpd запрещает доступ к серверу пользователям, указанным в данном списке еще до ввода пароля, т.е. реализует принцип разрешено всем, кому не запрещено. Но гораздо лучше будет реализовать иной подход: запрещено всем, кому не разрешено. Т.е. разрешать доступ только указанным пользователям. Для этого добавим опцию:

Теперь доступ к FTP-серверу будут иметь только явно указанные пользователи, их следует указывать в vsftpd.user_list по одному в строку, например:

Если не указано иное, то подключившись по FTP пользователи попадают в свой домашний каталог. Это не всегда удобно, часто нужно перенаправлять их в иную директорию. Если это общая для всех папка, скажем /var/ftp, то можно задать опцию:

Которая перенаправит всех пользователей в указанный каталог и изолирует их там.

Это самая простая ситуация, реальные задачи обычно сложнее, допустим нам надо установить пользователю Иванову в качестве корневой директории /var/www/example1.com, а Петрову /var/www/example2.com, чтобы каждый из них работал со своей папкой. Для этих целей можно использовать еще одну возможность vsftpd — пользовательские настройки, которые перекрывают настройки основного конфигурационного файла.

Для этого добавим опцию:

Затем создадим саму директорию

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

Создадим файл с настройками для Иванова:

и внесем в него опцию:

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

Если вам нужно скрыть реальных владельцев файлов и папок, то можно использовать опцию:

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

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

Главное меню » Операционная система Ubuntu » Как установить FTP-сервер с VSFTPD на Ubuntu 18.04

Для Linux доступно множество FTP-серверов с открытым исходным кодом. Самыми популярными и широко используемыми являются PureFTPd, ProFTPD и vsftpd. В этой статье мы будем устанавливать vsftpd. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, как настроить vsftpd для ограничения доступа пользователей к их домашнему каталогу и шифрования всей передачи с помощью SSL/TLS.

Хотя эта статья написана для Ubuntu 18.04, такие же инструкции применяются к Ubuntu 16.04 и любому дистрибутиву на базе Debian, включая Debian, Linux Mint и Elementary OS.

Предпосылки

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

Установка vsftpd на Ubuntu 18.04

Пакет vsftpd доступен в репозиториях Ubuntu. Чтобы установить его, просто выполните следующие команды:

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

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

Настройка vsftpd

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

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

Начните с открытия файла конфигурации vsftpd:

1. Доступ к FTP

Мы разрешаем доступ к FTP-серверу только локальным пользователям, находим директивы anonymous_enable и local_enable и проверяем соответствие вашей конфигурации следующим строкам:

2. Включение загрузки

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

3. Chroot

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

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

    Метод 1. – Рекомендуемый способ разрешить загрузку – включить chroot и настроить FTP-каталоги. В этой статье мы создадим каталог ftp внутри home пользователя, который будет служить chroot и записываем каталог uploads для загрузки файлов.

Метод 2. Еще один вариант – добавить следующую директиву в файл конфигурации vsftpd. Используйте этот параметр, если вы должны предоставить доступ к записи для своего пользователя в свой домашний каталог.

4. Пассивные FTP-соединения

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

Добавьте в файл конфигурации следующие строки:

5. Ограничение входа пользователя

Чтобы разрешить только определенным пользователям входить на FTP-сервер, добавьте следующие строки в конец файла:

Когда эта опция включена, вам необходимо явно указать, какие пользователи могут войти, добавив имена пользователей в файл /etc/vsftpd.user_list (по одному пользователю в строке).

6. Обеспечение передачи с помощью SSL/TLS

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

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

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

В этой статье мы сгенерируем самоподписанный сертификат SSL с помощью команды openssl.

Следующая команда создаст 2048-битный закрытый ключ и самоподписанный сертификат, действительный в течение 10 лет. Как закрытый ключ, так и сертификат будут сохранены в одном файле:

Теперь, когда создан SSL-сертификат, откройте файл конфигурации vsftpd:

Найдите директивы rsa_cert_fileи rsa_private_key_file, измените их значение pam в пути к файлу и установите директиву ssl_enable на YES:

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

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

После того, как вы закончите редактирование, файл конфигурации vsftpd (исключая комментарии) должен выглядеть примерно так:

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

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

Если вы используете брандмауэр UFW, вам необходимо разрешить FTP-трафик.

Чтобы открыть порт 21( порт команд FTP), порт 20( порт данных FTP) и 30000-31000(диапазон пассивных портов), выполните следующие команды:

Чтобы избежать блокировки, мы откроем порт 22:

Перезагрузите правила UFW, отключив и снова включив UFW:

Чтобы проверить выполнение изменений:

Создание пользователя FTP

Чтобы протестировать наш FTP-сервер, мы создадим нового пользователя.

  • Если у вас уже есть пользователь, которому вы хотите предоставить FTP-доступ, пропустите 1-й шаг.
  • Если вы установили allow_writeable_chroot=YES в своем файле конфигурации, пропустите 3-й шаг.
  1. Создайте нового пользователя с именем newftpuser:

    Добавьте пользователя в список разрешенных пользователей FTP:

    Создайте дерево каталогов FTP и установите правильные разрешения:

    Как обсуждалось в предыдущем разделе, пользователь сможет загружать свои файлы в каталог ftp/upload.

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

Отключение доступа к оболочке

По умолчанию при создании пользователя, если явно не указано, у пользователя будет доступ к серверу SSH.

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

Создайте оболочку /bin/ftponly и сделайте ее исполняемой:

Добавьте новую оболочку в список допустимых оболочек в файл /etc/shells

Измените оболочку пользователя на /bin/ftponly:

Заключение

В этой статье вы узнали, как установить и настроить безопасный и быстрый FTP-сервер в вашей системе Ubuntu 18.04.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как настроить ftp сервер ubuntu