Меню Рубрики

Установка ftp доступа debian

Настройка FTP сервера в Debian 5 (Lenny)

В этой статье я опишу настройку FTP сервера на базе Debian 5 (Lenny). Будем использовать vsftpd. VSFTPD (Very Secure FTP Daemon) — как следует из названия, очень защищённый демон FTP, с хорошей производительностью, поддерживаются: IPv6, SSL, виртуальные пользователи, есть контроль скорости полосы пропускания. На vsftpd работают ftp.debian.org, ftp.freebsd.org, ftp.suse.com, ftp.openbsd.org, ftp.gnu.org, ftp.kernel.org, ftp.gnome.org, ftp.gimp.org, ftp.rpmfind.net, ftp.linux.org.uk, ftp-stud.fht-esslingen.de, gd.tuwien.ac.at, ftp.sunet.se, ftp.ximian.com, ftp.engardelinux.org, ftp.sunsite.org.uk, ftp.isc.org, ftp.redhat.com.

В статье будут описаны несколько конфигураций:

  • Простая конфигурация. Анонимные пользователи имеют доступ только на чтение. Для записи информации на FTP сервер используется пользователь ftpuser. Разрешён доступ локальных пользователей к своим домашним каталогам.
  • Более сложная конфигурация. Анонимные пользователи всё так же имеют доступ только на чтение. Локальные пользователи не используются. Вместо них используются виртуальные пользователи, учётные записи которых хранятся в MySQL. Каждому виртуальному пользователю можно задать свои параметры работы с FTP. Используется PAM авторизация.
  • Более защищённая конфигурация. Анонимные пользователи не используются. Используются только виртуальные пользователи, учётные записи которых хранятся в MySQL. Для каждого пользователя можно задать свою конфигурацию. Используется SSL.

Простая конфигурация FTP сервера

#aptitude install vsftpd

  • Системный пользователь ftp, который добавляется в группу nogroup
  • Домашняя директория пользователя ftp — /home/ftp. Интересная особенность: при установке пакета выдаётся сообщение о том, что домашний каталог НЕ создаётся!
  • Создаётся файл /etc/ftpusers. В нём перечислены пользователи, которым запрещён доступ к FTP.

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

# usermod -d /var/ftp ftp

Удалим прежнюю директорию этого пользователя:

# rmdir /home/ftp

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

# addgroup ftpuser

Создаём пользователя ftpuser, добаляем его в группу ftpuser и устанавливаем домашним каталогом директорию FTP сервера, а так же меняем пароль

#useradd -d /var/ftp -g ftpuser ftpuser

#passwd ftpuser

Создаём директорию FTP сервера и устанавливаем права:

# mkdir /var/ftp

# chmod 555 /var/ftp

# chown root:ftpuser /var/ftp

Создаём публичный каталог.

# mkdir /var/ftp/pub

# chown ftpuser:ftpuser /var/ftp/pub

Конфигурационный файл vsftpd располагается в /etc/vsftpd.conf. Сделаем его резервную копию.

#cp /etc/vsftpd.conf /etc/vsftpd.conf_old

Теперь очистим /etc/vsftpd.conf, откроем текстовым редактором:

# cat /dev/null > /etc/vsftpd.conf

# vim /etc/vsftpd.conf

# Запускать vsftpd в независимом режиме

anonymous_enable=YES

# Анонимные входят без пароля

no_anon_password=YES

# Анонимные будут попадать в публичную директорию

anon_root=/var/ftp/pub

anon_umask=022

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

local_enable=YES

write_enable=YES

local_umask=022

# Локальные пользователи будут входить только в свои домашние каталоги

chroot_local_user=YES

chroot_list_enable=NO

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

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

Теперь перестартуем vsftpd:

/etc/init.d/vsftpd restart

Если всё работает как надо и сервер будет использоваться не только локально, то добавим ещё несколько строк после listen:

max_clients=100

max_per_ip=10

data_connection_timeout=120

dirmessage_enable=YES

ftpd_banner=Welcome!

Скачать готовый конфигурационный файл можно по следующей ссылке.

Помните, что у нас вы можете не только купить готовый сайт или заказать его разработку, но и подобрать подходящий тариф поддержки сайта, заказать продвижение сайта в поисковых системах, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! Айтишник РУ

источник

  • ru
  • vsftpd

?Обсуждение

