chuzhoy007.ru
Назад

Установка и настройка Vsftpd в linux Debian с загрузкой файлов в каталог пользователя

Опубликовано: 22.05.2021
Время на чтение: 16 мин
481

Установка и настройка ftp сервера Vsftpd на linux Debian с загрузкой файлов в каталог пользователя

Лучший впн это тот который настроил сам. Я предпочитаю всем сервисам впн создавать свой. Вот инструкция как создать собственный VPN сервер

FTP (File Transfer Protocol) сетевой протокол до сих использующийся для передачи данных для работы с устаревшими приложениями и при других специфических задачах а также при разработке сайтов. В общем сегодня на повестке настройка ftp сервера vsftpd в операционной системе Debian.

Цель. Настройка vsftpd linux ftp сервера на базе Debian для обмена данными между клиентом (например Filezilla) и сервером по защищенному каналу для хранения данных на удаленном сервере.

Создадим пользователя чтобы он могут загружать файлы в свою папку. Подробнее про vsftpd (Very Secure FTP Daemon) можно прочитать в википедии поэтому не будем отвлекаться.

Базовая настройка сервера Debian для ftp

После покупки сервера нужно обязательно установить фаерволл (firewall) чтобы его не взломали. Для этого подключаемся по ssh из консоли или с помощью putty. Команда:

Пользователь root является самым привилегированным пользователем системы. Поэтому для регулярной работы лучше создать отдельную учетную запись и добавить её в группу sudo . Я буду использовать имя user  вы можете задать любое какое хотите. Для этого выполните команду:

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

Предоставим пользователю user привилегии администратора. Команда:

теперь пользователь user может выполнять команды от имени root используя команду sudo .

Установка и базовая настройка брандмауэра UFW

Для того чтобы разрешить подключение только к определенным портам и службам нужно установить firewall или брандмауэр. Эти названия идентичны. Я буду использовать ufw так как он прост в настройке и надежен. Подробнее про него читайте в вики.

В ufw используются профили. Полный список их можно посмотреть командой:

Нам нужно разрешить ssh соединение. Для этого укажем команду:

Теперь включаем ufw командой:

Если будет выдан запрос укажите y (yes) и подтвердите нажав Enter.

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

Проверить статус брандмауэра можно командой :

Наш firewall сейчас настроен для доступа только по протоколу ssh. Открыть возможность работы по протоколу ftp можно указав новые правила.

Сделаем доступными порты 20 и 21. После включения TLS потребуется порт 990. Также откроем диапазон портов для работы в пассивном режиме ftp 40000-50000.

Для этого даем команды:

Убедимся что все сделали правильно командой:

Настройки должны отобразится таким образом:

Установка vsftpd в Debian

Теперь когда подготовительные работы завершены можно установить ftp сервер vsftpd. Для этого обновим систему и дадим команду для инсталляции:

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

Переходим к настройке.

Подготовка каталога пользователей для загрузки файлов по ftp

Это пример создания на новом сервере но такая конфигурация будет работать если у вас уже есть действующие пользователи и им нужно сохранить доступ к ftp серверу. Но я создам нового пользователя. Команда:

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

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

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

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

В этом руководстве я создам каталог ftp  для пользователя chuzhoy007 для ограничения в chroot  и каталог для записи и хранения файлов files .

Итак создаем папку:

Установим владельца для папки:

Запретим запись в этот каталог:

Проверим разрешения:

Теперь создадим каталог для загрузки файлов:

Назначим владельцем каталога пользователя chuzhoy007 командой:

Читайте также:  Как создать пользователя в Linux Debian

Проверим разрешения для каталога ftp:

Vsftpd. Настройка доступа по ftp

Настроим доступ одному пользователю с возможностью подключаться по ftp протоколу имеющему учетную запись с оболочкой shell. Все необходимые настройки находятся в файле vsftpd.conf . Откроем его для редактирования:

Проверьте параметры они должны соответствовать приведенным в списке:

