Вступление
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 для безопасной передачи файлов с удаленного сервера может помочь вам.