Установка и настройка ftp-сервера vsftpd.

Введение

Цель этой статьи — рассмотреть более подробно этапы внедрения сервера разделения файлов средством FTP, используя vsftpd (Very Secure FTP Daemon).

Установка

Установите vsftpd через Aptitude или ?apt-get :

После завершения установки, сервер будет автоматически запущен, и начнёт слушать TCP порт 21. Проверить что сервер успешно запустился можно с помощью команды netstat:

Если ваш ftp-сервер «vsftpd» находится не за firewall, то перед тем как настроить «vsftpd» для использования, будет разумно временно остановить его:

Настройка

Файл со значениями по умолчанию параметров настройки находится в /etc/vsftpd.conf

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

  • Логические параметры — основные параметры, которые могут содержать логические значения: либо YES либо NO;
  • Числовые параметры — параметры, содержащие различные значения в числах, т.н. время в секундах или номер порта для соединения;
  • Строковые параметры — содержат строку, т.н. путь к каталогу в файловой системе на диске: /var/run/vsftpd/;

Отдельно стоит отметить тот факт, что параметры (и их значения) могут отсутствовать в файле с настройками, это означает, что используется значение по умолчанию, обозначаемое как «Default:» в «man vsftpd.conf». Многие, не зная этого, уверены, что параметрам требуется напрямую указывать значения, и поэтому их файл с настройками вырастает до огромных размеров, хотя, на самом деле, обычно необходимо записать в файл настроек «/etc/vsftpd.conf» всего лишь несколько параметров, для установки значений вместо значений по умолчанию, если значения по умолчанию остальных параметров настройки приемлемы, то значит они не нуждаются в повторном добавлении.

Многие параметры настройки зависят от других параметров, например, если те параметры, от которых они зависят, отключены, то интересующие вас параметры настройки просто не будут работать. Некоторые параметры являются взаимоисключающими, то есть, это значит что они не будут работать в паре с определёнными другими установленными параметрами.

Символ решётки «#» — переводит автоматически следующую за ним всю строку, в комментарий, не используемый программой vsftpd.

Анонимный доступ

По умолчанию разрешён только анонимный аккаунт, который имеет доступ к каталогу /srv/ftp/. Если вы хотите его отключить:

Для того, чтобы изменить каталог по умолчанию, используйте параметр anon_root :

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

anon_upload_enable — разрешает или запрещает запись в каталог анонимного пользователя (значение переменной anon_root) (по умолчанию выключено(NO));

anon_mkdir_write_enable — разрешает в том же самом каталоге создание каталогов (по умолчанию выключено(NO));

Также Вы можете указать владельца загруженных на ftp-сервер «vsftpd» файлов: Полезным может оказаться факт указания точных прав существующего в операционной системе пользователя как владельца загруженных файлов :

Авторизованный доступ

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

Для того, чтобы разрешить таким (локальным) пользователям права на запись:

Содержание пользователей в «песочнице»

Пользовательские права могут иметь доступ к файлам всей системы, это всегда очень не желательно, и способствует компроментации машины; редактируя параметры Vsftpd.conf, пользователей можно поместить в «песочницу»:

Читайте также:  Установка китайской магнитолы в мондео

Их корень FTP будет тогда их личным каталогом.

Пользовательский аккаунт из системы может использоваться не только для ftp, но и для других случаев; для того, чтобы авторизоваться в системе в совершенно другом месте, например: ssh, getty (логин терминала). Пользователь будет иметь в таком случае также доступ к оболочке системы shell. Вы можете настроить, приведённые в примере, службы для того, чтобы блокировать возможность авторизации через аккаунт пользователя на службе или поместить его в «песочницу», но универсальное решение состоит в том, чтобы отключить shell для аккаунта пользователя.

Для этого, shell пользователя назначается в false, простой бинарник, который возвращает сигнал ошибки :

Затем необходимо добавить false в список оболочек shell:

SFTP — SSL

Известные проблемы и их решения

Кодировки

Дополнительная информация

Файл хорошо прокомментирован на английском языке, а также, все параметры хорошо задокументированы и находятся под тем же именем в руководстве на страницах man:

Перевод файла «FAQ», содержащего часто задаваемые вопросы, из последней версии vsftpd доступен ?здесь

