Как настроить vsftpd для анонимных загрузок в Ubuntu 16.04

Вступление

FTP, сокращение от File Transfer Protocol, является сетевым протоколом, который когда-то широко использовался для перемещения файлов между клиентом и сервером. С тех пор его заменили более быстрыми, более безопасными и более удобными способами доставки файлов. Многие обычные интернет-пользователи ожидают загрузки непосредственно из своего веб-браузера с помощью + https +, а пользователи командной строки с большей вероятностью будут использовать безопасные протоколы, такие как + scp + или https://www.digitalocean.com/community/tutorials. / как к потребительному SFTP к гарантированной передаче-файлам-с-дистанционному сервер [SFTP].

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

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

Предпосылки

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

  • * Сервер Ubuntu 16.04 с некорневым пользователем с привилегиями + sudo + *. Подробнее о том, как настроить пользователя с этими привилегиями, вы можете узнать на нашем https://www.digitalocean.com/community/tutorials/initial -server-setup-with-ubuntu-16-04 [Начальная настройка сервера с Ubuntu 16.04].

Как только у вас есть сервер, вы готовы начать.

Шаг 1 - Установка vsftpd

Начнем с обновления списка пакетов и установки демона + vsftpd:

sudo apt-get update
sudo apt-get install vsftpd

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

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

Создав резервную копию конфигурации, мы готовы настроить брандмауэр.

Шаг 2 - Открытие брандмауэра

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

sudo ufw status

В нашем случае мы видим следующее:

OutputOutput
Status: active

To Action  From
-- ------  ----
OpenSSH ALLOW   Anywhere
OpenSSH (v6)   ALLOW   Anywhere (v6)

У вас могут быть другие правила или вообще нет правил брандмауэра. В этом примере разрешен только трафик + ssh +, поэтому нам нужно добавить правила для трафика FTP.

Во многих приложениях вы можете использовать + sudo ufw app list + и включать их по имени, но FTP не является одним из них. Поскольку ufw также проверяет / etc / services на наличие порта и протокола службы, мы все равно можем добавить FTP по имени. Нам нужны оба + ftp-data + на порту 20 и + ftp + (для команд) на порту 21:

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

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

OutputStatus: active

To Action  From
-- ------  ----
OpenSSH  ALLOW   Anywhere


OpenSSH (v6)   ALLOW   Anywhere (v6)

С установленным + vsftpd + и необходимыми портами мы готовы к работе.

Шаг 3 - Подготовка пространства для файлов

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

sudo mkdir -p /var/ftp/pub

Далее мы установим права доступа к каталогу + nobody: nogroup +. Позже мы настроим FTP-сервер так, чтобы все файлы принадлежали пользователю и группе ftp.

sudo chown nobody:nogroup /var/ftp/pub

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

echo "vsftpd test file" | sudo tee /var/ftp/pub/test.txt

С этим образцом файла мы готовы к настройке демона vsftpd.

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

Мы настраиваем пользователей с привилегиями + sudo + для поддержки файлов для широкого распространения среди общественности. Для этого мы настроим + vsftpd +, чтобы разрешить анонимную загрузку. Мы ожидаем, что администраторы файлов будут использовать + scp +, + sftp + или любой другой безопасный метод для обслуживания файлов, поэтому мы не будем разрешать загрузку файлов через FTP.

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

Начнем с изменения уже установленных:

sudo nano /etc/vsftpd.conf

Найдите следующие значения и измените их так, чтобы они соответствовали значениям ниже:

/etc/vsftpd.conf

. . .
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=
#

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=
. . .

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

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

#
# 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

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

sudo systemctl restart vsftpd

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

sudo systemctl status vsftpd

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

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

Теперь мы готовы проверить вашу работу.

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

В веб-браузере введите ftp: //, а затем IP-адрес your сервера.

FTP: //

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

изображение: https: //assets.digitalocean.com/articles/vsftp-anon/anonftp-pub.png [изображение папки 'pub' в браузере]

Вы также должны иметь возможность щелкнуть в + pub +, увидеть + test.txt +, затем щелкнуть правой кнопкой мыши, чтобы сохранить файл.

изображение: https: //assets.digitalocean.com/articles/vsftp-anon/anonftp-test1.png [изображение файла 'test.txt' в браузере]

Вы также можете выполнить тестирование из командной строки, что даст гораздо больше отзывов о вашей конфигурации. Мы перейдем по ftp к серверу в пассивном режиме, который является флагом `+ -p + 'на многих клиентах командной строки. Пассивный режим позволяет пользователям избегать изменения конфигурации локального брандмауэра, чтобы позволить серверу и клиенту соединяться.

ftp -p

При запросе имени пользователя вы можете ввести «ftp» или «анонимный». Они эквивалентны, поэтому мы будем использовать более короткий «ftp»:

Connected to 203.0.113.0.
220 (vsftpd 3.0.3)
Name (203.0.113.0:21:sammy):

После нажатия Enter вы должны получить следующее:

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

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

ls
Output227 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.

Как анонимный пользователь, вы сможете передавать файл на локальный компьютер с помощью команды + get +:

cd pub
get test.txt
Outputftp> 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
Output227 Entering Passive Mode (104,236,10,192,168,254).
550 Permission denied.

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

bye

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

Шаг 6 - Попытка подключиться как пользователь

Возможно, вы также захотите убедиться, что вы _не можете подключиться как пользователь с локальной учетной записью, поскольку эта настройка не шифрует их учетные данные для входа. Вместо ввода «ftp» или «анонимный» при появлении запроса на вход в систему попробуйте использовать пользователя sudo:

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

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

Заключение

В этом уроке мы рассмотрели, как настроить vsftpd только для анонимных загрузок. Это позволяет нам поддерживать устаревшие приложения, которые не могут использовать более современные протоколы или широко публикуемые URL-адреса FTP, которые было бы сложно обновить. Чтобы узнать больше об обслуживании файлов, How To Use SFTP для безопасной передачи файлов с удаленного сервера может помочь вам.

Related