Аналог vsftpd для linux

Обновлено: 05.07.2024

FTP или File Transfer Protocol - это достаточно древний, но в то же время надёжный и проверенный протокол выгрузки файлов на удалённый сервер или их скачивания. Также иногда этот протокол применяется веб-мастерами для управления файлами или организации хранилища данных.

В этой статье мы рассмотрим, как выполняется установка FTP на Ubuntu 20.04, как настроить все необходимые компоненты, в том числе и защищённое соединение. Мы будем использовать FTP-сервер VSFTPD или Very Secure FTP Daemon, который обеспечивает самую надёжную защиту от уязвимостей.

Установка FTP в Ubuntu

Программа доступна из официальных репозиториев, поэтому установка FTP на Ubuntu Server не должна вызвать проблем. Сначала обновите список пакетов в репозиториях, затем установите саму программу:

sudo apt update
sudo apt install vsftpd

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

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

Если у вас установлен фаервол ufw, а такая ситуация возникает, когда вы пытаетесь установить FTP на Ubuntu Server, нужно открыть порты 20 и 21 для нормальной работы. Чтобы это сделать, выполните команды:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status

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

Настройка FTP Ubuntu

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

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

Затем откройте файл в редакторе:

sudo vi /etc/vsftpd.conf

Затем добавьте такие настройки. Вам нужно будет найти и изменить значения указанных строк, добавлять новые, если они уже есть, не стоит. Сначала отключаем анонимный вход:

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

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

Установим значение umask для новых файлов, создаваемых по FTP:

Записывать в лог файл все транзакции по передаче файлов и использовать стандартный формат лога:

xferlog_enable = YES
xferlog_std_format=YES

Использовать порт 20 для передачи данных вместо случайного, это нужно для нормальной работы фаервола:

Указываем, что нужно ожидать входящих соединений:

На завершение разрешим аутентификацию только пользователей, перечисленных в файле userlist:

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

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

При входе пользователей на FTP-сервер, они могут работать только в корневом каталоге FTP. Если вы хотите, чтобы пользователи были ограничены только своей домашней папкой, то необходимо раскомментировать эти строчки:

chroot_local_user = YES
allow_writeable_chroot = YES

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

sudo systemctl restart vsftpd

Тестирование vsftpd

Сервер готов, но система настроена ещё не полностью. Сначала создадим нашего тестового пользователя с помощью useradd:

sudo useradd -m -c "Test User" -s /bin/bash testuser
sudo passwd testuser


Теперь самое время подключится к нашему FTP-серверу и проверить, как там всё работает. Попробуем войти от имени анонимного пользователя:


У нас ничего не получится. Теперь попробуем войти от имени нашего тестового пользователя, и всё заработает как нужно.

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

Настройка домашних папок пользователей

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

sudo mkdir -p /home/testuser/ftp/files

Уберём право на запись для папки ftp:

sudo chown nobody:nogroup /home/testuser/ftp
sudo chmod a-w /home/testuser/ftp

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

sudo chown -R testuser:testuser /home/testuser/ftp/files
sudo chmod -R 0770 /home/testuser/ftp/files/


Теперь вернёмся к конфигурационному файлу vsftpd.conf. Сначала закомментируйте строчку:

Теперь добавьте такие строчки:

user_sub_token = $USER
local_root=/home/$USER/ftp

Первая из них добавляет переменную $USER, в которой содержится имя пользователя, а вторая задаёт корневую папку для каждого пользователя. Осталось снова перезапустить FTP-сервер:

sudo systemctl restart vsftpd

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


Настройка защищенного соединения

Установка FTP на Ubuntu 20.04 завершена, но в наше время небезопасно использовать открытую передачу данных через сеть. Всё, что только возможно, необходимо шифровать. Поэтому мы рассмотрим, как настроить защищённое соединение для vsftpd. Сначала создадим папку и сгенерируем сам сертификат, который будем использовать:

sudo mkdir /etc/ssl/private
sudo openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem

Затем нужно разрешить доступ к портам защищённого соединения FTP с фаерволе UFW:

sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw status

И осталось внести несколько правок в настройку самого FTP-сервера. Нам нужно включить ssl_enable и отключить поддержку шифрования sslv2 и sslv3, оставляем только tlsv1:

ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Далее раскоментируйте такие строки:

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

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

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

И настроим диапазон портов для передачи данных:

Осталось перезагрузить наш сервис:

sudo systemctl restart vsftpd

Теперь тестируем, что у нас получилось:


Как видите, мы уже не можем авторизоваться с помощью утилиты ftp. FTP-сервер выдаёт, что мы обязаны использовать шифрование. Поэтому для тестирования применим FileZilla:


Теперь все данные будут передаваться по зашифрованному соединению. Установка FTP-сервер Ubuntu завершена.