Сама программа располагается в каталоге «/usr/sbin/vsftpd», возможно, в разных дистрибутивах файл vsftpd.conf находится в разных местах, узнать его расположение, к примеру, можно командой «whereis vsftpd».

Перевод последней версии странички vsftpd_conf.html доступен здесь

После установки следует обратить внимание на файлы, содержащие документацию в каталоге «/usr/share/doc/vsftpd», каталог «EXAMPLE» уже содержит различные примеры файла настроек «vsftpd.conf».

Перевод различных примеров с документацией из каталога «EXAMPLE» последней версии vsftpd доступен здесь

Ссылки

vsftpd — Официальный сайт «Very Secure FTP Daemon»

источник

Debian → Настройка FTP сервера vsFTPd на Debian/Ubuntu

FTP очень полезная вещь, он позволяет легко подключаться к удаленному серверу, для загрузки или скачивания данных.
Со всеми недостатками и изъянами в безопасности, FTP должен был отойти на второй план, как и протокол telnet, однако у него оказалось намного больше преимуществ, по этому он используется по сей день и довольно успешно. К нему появилось довольно много модификаций, которые позволяют например: заворачивать трафик в SSL/TLS для повышения безопасности переделываемых по сети данных, как это сделать можно ознакомиться в статье- Настрока ProFTPd для использования TLS Но на этот раз не о Proftpd.
Данная статья была вынесена в отдельный топик, для того чтобы ее было проще найти на сайте. Раньше она находилась в статье по настройке Nginx+Apache, но думаю что она будет намного полезнее в качетсве самостоятельного материала.
Переходим в режим супер пользователя root:
Для Debian:

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

Находим и редактируем следующие строчки:

напишем свой баннер для входа, хотя он и не обязателен( на работу он не влияет):

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

ну под данной записью добавим:

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

Запрещаем анонимный доступ, необходимо найти строку:

Ну и добавим работу в пассивном режиме:

Поддержка IPv6 в vsFTPd

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

Её необходимо за комментировать, чтобы она выглядела:

Также, нам необходимо найти строку:

И снять с нее комментарий.
После этого, наш FTP сервер будет доступен по IPv4 и IPv6

Права доступа на файлы и директории

Параметр local_umask отвечает за то, какие права будут присвоены файлам, которые были закачаны через FTP, по умолчанию там установлено local_umask=022, маска расчитывается очень просто, по формуле 777-A=X
Где:
777-права полного доступа
А-права которые необходимо получить
Х-маска, которую необходимо выставить
Предположим, нам необходимо получить права 754 что соотвествует drwxr-xr—, тогда 777-754=23 получается local_umask=023.
В любом случае, тот кто закачал файлы является их владельцем и может расширить права доступа к ним.
В общем, находим строку:

И меняем 022 на 023 или на ту которая необходима в вашей ситуации:

Авторизация vsftpd и /bin/false

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

Рассмотрим это выражение более подробно.
Где:
username -имя пользователя(логин)
home-Директория где будет находиться его домашний каталог
ключ -m — указывает на то, что его домашней директории будет присвоено название которое было указано в username.
ключ -U -Указывает на то что необходимо создать одноименную группу.
-s /bin/false -что пользователю будет отключен шелл (это важный и тонкий момент!)
Назначение остальных ключей можно нагуглить за пару минут.

Если пользователю отключить шелл, то он не сможет залогиниться на FTP сервер, его будет просто отфутболивать.
Вдумчивое чтение документации по vsFTPd рассказало мне, что доступ к FTP могут получить пользователи которые имеют работоспособный шелл т.е. /bin/bash, для того чтобы пользователи с /bin/false могли авторизироваться на нашем ftp, нам необходимо отредактировать файл /etc/pam.d/vsftpd

Найти и закоментировать строку (она самая последняя)

И перезапускаем vsftpd

И еще немного для общего развития- Пользователь с отключенным шеллом, не сможет подключиться по SSH! Это можно считать дополнительным плюсом к безопастности.
Как отключить шелл уже существующему в системе пользователю:

там находим нужного пользователя и /bin/bash меняем на /bin/false, после перезагрузки, изменения переменятся.

На этом можно закончить.
Чтобы устранить проблему с настройкой vsFTPd на Ubuntu 12.04, воспользуйтесь заметкой: Ремонтируем vsFTPd в Ubuntu 12.04

источник

Установка и настройка vsftpd в Debian 7

