Какой параметр включает возможность загрузки на сервер vsftpd файлов анонимными пользователями

Обновлено: 02.07.2024

Протокол передачи файлов (FTP) — это TCP протокол для передачи файлов между компьютерами, работает на основе модели клиент-сервер. Серверный компонент постоянно слушает FTP-запросы от удаленных клиентов. При получении запроса он управляет входом и установкой соединения. На протяжении сессии он выполняет любые команды, переданные FTP клиентом.

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

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

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

Разрешить или запретить запуск службы при загрузке системы:

Проверить, что служба vsftpd.service работает:

В процессе установки FTP-сервера создается пользователь ftp с домашней директорией /srv/ftp :

Доступ к FTP серверу возможен в двух режимах:

  • В анонимном режиме удаленный клиент может получить доступ к FTP серверу, используя учетную запись «anonymous» или «ftp» и передав адрес email в качестве пароля. Данные в директории /srv/ftp доступны для всех анонимных пользователей.
  • В авторизованном режиме пользователь должен иметь учетное имя и пароль в системе. Доступ к каталогам и файлам зависит от прав доступа пользователя, указанного при входе. Обычный пользователь ограничен своей домашней директорией.

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

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

Доступ на чтение

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

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


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

Перейдем в /srv/ftp и создадим неколько каталогов, которые будут доступны на запись всем пользователям:


Доступ на запись

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


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

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

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

Доступ на чтение

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


Доступ на запись

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


Защита FTP-сервера

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

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

Еще один способ решения проблемы — отменить проверку записи в домашний каталог:

анонимный ftp сервер на vsftpd (с аплоадом. легко управляемый.)

Полезные советы и программы от пользователей нашего форума.

анонимный ftp сервер на vsftpd

Здравствуйте. Решил сделать небольшой мануал для тех кто хочет открыть анонимный фтп, без особых усилий, но чтобы он был защищённым и надёжным.
само собой всё будет сделано на vsftpd, потому что я считаю его самым правильным и достойным внимания ftp сервером.

1) Установка
Думаю ни у кого не возникнет вопросов с установкой, vsftpd можно установить без проблем почти в любом дистрибутиве Linux или *BSD системах.
в пакетном менеджере ubuntu:
sudo apt-get install vsftpd
в мандриве:
urpmi vsftpd
в сюсе:
yast -i vsftp
ну или можно установить через графический интерфейс.

2) Пользователи, Группы, права доступа.
В данном примере я хочу показать как сделать анонимный фтп с аплоадом и лёгкой управляемостью. Поэтому следующим шагом опишу как поставить правильные права доступа, для лёгкого управления закачанными файлами.

Прежде всего хочу отметить что для удобства работы необходим иметь как пользователя ftp так и группу ftp.
Например в убунту при установке vsftpd группа ftp не создаётся. А создаётся только лишь пользователь. А в Сюсе создаётся и группа и пользователь (прошу прощения если где-то ошибаюсь)

Для начала проверьте присутствие пользователя ftp в файле /etc/passwd
и группы ftp в файле /etc/group
можно сделать это с помощью комманды grep:

У меня эти значения уже добавлены. Вам возможно придётся их изменить.
в файле passwd вам возможно захочется изменить домашнюю директорию пользователя ftp. записи в файле имеют формат
login:password:UID:GID:GECOS:home directory:shell

GID (Group ID) в данном случае указан по умолчанию.конечно группы 65534 у меня нету. В вашем случае этот номер может отличатся. Его менять не требуется. GECOS это дополнительная информация о пользователе. Можно заметить что она у меня пропущена. Это поле менять тоже не требуется. далее идёт поле где указана домашняя директория. У меня это /home/ftp. Анонимные пользователи, заходящие на фаш ftp будут попадать в домашнюю директорию именно этого пользователя. Если Ваш ftp будет находится на другом диске, измените эту директорию на нужную Вам. Последнее поле (shell) менять не следует.
Вобщем из всего этого Вам нужно (а может и не нужно) изменить поле указывающее на домашнюю директорию пользователя ftp.
Файл /etc/group гораздо проще.
Записи в нём имеют формат
group:password:GID:users