Выводы

В этой статье мы рассмотрели, как выполняется установка FTP на Ubuntu Server 20.04, также как настроить FTP для максимально безопасной работы, включая настройку работы по SSL. Если у вас остались вопросы, спрашивайте в комментариях!

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Какой FTP сервер выбрать? (чтоб работал нормально)

Модератор: /dev/random

Какой FTP сервер выбрать?

А то поробовал уже 3 штуки
ftpd - работает, но когда заходишь FAR-ом, то оказываешься, не в домашней директории ftp-шного юзверя, а в корневом каталоге.
wu-ftpd - че то не поехал, странный какой то.
proftpd - когда эксплорером заходишь, он подвисает в самом начале секунд на 30, ждет чего то. Скромнечает видать

Что наш народ форумный юзает?

proftpd - не знаю, у меня с ним все хорошо (ИЕ тоже дружит). "В мире есть случайность, есть предопределенность и есть то, что ты планируешь совершить." А то поробовал уже 3 штуки
ftpd - работает, но когда заходишь FAR-ом, то оказываешься, не в домашней директории ftp-шного юзверя, а в корневом каталоге.
wu-ftpd - че то не поехал, странный какой то.
proftpd - когда эксплорером заходишь, он подвисает в самом начале секунд на 30, ждет чего то. Скромнечает видать
А Вы уверены что проблема в серверах? Может Вы их не настроили должным образом? Тут такое дело, настраивай, не настраивай. Мои примеры - это примеры неадекватного поведения.
В моем понимании, после установки FTP должен сразу же работать. Как это делает апач например. Без тормозов, лагов и глупостей, типа раз не могу открыть домашний каталог, значит открою корневик. Тут такое дело, настраивай, не настраивай. Мои примеры - это примеры неадекватного поведения.
В моем понимании, после установки FTP должен сразу же работать. Как это делает апач например. Без тормозов, лагов и глупостей, типа раз не могу открыть домашний каталог, значит открою корневик. Чтение man'нов в слух ещЁ никому не помогало.
kernel 4.2
chmod -x `which chmod`
War, war never changes. oftp Его даже настраивать не надо; работает - и точка!

Да уж, наплодили как сабак нерезных

Да и апач после установки, ой как напильником надо пилить. Собственно как и любой сервес

Эт я в курсе. Но по крайней мере он сразу адекватен и это видно.

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

vsftpd рулит однозначно. В свое время пробовал все популярные ФТП серверы, свой выбор остановил именно на нем. vsftpd рулит однозначно. В свое время пробовал все популярные ФТП серверы, свой выбор остановил именно на нем. Попробовал.
Анонимуса не пускает. Да вообще никого не пускает. Хотя в конфиге ясно написано anonymous_enable=YES
Маразм
Как так можно проги и документацию писать. Попробовал.
Анонимуса не пускает. Да вообще никого не пускает. Хотя в конфиге ясно написано anonymous_enable=YES
Маразм
Как так можно проги и документацию писать. Пока пытаюсь пилить proftpd, но пока безуспешно. При заходе тормозит сабака. Как зайдет, так дальше летает без проблем.

P.S.: так что вот этот пост: Какой FTP сервер выбрать? -- очень даже причём, vsftpd только подтверждает это.

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


Блин, впечатление от этого vsftpd ужасные.
В логах ничего толком не пишет. Чего ему надо, вообще не понятно. Типа я должен быть ясновидящим.
Директивы
Pasv_min_port и Pasv_max_port не понимает. Какие порты на роутере пробрасывать, не известно. Если указать эти директивы в конфиге, то вообще перестает работать и при этом даже ошибку никуда не пишет. MAN кострированный.

В общем пока я в шоке. Ладно, копаемся дальше.

И все не о том. У меня вообще не конектиться как anonymous, а там у всех коннектится. Как же так?


Alexandroid,
Вот ты живой человек у которого vsftpd заработал. Как тебе удалось? Поделись секретом.


И все не о том. У меня вообще не конектиться как anonymous, а там у всех коннектится. Как же так?

Там есть примеры конфигов. Посмотри, сравни со своим.
У меня как-то он был, работал на ура. Потом я его снес, правда.
Может, что-то не то с файерволом?
На каком дистре это все происходит?
Понимаешь, я не настолько туп, чтобы не вписать эту пару директив. Да и если честно я заранее чувствовал, что дело не в них.

не надо чувствовать. покажи конфиги(для обоих серверов) с которыми ты их запускаешь. Мой конфиг в приложении. Там есть примеры конфигов. Посмотри, сравни со своим.
У меня как-то он был, работал на ура. Потом я его снес, правда.
Может, что-то не то с файерволом?
На каком дистре это все происходит?