Серверные компоненты настроены, полезный инструмент (phpMyAdmin) для администрирования MySQL установлен и защищен извне. Не хватает только ftp сервера. Все уже привыкли загружать файлы на хостинг при помощи FTP клиентов, поэтому ничего не остается, как установить и настроить на своем виртуальном сервере поддержку FTP.

Под linux создано огромное количество ftp-серверов, но мне нравится vsftpd. Он прост в установке и прекрасно справляется со своими задачами. Для установки vsftpd в окне терминала выполни команду:

Установка vsftpd в Debian 7 занимает буквально две минуты.

Настройка vsftpd

Все настройки vsftpd хранятся в файле /etc/vsftpd.conf. Откроем его в редакторе nano и внесем несколько корректив:

Первое, что необходимо сделать в файле настроек – установить запрет на подключение анонимных пользователей. Находим опцию “anonymous_enable” и прописываем ей значений “NO”. Затем сними комментарий с опции “local_enable” и “write_enable”. Первая опция разрешает использовать для входа на сервер пользователям, которые зарегистрированы в системе. Вторая разрешает пользователям выполнять любые FTP-команды записи.

Читайте также:  Установка и настройка сетей видеонаблюдения

Последним действие в конфигурационном файле будет снятие комментария с опции chroot_local_user. Если ей установлено значение «Yes» (по умолчанию оно и установлено), все системные пользователи будут находиться в пределах chroot и не смогут получить доступ к другим директориям сервера.

Сохраняем изменения (ctrl+o) и закрываем файл (ctrl+x). Теперь попробуем протестировать работу FTP сервера. Для этого создадим нового пользователя и сделаем в его домашней директории папку, к которой он будет иметь возможность получить доступ по FTP.

Добавление нового пользователя выполняется командой adduser. Попробуем создать нового пользователя user:

Утилита создания пользователя задаст несколько вопросов (пароль, различные вспомогательная информация). Вопросы с запросом вспомогательной информации (phone, room number и т.д.) можешь игнорировать, нажимая клавишу “Enter”. Предположим, что пользователь создан, теперь добавим новую группу webusers и включим в нее пользователя user:

Если прямо сейчас перейти в директорию /home, то мы увидим, что в ней появилась папка для недавно созданного нового пользователя. Создадим в домашней директории пользователя две новые папки:

В первой будут храниться файлы доступные снаружи (это будет директория хоста), а вторую будем использоваться для хранения логов. Теперь нам надо сменить владельца для созданных папок. Мы их создавали из под root, поэтому сейчас владельцем является супер пользователь. Смена владельца выполняется командой chown:

На этом все подготовительные действия завершены. Остается только перезапустить FTP сервер и попробовать подцепиться к нему каким-нибудь клиентом. Перезапуск службы vsftpd выполняем традиционным способом:

Тестируем настроенный vsftpd сервер

В качестве теста попробуем соединиться встроенным в Windows консольным ftp клиентом с нашим ftp-сервером. Открываем CMD и вбиваем команду:

После установки соединения, программа у тебя запросит ввести логин/пароль. Вводи сюда данные созданного пользователя. Пройдя процесс аутентификации, ты можешь начать отправлять ftp команды. Например, команда dir запрашивает список директорий с ftp сервера. Выполнив ее, ты увидишь, что на сервере доступно две папки – www и logs.

На этом, установку и настройку vsftpd считать оконченной.

источник

Установка ftp доступа debian

Войти

Debian, установка и настройка vsftpd как FTPS сервера