Чтобы пользователь мог загружать файлы параметр write_enable не должен быть закомментирован (перед опцией не должно быть знака #) а его значение должно быть YES.

Чтобы пользователь подключившийся по ftp не мог получить доступ к другим папкам кроме своей раскомментируем chroot .

Теперь в любое место файла (удобнее всего это сделать в самом конце) добавьте директиву user_sub_token  это позволит вставлять имя пользователя в путь local_root directory .

Ограничим диапазон портов для пассивного подключения по ftp:

Именно эти порты открывали ранее в брандмауэре. Если вы указывали другие то укажите их.

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

userlist_deny  изменяет логику: при установленном значении YES, пользователям из списка доступ по FTP запрещен. Если значение равно NO, доступ открыт только для пользователей из списка.

Теперь сохраните внесенные изменения и закройте файл (в редакторе nano это делается командами ctrl+o – сохранить, ctrl+x – выход, для вставки удобно использовать сочетание shift+insert).

Создадим список и добавим в него нашего пользователя:

Проверьте добавление пользователя командой:

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

Проверка доступа ftp для пользователей vsftpd в Debian

У нас сервер настроен для подключения по ftp протоколу только для пользователя chuzhoy007. Всем остальным должно быть отказано. Чтобы в этом убедиться попробуйте создать соединение используя имя anonymous .

*Если программы ftp нет то установите её командой:

Ответ должен быть примерно такой:

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

Для выхода укажите:

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

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

Защита транзакций. Настройка шифрования ftp

Передаваемые по протоколу данные отправляются в открытом виде то есть без шифрования. Включая учетные данные пользователя, что небезопасно. Поэтому нужно настроить tls/ssl шифрование.

Для этого будем использовать программу openssl и создадим сертификат для vsftpd с ключом -days , чтобы ограничить его действие одним годом (если хотите задать другой период то укажите его в днях).

Добавим частный ключ RSA- длиной 2048-бит. Для расположения закрытого и открытого ключа в одном файле флагам -keyout  и -out укажем одинаковое значение.

Откроется окно с предложением записать информацию о нахождении. Можно вписать любую но для значения “Common Name (e.g. server FQDN or YOUR name) []:” укажите ip вашего сервера.

После создания сертификатов нужно снова открыть файл vsftpd.conf  для редактирования:

Найдите строки начинающиеся с RSA_ и закомментируйте их (поставьте знак # в начале строки).

Выглядеть должно так:

Ниже добавьте путь до наших созданных сертификатов:

Читайте также:  FTP-менеджер Filezilla, лучший из бесплатных клиентов

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

Для директивы ssl_enable  укажите значение YES :

Теперь запретим анонимные подключения через ssl для передачи данных и для подключения. Добавьте эти значения:

Добавим поддержку TLS (альтернативы ssl):

Добавим еще два значения. Первое отключает требование повторного использования ssl, чтобы не нарушить работу ftp-клиентов. Второе будет указывать, что необходимо использовать шифрование с длиной ключа от 128 бит и выше:

В конечном итоге файл vsftpd.conf должен выглядеть так:

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

Теперь подключиться с помощью клиента без поддержки шифрования будет невозможно. Проверить это можно используя уже известную команду:

вывод будет примерно таким:

Как видим попытка не удалась. Можно выйти.

Тестирование FTP сервера с помощью клиента Filezilla

Настройка vsftpd в Debian закончена. Теперь пора проверить работоспособность. В качестве клиента для работы я использую программу FileZilla, подробнее про неё читайте в этой статье а здесь рассмотрим быстрое подключение. Сначала установите программу:

Итак запускаем программу. В поле "Хост" укажите ip адрес вашего сервера. В поле "Имя пользователя" задайте логин вашего пользователя, в моем примере это chuzhoy007 и в поле "Пароль" введите пароль этого пользователя. Затем нажмите кнопку "Быстрое соединение".

Интерфейс программы Filezilla для подключения к серверу по защищенному ftp протоколу.

При выводе сообщения о сохранении пароли выберите нужный вам вариант.

Окно с предложением выбрать вариант сохранения паролей в filezilla

Когда будет отображен сертификат с запросом на принятие. Чтобы каждый раз не подтверждать можно поставить флаг "Всегда принимать в будущих сессиях" и нажмите кнопку "Ок".

Окно программы Filezilla с запросом на сохранение сертификата.

После подключения будет доступна папка file. Можно закачивать в неё файлы и наоборот передавать на локальный компьютер.

Соединение с сервером ftp и передача файла в программе Filezila .

Отключаем пользователю доступ к командной оболочке shell

Этот пункт необязателен. Если по каким-то причинам вы не хотите шифровать ftp трафик или хотите использовать клиент не поддерживающий tls соединение то нужно отключить возможность использовать командную оболочку shell ftp пользователю.

Это повысит безопасность сервера за счет ограничения уязвимой учетной записи. Для этого откройте файл ftponly  который находится в каталоге bin :

Добавьте сообщение для пользователя по какой причине он не может зайти в систему:

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

Сделайте его исполняемым:

Откройте документ со списком оболочек доступных в системе:

В конце списка добавьте запись:

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

Для проверки попробуйте авторизоваться на сервере как chuzhoy007:

вы должны получить сообщение:

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

Добавление нового пользователя ftp на vsftpd сервер

Итак сервер настроен и трафик зашифрован. Но у нас пока есть только один пользователь. Наверняка понадобится добавлять дополнительные учетные записи.

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

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

Первое. создаем пользователя:

Второе. Работа с папкой пользователя:

Третье. Папка для файлов:

Четвертое. Добавим нового пользователя в список разрешенных для подключения. Открываем список:

Вписываем имя новой учетной записи под существующей.

Список пользователей которым доступно подключение к серверу по ftp протоколу.

Пятое. Перезапустить демон командой:

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

Проверяем и пользуемся.

Как удалить пользователя ftp

Для работы с фтп сервером необходимо не только создавать новых пользователей но и удалять ставшие не актуальными учетные записи. Более подробно о работе пользователями читайте в статье как создать пользователя в Linux. А сейчас кратко рассмотрим данную операцию.

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

Например чтобы удалить учетную запись vasiliy  команда будет такой:

Для того, чтобы удалить и пользователя и все его данные используйте флаг --remove-home username. Пример команды:

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

Резюме

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

Программа vsftpd является хорошим выбором. Расшифровывается как - Very Secure FTP Daemon, то есть очень защищенный ftp демон. Является ftp - сервером по умолчанию для многих дистрибутивов.

На официальном сайте вы найдете много дополнительной информации и документации. Если вам нужно больше.

С помощью фтп можно удобно управлять файлами (загружать видео, фото, аудиозаписи, текстовые файлы и т.д.), создавать и хранить резервные копии своих проектов, сайтов, образы систем и т.п.. Хотя чаще используется для подключения к хостингу и управления файлами сайтов. Для покупки сервера рекомендую воспользоваться услугами FirstVds качественные vps по доступным ценам. При переходе по этой ссылке скидка 25%.

Otus
debian, ftp, ssl, vsftpd, vsftpd debian, vsftpd настройка, сервер
chuzhoy007
Автор:
Chuzhoy
Поделиться
Похожие записи
Комментарии:
Комментариев еще нет. Будь первым!
Имя
Укажите своё имя и фамилию
E-mail
Без СПАМа, обещаем
Текст сообщения
Отправляя данную форму, вы соглашаетесь с политикой конфиденциальности и правилами нашего сайта.