Прежде чем сюда писать я сравнивал свой конфиг с 3-мя из инета.
Ничего с файрволом. Его просто нет. Машина стоит во внутренней сетке. Подсоединяюсь, использую внутренний же ip. Если так заработает, будем плясать с бубном дальше, чтоб и извне работал.
Происходит все на Debian 4.0

не надо чувствовать. покажи конфиги(для обоих серверов) с которыми ты их запускаешь. Мой конфиг в приложении. Вложения vsftpd.conf (5.14 КБ) 48 скачиваний proftpd.conf (3.72 КБ) 46 скачиваний

Если нужен сервер,с широкими возможностями то ProFTPD
Если нужен просто и безопасный FTP - то vsftpd

По каждому из заданных вопросов (медленна работа в IEи не пускания анонимуса) есть ответы на официальных сайтах.
Анонимусов может не пускать , так как например неправильно розданны прова, нет пользовотеля или символической ссылки на /sbin/nologin итд
Это все издержки дистростроителей. ЧИТАЙТЕ ДОКИ!

Чтение man'нов в слух ещЁ никому не помогало.
kernel 4.2
chmod -x `which chmod`
War, war never changes. Сегодня утром поставил vsftpd на slackware, работает отлично. Все настройки сразу заработали так, как я и ожидал.
Только клиентам я поставил специальный фтп клиент, который utf-8 поддерживает. ZugDuk, если у вас ничего нормально не работает, может проблема в вас, а не в том, что все фтп-сервера плохие? Могу посоветовать поставить винду, там почти все фтп-сервера настраиваются с гуя и работают почти из коробки. Напоминаю уважаемым пользователям, что раздел Программы -- тематический, и, следовательно, оффтопик здесь запрещен. В переводе на русский разговорный это означает: "Если нечего сказать, то лучше промолчать, пока модераторы не отослали Вас реестр редактировать".

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

По каждому из заданных вопросов (медленна работа в IEи не пускания анонимуса) есть ответы на официальных сайтах.
Анонимусов может не пускать , так как например неправильно розданны прова, нет пользовотеля или символической ссылки на /sbin/nologin итд
Это все издержки дистростроителей. ЧИТАЙТЕ ДОКИ!

Вопрос на засыпку. Почему proftp анонимуса пускает, а vsftp нет?
Хотя я уже выяснил кое что. vsftp хочет, чтоб была прописана директива no_anon_password=YES (причем в конфиге ее не было даже в закоментированном виде). Естественно я ее прописывал еще вчера, но с ней сервер вообще переставал работать (сброшено подключение к данному серверу). Оказалось блин, что нужно дописать еще чего нибудь неважно куда. Я дописал pasv_min_port=1135 и pasv_min_port=1135 (до этого было закоментировано) и надо же появился прогресс. Теперь уже ругается по другому.
Хотя последний раз опять все вернулось на круги своя "Сброшено подключение к данному серверу". Видать через раз, то так то так. От чего зависит, не ясно. В логах как обычно ничего внятного, хотя директиву log_ftp_protocol=YES прописал.
Еще вычитал где то, что оказывается анонимный юзер, на самом деле не анонимный, а с именем ftp и видимо должен быть создан в системе. Но почему то в proftpd это написано явно прямо в конфиге, а в vsftp решили умолчать. Видимо, чтоб враг не догадался.

Все, я не знаю уже, плакать или смеяться. Ругаться уже не хочется. Наступает апатия. Задавать вопросы сюда в форум как я понял тоже бесполезно. Все равно никто ничего толкового не скажет. Просто спрошу:
Как вы думаете, с какой целью люди пишут программы? Что у них в голове при этом?
У меня пока впечатление, что те, кто писал vsftpd (или те, кто адаптировал его для Debian-а), думали о том, какие они умные и как бы им возвыситься среди людей.


Попробуйте поставить proftpd, настройки тривиальные, ставиться легко.

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

Я как-то тоже больше предпочитаю для подобных задач ("маленькая хост-машина") vsftpd. Всё-таки, ProFTPD для более серьёзных задач. Разумеется, это моё личное ИМХО.

Не знаю как под FreeBSD, но под линуксом вход в proFTPd требует нормального шела пользователя. А разным левым людям не хотелось бы давать возможности входа по ssh. Поэтому мой выбор - vsftpd

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

Цитата
Не знаю как под FreeBSD, но под линуксом вход в proFTPd требует нормального шела пользователя. А разным левым людям не хотелось бы давать возможности входа по ssh.


А какая на фиг, разница под ЧТО? В репозитарии Дебиана, как я подозреваю, есть все перечисленные серверы.

В репозитарие Debian есть выше перечисленные серверы

