Меню

Vsftpd настройка anonymous no



Записки IT специалиста

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

  • Главная
  • Настраиваем FTP-сервер с виртуальными пользователями на базе vsftpd

Настраиваем FTP-сервер с виртуальными пользователями на базе vsftpd

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

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

Кроме того, ручное редактирование списков и настроек пользователей может оказаться весьма трудоемким делом если их не один-два, а существенно больше. Также иногда возникает ситуация, что светить данные реальных пользователей просто нежелательно, например, FTP используется движком сайта (CMS), связка пользователь-пароль явно прописана в конфиге и теоретически доступна любому работающему с сайтом сотруднику.

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

В нашей статье мы настроим FTP-сервер для реализации следующей схемы:

Пусть в нашем распоряжении имеется некий веб-сервер под управлением которого находятся три сайта: blue.lab, green.lab и red.lab, физически расположенные в одноименных директориях. Наша задача создать FTP-сервер с виртуальными пользователями, каждый из которых имеет доступ только к своему сайту.

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

Прежде всего установим соглашение: имя виртуального пользователя должно совпадать и именем корневой FTP-папки, в нашем случае папки сайта, а все такие папки должны располагаться в одном месте, т.е. подпадать под шаблон /var/www/$USER. Это позволит в дальнейшем с легкостью манипулировать сайтами и виртуальными пользователями, а также избежать путаницы в именах и настройках.

Определившись с моделью размещения данных можно переходить к настройкам ПО. Кроме vsftpd нам понадобятся пакеты libpam-pwdfile и apache2-utils. Последний входит в состав одноименного веб-сервера и если у вас уже работает Apache, то устанавливать его не надо.

Сама установка предельно проста:

После чего перейдем к настройкам FTP-сервера, которые расположены в файле /etc/vsftpd.conf, мы перечислим опции в порядке их нахождения в файле.

Данная опция запускает FTP-сервер как службу

ниже имеется аналогичная взаимоисключающая опция:

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

Запрещаем анонимных пользователей:

И разрешаем локальных (и виртуальных) пользователей:

Также разрешаем запись:

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

Это обеспечит установку прав 755 на папки и 644 на файлы, т.е. полный доступ только владельцу и чтение для группы и остальных.

Чтобы FTP использовал локальное время сервера, а не GMT установим:

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

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

Задаем путь к логу и его формат:

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

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

Обязательно изолируем пользователя в корне его домашней директории и рядом впишем опцию, разрешающую запись в корень:

Остальные опции оставляем без изменения.

Ниже добавим необходимые нам настройки. Разрешим пассивный режим и явно укажем диапазон портов:

Читайте также:  Настройка imacros для капчи

Включим виртуальных пользователей:

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

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

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

Теперь можно задать сами домашние директории

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

Если вы используете Ubuntu, то добавьте следующую недокументированную опцию:

Это позволит избежать ошибки 500 OOPS: prctl PR_SET_SECCOMP failed, которая возникает из некорректной совместной работы vsftpd и системы безопасности seccomp, в Debian данная ошибка не проявляется.

На этом настройка FTP-сервера закончена, сохраняем файл и переходим к настройке правил аутентификации. Откроем /etc/pam.d/vsftpd, закомментируем в нем все строки и добавим две свои:

После этого аутентификация локальных пользователей на FTP-сервере будет невозможна, работать будут только виртуальные. Опция pwdfile /etc/vsftpwd указывает путь к файлу паролей, его нам необходимо будет создать на следующем шаге.

Для создания пользователей будем использовать утилиту htpasswd из состава apache2-utils, для создания файла паролей и первого пользователя введите:

Ключ -c предписывает создать файл паролей, если он существует, то все данные в нем будут очищены, а файл перезаписан, -d задает необходимый для vsftpd алгоритм шифрования хэша пароля.

Следующие пользователи создаются командой (в нашем примере это пользователь green.lab):

Для удаления пользователя используйте (удаляем red.lab):

После чего можно перезапустить службу FTP-сервера и проверить его работу:

Как видим, настроить FTP-сервер с виртуальными пользователями по нашей инструкции (в отличие от многих иных «инструкций» в сети) абсолютно несложно и недолго. Если вы будете внимательно следовать всем нашим рекомендациям, то сложностей у вас возникнуть не должно.

Источник

OpenSource в заметках

Продолжая тему, начатую в предыдущей заметке о быстром и безопасном 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 пользователей, при котором ограничиваться будут не все пользователи, а лишь явно определённые. Для этого необходимо установить значение параметра chroot_local_user равным NO, создать файл с перечнем пользователей для которых chroot должен действовать (например, в /etc/vsftpd.chroot_list) и определить следующие два параметра:

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

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

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

Читайте также:  Ремонт скутера настройка зажигания

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

Источник

Настройка анонимного доступа к серверу Ubuntu 16.04 с помощью vsftp

FTP (File Transfer Protocol) – это сетевой протокол для обмена файлами между сервером и клиентом. Поскольку FTP передаёт данные в незашифрованном виде, он считается крайне опасным; вместо него рекомендуется использовать vsftp – версию протокола, которая поддерживает шифрование данных.

Многие пользователи сети Интернет предпочитают загружать данные с помощью браузера с помощью https; пользователи, имеющие навыки работы с командной строкой, обычно используют безопасные протоколы вроде scp или sFTP.

FTP часто используется для поддержки приложений и рабочих процессов со специфическими потребностями. Если ваше приложение позволяет вам выбирать протокол, выберите более современное решение, например, vsftp. Оптимизированный и высокопроизводительный протокол vsftp обеспечивает надежную защиту от уязвимостей, обнаруженных в других версиях FTP. Кроме того, он является протоколом по умолчанию для многих дистрибутивов Linux.

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

Примечание: Вместо FTP для управления файлами рекомендуется использовать scp, sFTP или любой другой защищенный протокол.

Требования

  • Сервер Ubuntu 16.04 (о начальной настройке сервера можно узнать здесь).
  • Пользователь с правами sudo.

1: Установка vsftp

Обновите индекс пакетов и установите демон vsftp:

sudo apt update
sudo apt install vsftpd

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

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

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

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

sudo ufw status
Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

Примечание: Вывод команды может отличаться.

Как видите, в данном случае брандмауэр не блокирует только трафик ssh. Значит, нужно разблокировать трафик FTP.

Брандмауэр ufw поддерживает список приложений, которые можно разблокировать по имени; список доступен по команде:

sudo ufw app list

Однако FTP не входит в этот список.

Кроме того, ufw проверяет файл /etc/services, чтобы узнать порт и протокол сервисов. В этот файл нужно добавить данные FTP. Откройте порт 20 для ftp-data и порт 21 для команд ftp.

sudo ufw allow ftp-data
sudo ufw allow ftp
sudo ufw status

Проверьте состояние брандмауэра. Теперь правила выглядят так:

Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
21/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
21/tcp (v6)ALLOW Anywhere (v6)
20/tcp (v6)ALLOW Anywhere (v6)

3: Подготовка места для файлов

Создайте каталог для хранения загруженных файлов. Флаг -p создаст все несуществующие вышележащие каталоги. Структура каталогов FTP позволяет систематизировать файлы; позже вы сможете расширить её, добавив каталоги для зарегистрированных пользователей.

sudo mkdir -p /var/ftp/pub

Установите на каталог права nobody:nogroup. Позже нужно будет передать все права на файлы пользователю и группе ftp.

Читайте также:  Настройка gps в digma

sudo chown nobody:nogroup /var/ftp/pub

Создайте в каталоге тестовый файл:

echo «vsftp test file» | sudo tee /var/ftp/pub/test.txt

Теперь можно протестировать работу vsftp.

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

В конфигурационном файле хранятся опции vsftp. Некоторые из них нужно отредактировать.

sudo nano /etc/vsftpd.conf

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