Лирика
Было такое дело, что на заре увлечения Linux, я пытался научиться настраивать любой попадающийся под руки сервис — LDAP, DNS, DHCP, SQL, File Server (Samba, NFS) и прочая. FTP так же попадал мне под руку, но практического применения для него я не нашел и успешно забыл.
Устроившись на новое место работы с год назад я заметил, что местный FTP работает как придаток на одном десктопном компе, не являющимся сервером, да еще и на Windows Server 2003R2 с их IIS 6. Для нас это означало отсутствие какой-либо защищенной аутентификации и, т.к. на «сервере» крутится электронный документооборот (бля, додумались какой сервер в инет пускать незащищенным), апгрейдить его до 2008R2 было запрещено (лицензии, зависимость от какой-то .dll только под 2003R2). FTP в организации не то чтобы так сильно необходим, но случаи, когда сотрудники просят передать контрагентам файлик в несколько гигов не так и редки. Заковырка была в том, что «ай-ай-ай, линакс, он жи бисплатен *пукан дымится*, значит гавно, ничего бисплатнага нет, работать не будет *пукан распаляется*! У нас такой-то статус партнеров Майкрософт (хуй знает, наверное это должно производить впечатление), надо юзать их IIS! *БАБАХ! Пиздец, взорвался пукан*. Честно, я не фанатик, который совершенно не приемлет Windows и очень уважаю некоторые их продукты (AD DS, Exchange, PS как инструмент управления всей средой, MS Office), но пускать в Глобальную Сеть сервер на Windows я не хочу. Да, я в курсе, что в более старших версиях IIS имеется поддержка FTPS, но был еще вопрос использования ресурсов — держать ВМ для этих целей слишком затратно, а разворачивать на имеющихся серверах с установленной ролью IIS я считаю опасным, всё-таки это старый FTP. Моё решение состояло в том, чтобы в DMZ на изолированном стареньком сервере поднять LXC, внутри которого и можно развернуть такой сервис как FTP(s), к чему я, собственно, и приступил.
Прежде чем начать, скажу, что LXC для меня штука новая, т.ч. описывать работу с контейнерами я не буду, могу много наврать.

Подготовка ОС
Так, у меня в качестве ОС Debian Jessie 8.2 и я думаю, что этот маленький пункт будет полезным. Разворачиваете новый сервер — поставьте все последние обновления безопасности! Не накручивайте лишнего — не запаривайтесь с установкой привычного для Вас на десктопе софта! MC, unzip, unrar, build-essentials — всё это идет лесом и ставится только в случае необходимости! Меньше пакетов = меньше потенциальных багов = меньше зависимостей = меньше проблем. Поэтому:

# apt-get update && apt-get upgrade

# apt-get install sudo vim tmux net-tools

# usermod -a -G sudo %USERNAME%
Перезагрузка. И старайтесь не работать под пользователем root без причины.

Установка vsftpd и подготовка к его настройке
Понятно, что установить софт на машину с Debian проще простого — apt-get или aptitude сделают за Вас всю необходимую работу. Следовательно:

$ sudo apt-get install vsftpd
Как только сервер установился, его следует остановить чтобы не мешался:

$ sudo service vsftpd stop
Основной конфиг vsftpd в Debian располагается по пути /etc/vsftpd.conf, его мы и будет редактировать.
Вообще, конфиг изначально работоспособен — вы можете уже попробовать подключиться к серверу и пройти аутентификацию локальным пользователем. В предполагаемой мной конфигурации пользователи должны быть виртуальными и изолирванными одним каталогом, иметь доступ на чтение корня FTP и запись в папочку public там же. Таким образом, мои сотрудники смогут выкладывать файлы для контрагентов, а те, в свою очередь, смогут заливать нам что-нибудь нужного, имея пароль доступа.
Сперва создадим необходимые для работы каталоги:

$ sudo mkdir -p /var/ftp/public

$ sudo chown root:root /var/ftp
Далее я создам реального пользователя в системе, через которого наши виртуальные будут обращаться к файловой системе сервера:

$ sudo useradd -s /bin/sh -d /var/ftp ftpvirtuser
Пароль мы ему не задаем, но шелл указать необходимо. Раздадим необходимые права:

$ sudo chown ftpvirtuser:ftpvirtuser /var/ftp/public

$ sudo chmod 644 /var/ftp/public
Таким образом, пользователь root является владельцем каталога /var/ftp, может там читать и писать, а ftpvirtuser может читать каталог /var/ftp и, являясь владельцем, писать в каталог /var/ftp/public.
Отлично, следующим шагом нам следует подготовить для работы виртуальных пользователей и настроить для них PAM. PAM вещь серьезная и хоть мы и не будем его сильно модифицировать, с ним следует быть более аккуратным.
База данных пользователей будет храниться в формате Berkeley DB, поэтому нам понадобится утилитка db_load из комплекта db-util для преобразования текстового файла с именами/паролями в формат Berkeley. So:

Читайте также:  Установка греющего кабеля саморегулирующегося для водопровода

$ sudo apt-get install db-util
Формат файла очень простой, создадим его:

$ echo «username001» > users_db.txt