Цитата
Vasya Vasilev пишет:
Один из вариантов "--shell=/bin/false"

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

говорят лучше -proftpd
но я юзаю вери симпле ftp )
единственный траббл, замеченный мною, иногда создаётся большое число процессов сервера, которые не умирают после отключения пользователя. было редко, не мешает

В vsftp 2.0.6 сделали перекодировку файлов в кодировку клиента. Теперь всё прекрасно отображается без всяких патчей! Ура!

Цитата
Oleg Belousov пишет:
Не знаю как под FreeBSD, но под линуксом вход в proFTPd требует нормального шела пользователя. А разным левым людям не хотелось бы давать возможности входа по ssh. Поэтому мой выбор - vsftpd

Это отключаемо, в конфиг proftpd.conf :

а vsftpd не осилил в плане настроек прав, отличных от Read only
вроде и права на файлы и папки адекватные, и всё, что по идее должно разрешать запись - всё равно не давал, на то он и VerySecureFTPDaemon

Использование Nginx и FTP для создания сервера изображений в Linux

1. Необходимые компоненты

Сервер изображений двух сервисов:

Nginx (доступ к картинкам):

2. Обратный прокси для балансировки нагрузки

FTP сервис (загрузка картинок):

Используя Linux в качестве сервера, в Linux есть компонент ftp vsftpd.

Во-вторых, строительство сервера Nginx

1. Установите Nginx

Требуется виртуальная машина VMware.

Vsftpd: требует онлайн-установки.

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

IP-адрес локальной сети Linux: 192.168.1.110

Команда для изменения Linux IP и вступления в силу немедленно:

1.1, среда установки nginx

nginx разработан на языке C, рекомендуется запускать на Linux, в этом руководстве в качестве среды установки используется Centos6.5.

Чтобы установить nginx, вам нужно сначала скомпилировать исходный код, загруженный с официального сайта. Компиляция зависит от среды gcc. Если среды gcc нет, вам нужно установить gcc: yum install gcc-c ++

Примечание: pcre-devel - это вторичная библиотека разработки, разработанная с использованием pcre. nginx также нуждается в этой библиотеке.

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

1.2 Загрузите установочный пакет nginx nginx-1.8.0.tar.gz на сервер.



Откройте окно сеанса sftp в secureCRT и загрузите файл

Используйте команду put / get или перетаскивайте файлы напрямую

1.3, распаковать (выполнить в каталоге, где находится установочный пакет)

в root @bogon nginx- 1.8 . 0 По содержанию

./configure && make && make install // Понесли потери здесь



1.5, скомпилируйте и установите

После успешной установки введите каталог установки ("--prefix = / usr / local / nginx \", указанный при создании makedir)



2.Nginx работает

2.1, запустить nginx



2.2 Закрыть

2.3, перезагрузите файл конфигурации

2.5, посетите сервис nginx



Кстати, рекомендую новичку веб-сайт Java новичкам, я чувствую себя супер подходящим для разработки Java начального уровня,

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

3. О конфигурации сервера изображений

Введите каталог файла конфигурации

Конфигурационный файл nginx по умолчанию nginx.config

Настроить сервер изображений

Способ 1. Измените конфигурацию в расположении / <> на сервере файлов конфигурации <>:

Среди них: / home / ftpuser / www; каталог www под корневым каталогом учетной записи службы FTP ftpuser

Поскольку вам нужно запустить номер порта 8080, откройте порт 8080 в брандмауэре

3. Установка и запуск службы FTP

1. Установите компонент vsftpd

Компонент vsftpd является компонентом службы Linux FTP, и метод установки - онлайн-установка.

После установки есть файл /etc/vsftpd/vsftpd.conf, который является файлом конфигурации vsftp.

2. Добавьте пользователя ftp

Этот пользователь используется для входа на FTP-сервер.

После того, как такой пользователь создан, вы можете использовать этот логин, не забывайте использовать обычный логин и не использовать анонимный. Путь по умолчанию после входа в систему / home / ftpuser.

Добавить пароль для этой учетной записи ftp

Измените пароль после ввода пароля дважды.

3、 Брандмауэр открывает порт 21

Поскольку порт ftp по умолчанию - 21, а centos не включен по умолчанию, необходимо изменить файл iptables.

В строке 22 -j ПРИНЯТЬ. Следующая строка аналогична этой строке, просто замените 22 на 21, а затем сохраните его с помощью wq.

Также запустите, перезапустите iptables

4、 Изменить Selinux

Доступ к внешней сети возможен, но обнаруживается, что невозможно вернуться в каталог (активный режим с использованием ftp, пассивный режим все еще недоступен) и его нельзя загрузить, поскольку selinux делает странные вещи.

Выполните следующую команду, чтобы просмотреть статус:

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

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