Меню

Vsftpd настройка виртуальных пользователей debian



Записки 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, мы перечислим опции в порядке их нахождения в файле.

Читайте также:  Все настройки нокиа 2700 классик

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Настройка входящих вызовов в транке asterisk

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

Источник

OpenSource в заметках

В «стандартном» варианте vsftpd настроен таким образом, что поддерживает аутентификацию только локальных в пределах системы пользователей и/или анонимных. Принимая во внимание то, что в качестве механизма аутентификации в vsftpd используется PAM, мы вольны настраивать схему аутентификации как нам будет угодно. Этим сегодня и займёмся. В этой статье я расскажу о том, как в vsftpd можно настроить аутентификацию виртуальных пользователей, т. е. пользователей, учётные записи которых отсутствуют в системных /etc/passwd и /etc/shadow. Данный способ организации доступа к vsftpd естественно более безопасен, поскольку виртуальные пользователи не имеют прав доступа, которые есть у локальных учётных записей. При написании статьи использовались Debian 5 Lenny, Berkeley DB 4.6 и Linux PAM 2.6.26.

Установка необходимого ПО

Поскольку в процессе настройки понадобится создать базу данных Berkeley DB, необходимо установить набор инструментов, который позволит нам это сделать:

Всё остальное уже должно присутствовать в вашей системе по умолчанию.

Создание базы данных виртуальных пользователей

Для того, чтобы создать Berkeley DB базу данных виртуальных пользователей, сперва необходимо подготовить список пользователей и паролей в текстовом файле. Формат файла очень прост. Каждая запись базы данных состоит из пары «ключ, значение», где ключом является имя учётной записи виртуального пользователя, а значением — его пароль. Каждая пара разбита на две строки: первая строка — ключ (имя пользователя), вторая — значение (пароль пользователя). Для примера создадим следующий файл в /home/ashep/tmp/vsftpdusers:

Таким образом мы подготовили текстовый файл для создания БД из двух пользователей user1 и user2 с паролями password1 и password2 соответственно. Теперь из созданного файла можно создать базу данных Berkeley DB, например, в файле /etc/vsftpd/users.db:

Настройка vsftpd

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

Создание службы PAM

Теперь, чтобы PAM мог корректно аутентифицировать виртуальных пользователей vsftpd, необходимо создать соответствующую службу. В каталоге /etc/pam.d создайте файл с именем, указанным вами в параметре pam_service_name файла /etc/vsftpd.conf. В моём примере файл PAM-службы будет располагаться /etc/pam.d/vsftpd.virtual. Добавьте в файл следующее содержимое ( обратите внимание на отсутствие расширения ‘.db’ при указании имени файла БД! ):

Создание домашних каталогов виртуальных пользователей

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

Перезапуск сервера

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

Источник

Небольшой Блог Системного Администратора

Перед нами стоит задача предоставить множеству пользователей доступ по FTP, при этом не создавая для этого реальных пользователей. Ко всему этому, все пользователи будут работать на сервере от одного реального пользователя, к примеру www-data или ftp. Управление доступом к папкам будут регулироваться на уровне установленных прав для директорий. Ни один из пользователей не уйдет дальше своей папки.
Не пугайтесь большого количества действий — все довольно просто. Приступим.

Читайте также:  Настройка никон д7000 под

1# Устанавливаем vsftpd:

2# Для создания базы виртуальных пользователей, нужна будет Berkeley DB. Соответственно устанавливаем:

3# Создадим текстовый файл, и перечислим в них всех нужных нам пользователей:

Пользователи и их пароли задаются по отдельности на каждой строке:

Для каждого пользователя создаем папки в нужной директории. К примеру, у меня это /var/www

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

Остается создать базу пользователей из созданного выше текстового файла:

4# Редактируем файл настроек vsftpd:

Это минимальный набор параметров, необходимый для работы с нашими требованиями.

5# Создадим новую службу авторизации для vsftpd. В каталоге /etc/pam.d создаем файл с именем указанным в vsftpd.conf в пункте pam_service_name

Заполняем файл следующим содержимым, где указываем на созданную нами базу без её расширения:

6# Все настройки завершены. Осталось перезапустить сервис:

Источник

vsFTPD – Легкий FTP-сервер с виртуальными пользователями на Debian 8 Jessie

Главное меню » Операционная система Debian » vsFTPD – Легкий FTP-сервер с виртуальными пользователями на Debian 8 Jessie

Сначала необходимо обновить свой Debian VPS:

Если у вас нет веб – сервера Apache2 или если вы используете NGINX, то вам придется установить apache2-utils которая необходима для генерации паролей для пользователей.

Установка службы vsFTPD:

Отредактируйте файл конфигурации vsFTPD и раскомментируйте строки ниже. Используйте редактор vim или nano . Строки, которые не присутствуют в файле конфигурации, укажите внизу.

Далее, мы должны изменить наш файл /etc/pam.d/vsftpd , чтобы проверить файл пользователей/паролей, которые мы собираемся создать.

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

Удалите все из файла и добавите эти строки:

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

Как только это будет сделано, мы можем создать файл пользователей/паролей.

Примечание: пароли, используемые этим способом может быть до 8 символов. Если вы хотите прочитать vsFTPD c надежными паролями, вы можете поискать другой модуль pam.

Добавьте другого пользователя и добавьте его в файл ftpd.passwd, флаг -c здесь опущен.

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

И, наконец, запустите демон vsFTPD и установите его на автоматический запуск при загрузке системы.

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

Проверьте свои настройки

Используйте FileZilla, WinSCP или любой другой FTP-клиент для входа в систему VPS, используя имя пользователя и пароль, которые вы создали ранее. Создайте тестовый каталог и тестовый файл от клиентов.

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

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

Источник

Adblock
detector