$ echo «password001» >> users_db.txt

$ cat users_db.txt
username001
password001
Что значит создание пользователя — «username001» с паролем «password001». Преобразуем его в формат Berkeley DB:

$ db_load -T -t hash -f users_db.txt vsftpd_users.db
На выходе получим файлик vsftpd_users.db, который уже можно использовать для аутентификации с PAM, положим его в /etc. Т.е. мы подошли к настройке PAM для vsftpd.
После установки vsftpd в каталоге /etc/pam.d создастся файл настройки vsftpd. Я решил его не модифицировать, а просто создал рядом новый:

$ sudo touch /etc/pam.d/vsftpd_virtual
Файл должен содержать примерно такие настройки (проверьте, что библиотека pam_userdb.so расположена в указанном месте):

$ cat /etc/pam.d/vsftpd_virtual
auth required /lib/x86_64-linux-gnu/security/pam_userd b.so db=/etc/vsftpd_users
account required /lib/x86_64-linux-gnu/security/pam_userd b.so db=/etc/vsftpd_users

Настройка vsftpd
Фух, слов написано дохера, а вот к настройке самого сервиса мы так и не приступили. Исправимся. Мой конфиг выглядит весьма просто:

$ cat /etc/vsftpd.conf | grep -v ‘^#\|^$’
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=ftpvirtuser
ftpd_banner=Welcome to COMPANY FTP server.
chroot_local_user=YES
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd_virtual
guest_enable=YES
guest_username=ftpvirtuser
allow_writeable_chroot=YES
virtual_use_local_privs=YES
ssl_enable=NO
По-моему, название опций говорит за их назначение, но я строго рекомендую прочитать описание по каждой. Переведенный на русский язык вариант man-страницы vsftpd.conf есть на Opennet.

FTPS
Окей. Если я нигде не опечатался, нигде ничего не забыл, то сейчас, если запустить демон vsftpd, мы сможем войти в него под пользователем «username001» с паролем «password001», но переданные нами данные, вклчая логин с паролем, пойдут открытым текстом. Я-то сам по себе не большой параноик и понимаю, что скорее всего мы тут нахер никому не уперлись, учитывая отношение к приватности информации в компании, но SSL к серверу решил прикрутить. Нам потребуется openssl:

$ sudo apt-get install openssl
Использование SSL — тема для отдельной статьи и я, может быть, в будущем набросаю для себя заметочку. Сейчас же я советую прочесть эту статью, чтобы понимать суть.
Нам нужно будет выполнить следующие шаги для получения сертификата:
1. Создать запрос на выдачу сертификата и приватный ключ;
2. Обработать запрос на CA;
3. Скачать выданный CA сертификат.
Для всех операций с сертификатами мы используем утилиту openssl с различными параметрами. Создадим запрос и приватный ключ для расшифровки полученного сертификата:

$ sudo openssl req -new -newkey rsa:2048 -keyout vsftpd.key -out vsftpd.req
На выходе мы увидим два файла: vsftpd.key — приватный ключ и vsftpd.req — файл с запросом. Последний выглядит примерно так:

$ cat vsftpd.req
——BEGIN CERTIFICATE REQUEST——
MIICijCCAXICAQAwRTELMAkGA1UEBhMCQVUxEzAR BgNVBAgMClNvbWUtU3RhdGUx
ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5 IEx0ZDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBANRm4Ej8FIRmZcNk RcxRpgJeI4AfywuHZzfIxxMv
qGjZ3cuTvsS0zEkniojjBoEzqEkwGmOuLpQ4sOiR KvOQR164NbG48nNQoORtFFIp
dU8mB/ibZIGYWaC9lUJMgkA77tZx+vwsTPApJgvi O35D3jDuqtGA1LElOpIgp4wD
9B+KqkATh024862QZIG53ZVrQjd481PmSC2aqfGJ 1bFwnpv+FdJuhZI2PhzuDvY6
JiC1fPGjrnrVsGZJT/EDOY/ktvlYb5bhvvN3g+gU 1kBi+2Axzr83Xe7Y+BCFyyju
VaVvjbTsVsv3T0CwN0mpNmitlyaNw69E6/AFCZhi 33RGh+cCAwEAAaAAMA0GCSqG
SIb3DQEBCwUAA4IBAQAbUhKocgRTAvpLDgrvA81E KZxUv4IHmxqag1ON0usEKo+Z
J8lk7s8EgH46uYCS21a5p5yIOKqKUeebpT1ig4xV Any/LnF2IJlQIHkLAL/O6dpy
9plYhUJvrH/YmCQv/29NYRf3huJkcVqI4GvDJyq/1 sJDnfF9paKdqC1TPAUVTASw
CyyCeC5iaaIfd2x+jn/IAKHh0UfIA80R770EV+ge JS7gqm/Di/fHdHgIWDNFJogw
D9zYHQIYsUGRxM9ly8oW98opYf1Hv+40PD34/4cj q5jX2IhIW9ivQfvRzD/QL21J
/C2IQ/TOoeSmK3qD+jsVGsvRuIvvQ8xWp2N762jS
——END CERTIFICATE REQUEST——
Его-то мы и отдадим на подпись CA. Мм, в статье, указанной мной выше, описывается как сделать самоподписанный сертификат, т.ч. этот вариант я рассматривать не буду. У нас в организации развернута AD DS с собственным центром сертификации, что позволит мне подписать запрос с помощью него. Заходим на веб-страницу подписи сертификатов вашего CA:

В поле Saved Request мы вставляем содержимое .req файла, выбираем шаблон (Web Server в нашем случае) и нажимает Submit. На выходе получим файл certnew.cer, скачиваем его закодированным DER и передаем на наш сервер.
Так как vsftpd хочет видеть сертификат в формате .pem, выданный нам .cer придется преобразовать:

$ sudo openssl x509 -in certnew.cer -inform DER -out vsftpd.pem -outform PEM
Важный момент — закрытый ключ, созданный выше, защищен пароем (у вас его спрашивали при создании). Нам необходимо снять этот пароль, чтобы vsftpd смог воспользоваться ключом и запуститься. Похожая схема наблюдается при разворачивании сайта с поддержкой HTTPS — при старте Web сервера у вас запросят пароль на ключ, если вы его предварительно не сняли, а вот vsftpd так делать не умеет. Делается это следующим образом:

$ sudo openssl rsa -in vsftpd.key -out vsftpd_passwordless.key
Окей, сертификаты мы подготовили, вроде бы ничего не забыли. Теперь их следует раскидать по каталогам — сертификат в /etc/ssl/certs, ключ в /etc/ssl/private

$ sudo cp vsftpd_passwordless.key /etc/ssl/private/vsftpd.key

$ sudo cp vsftpd.pem /etc/ssl/certs
Не забудьте снять права на чтение ключа у всех, кроме root:

$ sudo chown root:root /etc/ssl/private/vsftpd.key

$ sudo chmod 600 /etc/ssl/private/vsftpd.key

Осталось настроить сервер vsftpd на работу с SSL. Правим конфиг и добавляем туда следующие строки:

$ cat /etc/vsftpd.conf

# Меняем NO на YES
ssl_enable=YES
# Указываем где лежит сертификат и закрытый ключ
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vs ftpd.key
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
Тут важно упомянуть, что говоря серверу force_local_logins_ssl=NO, Вы разрешаете аутнтифицироваться клиенту plaintext. Т.е. жесткого требования использовать FTPS у вас нет. Была бы моя воля — ставил бы YES, но, черт побери, я прям предвижу пылающие огнем пуканы глаза некоторых людей, которых заставляют использовать клиенты с поддержкой FTPS.
По опциям, опять же, советую почитать.
Вот, собственно, и всё — остается тестировать. Чтобы проверить SSL нужен подходящий клиент, его умеющий, например FileZilla (качайте внимательней, а то тут коллега скачал какой-то установщие с https://filezilla-project.org/ — заебались говно с его компа вычищать). Создаем подключение:

И пробуем подключиться — должен выйти запрос на подтверждение сертификата:

Вот и всё, если Вы видите такую картину, то базовая связка vsftpd с openssl вполне себе настроена и работает. Если нет — значит я где-то опечатался, ибо все команды выше набирал руками, копировались только немногочисленные конфиги.

Заключение
В итоге, мы полчили вполне себе годную реализацю FTP, с возможностью подключения по шифрованному калалу, виртуальными пользователями и кучей возможностей, которые может vsftpd. У себя я постараюсь такое решение продвинуть, надеюсь здравый смысл возобладает.
Удачи!

источник

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