Если по умолчанию у вас в файле /etc/group такой группы нет, вам нужно её создать.
начните с поиска свободного GID. Обычно группы 49 нету. можете посмотреть что идёт перед 50й группой, и если 49 там нету, смело пишите ftp:x:49:
и добавьте в последнее время пользователя под которым вы будете перемещать файлики на фтп. У меня это kasak. Сохраните всё это и можете приступать к созданию фиректорий и распределению прав доступа.
Для этого перейдите в папку где в вас предполагается корень ftp.
прежде всего заметьте что эта папка должна иметь владельца root и права доступа непозволяющие запись.
для этого примените на эту директорию комманды: (приведу свой пример)
chown root /home/ftp
chmod -w /home/ftp
теперь создайте в этой папке папку для аплоада.
mkdir upload
задайте ей права доступа
chmod a+rwx upload
и владельца (СВОЕГО пользователя. в моём случае это kasak. Группу надо задать ftp (это обязательно)
chown kasak:ftp upload
это сделает владельцем пользователя kasak и группу ftp.
Теперь нужно дать директории upload бит SetGID это делается коммандой
chmod g+s upload
Это действие нужно для того чтобы всем создаваемым внутри аплоада папкам присваивался бы владелец тот же что и у самого аплоада. Это действие необходимо.
Всё. Теперь у Вас есть upload. Можете положить в домашнюю директорию ftp другие папки, которые вы хотите раздавать.
Присвойте им владельца - вашего пользователя, группу ftp (для наглядности)
присвойте добавленным папка права доступа только на чтение ( и на запись владельцу)
chown kasak:ftp -R
chmod a-w -R chmos u+w -R
опция -R служит для задания прав доступа рекурсивно (т.е. применится и для вложенных папок)
Теперь при вызове комманды ls -l внутри директории с ftp вы можете видеть что-то типа

Обратите внимание на права доступа директории upload.
drwxrwsrwx

3) Конфигурационный файл
Откойте файл /etc/vsftpd.conf подходящим Вам редактором. Я приведу пример уже готового конфига, с удалёнными комментариями, и тут же опишу его опции и зачем они нужны.

Для запуска сервиса требуется добавить его в автозагрузку. Начиная с версии 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() «заточение», выше которого (по дереву каталогов) он не сможет подняться.

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

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

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

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

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

Шифрование

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

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

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

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

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

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

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


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

  • в FreeBSD — /usr/local/etc/vsftpd.conf
  • в Fedora — /etc/vsftpd/vsftpd.conf
  • в Debian — /etc/vsftpd.conf

После внесения изменений в конфигурационный файл вашего vsftpd не забывайте перезапускать его. В FreeBSD:

Управление доступом

Обратите внимание на то, что в процессе установки vsftp в вашу систему добавляется пользователь с именем учётной записи ftp. Предназначение этой учётной записи — организация доступа к каталогу анонимного FTP. По умолчанию vsftpd разрешает доступ на чтение анонимным пользователям к домашнему каталогу учётной записи ftp. Не забудьте отключить его, если это вам не нужно, изменив значение соответствующего параметра:

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

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

Чтобы ваши локальные пользователи не «бродили» выше их домашних каталогов, можно включить следующее ограничение:

Обратите внимание на то, что если при определённых выше двух параметрах значение параметра chroot_local_user является равным YES, то учётные записи, перечисленные в файле chroot_list_file НЕ будут попадать под ограничения chroot.

Если вы хотите ограничить количество одновременных соединений к vsftpd, есть два способа сделать это: при помощи возможностей суперсервера xinetd или, если ваш демон работает в автономном режиме, при помощи параметра (естественно 10 заменив на нужное вам количество допустимых одновременных подключений):

После того, как в конфигурации вашего сервера параметр write_enable установлен равным YES и anonymous_enable определён как YES вы можете управлять доступом относительно операций создания новых файлов/каталогов анонимными пользователями. Разрешить создавать новые каталоги анонимам:

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

Разрешить анонимам загружать новые файлы:

Ограничить скорость обмена данными для анонимных пользователей в автономном режиме сервера можно следующим параметром (значение указывается в байтах/сек):

По умолчанию umask файлов vsftpd использует равный 077, то есть файлы создаются доступными на чтение/запись только для владельца. Изменить значение umask анонимных пользователей можно при помощи параметра anon_umask:

а для локальных — при помощи параметра local_umask:

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

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

Сетевые параметры

Если ваш vsftpd запускается в автономном режиме, а не через xinetd, тогда необходимо явно указать это:

то же, для IPv6 (помните, что демон может работать одновременно только либо с IPv4, либо с IPv6):

Определить IPv4 адрес, на который должен «вешаться» демон, можно параметром:

При необходимости вы можете отключить возможность использования клиентами PASV-режима:

Разное

Начиная с версии 2.0.7 vsftpd умеет удалять неудавшиеся закачки, если определить следующий параметр:

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

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

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

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

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

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

Настройка vsftpd

Конфигурация сервера vsftpd хранится в файле /etc/vsftpd.conf

Большинство настроек сервера хорошо документированы внутри файла. Чтобы узнать обо всех доступных вариантах, посетите страницу документации vsftpd.

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

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

1. Доступ по FTP

Мы разрешим доступ к FTP-серверу только локальным пользователям. Найдите anonymous_enable и local_enable и убедитесь, что ваша конфигурация соответствует приведенным ниже строкам:

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

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

3. Chroot jail

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

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

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

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

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

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

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

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

6. Защита передачи с помощью SSL / TLS

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

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

И закрытый ключ, и сертификат будут сохранены в одном файле.

После создания 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-й шаг.

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

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

Выполните следующие команды, чтобы создать /bin/ftponly и сделать его исполняемым:

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

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

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

Вывод

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

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

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