. . .
# Allow anonymous FTP? (Disabled by default).
anonymous_enable= YES
#
We’ll set the local_enable setting to “NO” because we’re not going to allow users with local accounts to upload files via FTP. The comment in the configuration file can be a little confusing, too, because the line is uncommented by default.
# Uncomment this to allow local users to log in.
local_enable= NO
. . .

Кроме того, нужно добавить в файл новые параметры.

Примечание: Полный список опций можно найти с помощью команды:

Добавьте в конфигурационный файл следующие параметры. Файл не имеет чёткой структуры, потому неважно, в какой части файла будут находиться новые опции.

#
# Point users at the directory we created earlier.
anon_root=/var/ftp/
#
# Stop prompting for a password on the command line.
no_anon_password=YES
#
# Show the user and group as ftp:ftp, regardless of the owner.
hide_ids=YES
#
# Limit the range of ports that can be used for passive FTP
pasv_min_port=40000
pasv_max_port=50000

Примечание: Если вы используете Iptables вместо UFW, разблокируйте все необходимые порты между pasv_min_port и pasv_max_port самостоятельно.

Сохраните и закройте файл.

sudo systemctl restart vsftpd

Команда systemctl не отображает вывод некоторых команд. Чтобы убедиться, что всё прошло успешно, введите:

sudo systemctl status vsftpd

Команда должна вернуть:

Aug 17 17:49:10 vsftp systemd[1]: Starting vsftpd FTP server.
Aug 17 17:49:10 vsftp systemd[1]: Started vsftpd FTP server.

5: Тестирование анонимного доступа

Откройте в браузере такую ссылку:

Если всё работает должным образом, вы увидите каталог pub:

Index of /
Name Size Date Modified
Pub/ 8/24/16, 7:58:00 PM

Теперь можете открыть каталог pub. В нем должен находиться файл test.txt. щёлкните правой кнопкой и сохраните файл.

Index of /pub/
Name Size Date Modified
[parent directory]
test.txt 16 B 8/24/16, 7:58:00 PM

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

Примечание: Встроенный FTP-клиент командной строки Windows, ftp.exe, не поддерживает пассивного режима. Потому, пользователям Windows рекомендуется выбрать другой FTP клиент, например WinSCP.

Команда предложит указать имя пользователя. Вы можете ввести ftp или anonymous – они работают одинаково.

Connected to 203.0.113.0.
220 (vsftpd 3.0.3)
Name (203.0.113.0:21:8host): ftp

Нажмите enter. На экране появится:

230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Убедитесь, что пассивный режим работает должным образом:

ls
227 Entering Passive Mode (45,55,187,171,156,74).
150 Here comes the directory listing.
drwxr-xr-x 2 ftp ftp 4096 Aug 17 19:30 pub
226 Directory send OK.

Теперь вы как анонимный пользователь можете переместить файл на локальную машину:

cd pub
get test.txt
ftp> get test.txt
227 Entering Passive Mode (45,55,187,171,156,73).
150 Opening BINARY mode data connection for test.txt (14 bytes).
226 Transfer complete.
16 bytes received in 0.0121 seconds (1325 bytes/s)

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

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

put test.txt upload.txt
227 Entering Passive Mode (104,236,10,192,168,254).
550 Permission denied.

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

6: Авторизованное подключение

Теперь нужно убедиться, что пользователи, у которых есть локальные аккаунты, не могут подключаться к серверу, поскольку их учётные данные не будут шифроваться. Когда команда запросит имя пользователя, вместо ftp или anonymous укажите имя пользователя с правами sudo.

ftp -p 203.0.113.0
Connected to 203.0.113.0:21.
220 (vsFTPd 3.0.3)
Name (203.0.113.0:21:your_user)
530 This FTP server is anonymous only.
ftp: Login failed.
ftp>

Заключение

Теперь vsftp поддерживает только анонимные загрузки. Это обеспечивает производительную работу приложений, которые не могут использовать более современные протоколы.

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

Для отправки комментария вам необходимо авторизоваться.

Источник

Adblock
detector