Настройка FTP-сервера Ubuntu
Обновлено: 21.11.2024
FTP (протокол передачи файлов) — это относительно старый и наиболее часто используемый стандартный сетевой протокол, используемый для загрузки/выгрузки файлов между двумя компьютерами по сети. Однако FTP изначально небезопасен, поскольку передает данные вместе с учетными данными пользователя (имя пользователя и пароль) без шифрования.
Предупреждение. Если вы планируете использовать FTP, рассмотрите возможность настройки FTP-соединения с помощью SSL/TLS (рассмотрим в следующей статье). В противном случае всегда лучше использовать безопасный FTP, такой как SFTP.
В этом руководстве мы покажем, как установить, настроить и защитить FTP-сервер (VSFTPD, полностью «Very Secure FTP Daemon») в Ubuntu, чтобы обеспечить надежную защиту от уязвимостей FTP.
Шаг 1. Установка VsFTP-сервера в Ubuntu
<р>1. Сначала нам нужно обновить список источников системных пакетов, а затем установить двоичный пакет VSFTPD следующим образом: <р>2. После завершения установки служба изначально будет отключена, поэтому нам нужно запустить ее вручную на какое-то время, а также включить ее автоматический запуск при следующей загрузке системы: <р>3. Затем, если на сервере включен брандмауэр UFW (он не включен по умолчанию), вам необходимо открыть порты 21 и 20, где прослушиваются демоны FTP, чтобы разрешить доступ к службам FTP с удаленных компьютеров, а затем добавить новый Правила брандмауэра следующие:Шаг 2. Настройка и защита сервера VsFTP в Ubuntu
<р>4. Теперь давайте выполним несколько настроек для настройки и защиты нашего FTP-сервера. Сначала мы создадим резервную копию исходного файла конфигурации /etc/vsftpd/vsftpd.conf следующим образом:Далее откроем файл конфигурации vsftpd.
Добавьте/измените следующие параметры с этими значениями:
Важно: когда пользователи входят на FTP-сервер, они помещаются в chroot-окружение, это локальный корневой каталог, который будет действовать как их домашний каталог только для сеанса FTP.
Далее мы рассмотрим два возможных сценария установки каталога chrooted jail (локальный корневой каталог), как описано ниже.
<р>6. На этом этапе давайте добавим/изменим/раскомментируем эти две следующие опции, чтобы ограничить пользователей FTP их домашними каталогами.Опция chroot_local_user=YES означает, что локальные пользователи будут помещены в chroot-тюрьму, их домашний каталог по умолчанию после входа в систему.
И мы также должны понимать, что VSFTPD не разрешает запись в каталог chroot-тюрьмы по умолчанию из соображений безопасности, однако мы можем использовать параметр allow_writeable_chroot=YES, чтобы отключить этот параметр.
Сохраните файл и закройте его. Затем нам нужно перезапустить службы VSFTPD, чтобы указанные выше изменения вступили в силу:
Шаг 3. Тестирование сервера VsFTP в Ubuntu
<р>7. Теперь мы проверим FTP-сервер, создав пользователя FTP с помощью команды useradd следующим образом: <р>8. Теперь пришло время проверить, работают ли наши вышеуказанные конфигурации должным образом. Мы начнем с тестирования анонимных входов в систему; из приведенного ниже вывода ясно видно, что анонимный вход в систему на FTP-сервере запрещен:
Предупреждение. Установка параметра allow_writeable_chroot=YES может быть настолько опасной, что может иметь последствия для безопасности, особенно если у пользователей есть разрешение на загрузку или, более того, доступ к оболочке. Используйте его только в том случае, если вы точно знаете, что делаете.
Следует отметить, что эти последствия для безопасности не являются специфическими для VSFTPD, они также могут повлиять на все другие демоны FTP, которые предлагают поместить локальных пользователей в тюрьмы chroot.
По этой причине в следующем разделе мы объясним более безопасный метод установки другого закрытого для записи локального корневого каталога для пользователя.
Шаг 4. Настройка домашних каталогов пользователей FTP в Ubuntu
<р>11. Теперь снова откройте файл конфигурации VSFTPD.Далее создайте альтернативный локальный корневой каталог для пользователя (aaronkilik, ваш, возможно, не такой) и установите необходимые разрешения, отключив права на запись для всех других пользователей в этот каталог:
<р>12. Затем создайте каталог под локальным корнем с соответствующими разрешениями, где пользователь будет хранить свои файлы:После этого добавьте/измените приведенные ниже параметры в файле конфигурации VSFTPD с соответствующими значениями:
Сохраните файл и закройте его. И перезапустите службы VSFTPD с последними настройками:
<р>13. Теперь давайте выполним окончательную проверку и убедимся, что локальный корневой каталог пользователя — это каталог FTP, который мы создали в его домашнем каталоге.
Вот оно!Не забудьте поделиться своим мнением об этом руководстве через форму комментариев ниже или, возможно, предоставить нам любую важную информацию по теме.
И последнее, но не менее важное: не пропустите нашу следующую статью, в которой мы опишем, как защитить FTP-сервер с помощью соединений SSL/TLS в Ubuntu 16.04/16.10, а до тех пор всегда следите за новостями TecMint.
Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.
Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:
TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.
Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.
Мы благодарны за вашу бесконечную поддержку.
Похожие записи
13 мыслей о «Как установить и настроить FTP-сервер в Ubuntu»
Здравствуйте, мистер Аарон Кили!
Спасибо за помощь
Я получил сообщение об ошибке «553 не удалось создать файл»
Пожалуйста, помогите мне снова решить вопрос СПАСИБО
Спасибо за помощь!
Мне интересно, можно ли создать папку local_root на внешнем диске?
Я попробовал "local_root/media///", но продолжал получать сообщение об ошибке "невозможно изменить каталог /media///".
Это потому, что мне нужно как-то дать разрешение пользователю FTP?
Здравствуйте. Во-первых, спасибо за такой большой учебник, но у меня есть некоторые проблемы с ним. Я использую raspberry pi 4 для работы с сервером ubuntu.
Обновление и обновление прошли успешно.
Установка тоже.
Но я не могу его «запустить».
После команды sudo systemctl start vsftpd и sudo systemctl enable vsftpd все было хорошо.
Затем я проверил статус с помощью команды sudo service vsftpd status и обнаружил, что FTP-сервер не работает. Вот информация об этом:
● vsftpd.service — FTP-сервер vsftpd
Загружено: загружено (/lib/systemd/system/vsftpd.service; включено; предустановка поставщика: включено)
Активно: ошибка (Результат: код выхода ) с пт 03.01.2020 13:15:21 UTC; 27 с назад
Основной PID: 3012 (code=exited, status=2)
03 января 13:15:21 ubuntu systemd[1]: запуск FTP-сервера vsftpd.
Jan 03 13:15:21 ubuntu systemd[1]: Запущен FTP-сервер vsftpd.
03 января 13:15:21 Ubuntu systemd[1]: vsftpd.service: Основной процесс завершен, код = завершен, статус = 2/INVALIDARGUMENT
03 января 13:15:21 Ubuntu systemd[1] : vsftpd.service: Ошибка с результатом «код выхода».
Я снова проверил с помощью – sudo ufw status
Вот результат – Статус: неактивен
Не могу понять, что может быть не так.
Возможно, вы сможете помочь.
Проверьте файл конфигурации /etc/vsftpd.conf на наличие недопустимых аргументов.
У меня была такая же проблема. В конце «userlist_deny=NO» был странный пробел. Это сработало после того, как я удалил пробел.
Вы можете создать его, если он не существует.
Звездный! Отличная работа и спасибо за предоставленные услуги.
Спасибо за добрые слова благодарности и поддержки.
Убедитесь, что у вас установлены правильные разрешения (rwx) для созданных вами каталогов.
Моя конфигурация FTP аналогична этому руководству, но все же я застрял с сообщением ниже. Я использую Kali Linux в качестве сервера и Ubuntu в качестве клиента.
Обратите внимание, что здесь мы использовали Ubuntu в качестве сервера.
Рассмотрите возможность использования пассивных портов в файле конфигурации, откройте диапазон портов, скажем, 40000-50000 в брандмауэре следующим образом:
sudo ufw allow 40000:50000/tcp
И добавьте следующие параметры в файл конфигурации:
pasv_min_port=40000
pasv_max_port=50000
Сохраните файл и перезапустите службы vsftpd:
sudo systemctl restart vsftpd
Напишите ответ, если это не сработает.
Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Протокол передачи файлов (FTP) – это протокол TCP для загрузки файлов между компьютерами. В прошлом он также использовался для загрузки, но, поскольку этот метод не использует шифрование, учетные данные пользователя, а также данные передаются в открытом виде и легко перехватываются. Поэтому, если вы ищете способ безопасно загружать и скачивать файлы, обратитесь к документации OpenSSH.
FTP работает по модели клиент/сервер. Серверный компонент называется демоном FTP. Он постоянно прослушивает FTP-запросы от удаленных клиентов. Когда запрос получен, он управляет входом в систему и устанавливает соединение. Во время сеанса он выполняет любую из команд, отправленных FTP-клиентом.
Доступом к FTP-серверу можно управлять двумя способами:
В анонимном режиме удаленные клиенты могут получить доступ к FTP-серверу, используя учетную запись пользователя по умолчанию, называемую «анонимной» или «ftp», и отправив адрес электронной почты в качестве пароля. В режиме аутентификации пользователь должен иметь учетную запись и пароль. Этот последний вариант очень ненадежен и не должен использоваться, за исключением особых обстоятельств. Если вы хотите безопасно передавать файлы, см. SFTP в разделе OpenSSH-Server. Доступ пользователей к каталогам и файлам FTP-сервера зависит от разрешений, определенных для учетной записи, используемой при входе в систему. Как правило, демон FTP скрывает корневой каталог FTP-сервера и заменяет его на домашний каталог FTP. Это скрывает остальную часть файловой системы от удаленных сеансов.
vsftpd — установка FTP-сервера
vsftpd — демон FTP, доступный в Ubuntu. Его легко установить, настроить и обслуживать. Чтобы установить vsftpd, вы можете запустить следующую команду:
Анонимная конфигурация FTP
По умолчанию vsftpd не настроен на анонимную загрузку. Если вы хотите включить анонимную загрузку, отредактируйте /etc/vsftpd.conf, изменив:
Во время установки создается пользователь ftp с домашним каталогом /srv/ftp . Это каталог FTP по умолчанию.
Если вы хотите изменить это местоположение, например, на /srv/files/ftp, просто создайте каталог в другом месте и измените домашний каталог пользователя ftp:
После внесения изменений перезапустите vsftpd:
Наконец, скопируйте любые файлы и каталоги, которые вы хотите сделать доступными через анонимный FTP, в /srv/files/ftp или /srv/ftp, если вы хотите использовать значение по умолчанию.
Конфигурация FTP с аутентификацией пользователя
По умолчанию vsftpd настроен на аутентификацию пользователей системы и разрешение им загружать файлы. Если вы хотите, чтобы пользователи могли загружать файлы, отредактируйте /etc/vsftpd.conf :
Теперь перезапустите vsftpd:
Теперь, когда системные пользователи входят в FTP, они начинают со своих домашних каталогов, где они могут загружать, загружать, создавать каталоги и т. д.
Точно так же по умолчанию анонимным пользователям не разрешено загружать файлы на FTP-сервер. Чтобы изменить этот параметр, вы должны раскомментировать следующую строку и перезапустить vsftpd:
Предупреждение
Включение анонимной загрузки по FTP может представлять серьезную угрозу безопасности. Лучше не включать анонимную загрузку на серверы, доступ к которым осуществляется напрямую из Интернета.
Файл конфигурации состоит из множества параметров конфигурации. Информация о каждом параметре доступна в файле конфигурации. Кроме того, вы можете обратиться к справочной странице man 5 vsftpd.conf для получения подробной информации о каждом параметре.
Защита FTP
В /etc/vsftpd.conf есть параметры, которые помогут сделать vsftpd более безопасным. Например, пользователи могут быть ограничены своими домашними каталогами, раскомментировав:
Вы также можете ограничить определенный список пользователей только их домашними каталогами:
Кроме того, файл /etc/ftpusers содержит список пользователей, которым запрещен доступ к FTP. Список по умолчанию включает root, daemon, Nobody и т. д. Чтобы отключить доступ по FTP для дополнительных пользователей, просто добавьте их в список.
FTP также можно зашифровать с помощью FTPS. В отличие от SFTP, FTPS — это FTP по протоколу Secure Socket Layer (SSL). SFTP – это сеанс, аналогичный FTP, через зашифрованное соединение SSH. Основное отличие состоит в том, что пользователям SFTP необходимо иметь в системе учетную запись shell, а не nologin. Предоставление всем пользователям оболочки может быть не идеальным для некоторых сред, таких как общий веб-хост.Однако можно ограничить такие учетные записи только SFTP и отключить взаимодействие с оболочкой.
Чтобы настроить FTPS, отредактируйте /etc/vsftpd.conf и внизу добавьте:
Также обратите внимание на параметры, связанные с сертификатом и ключом:
По умолчанию для этих параметров заданы сертификат и ключ, предоставляемые пакетом ssl-cert. В производственной среде их следует заменить сертификатом и ключом, сгенерированными для конкретного хоста. Дополнительные сведения о сертификатах см. в разделе Безопасность — Сертификаты.
Теперь перезапустите vsftpd, и неанонимные пользователи будут вынуждены использовать FTPS:
Чтобы разрешить пользователям с оболочкой /usr/sbin/nologin доступ к FTP, но не иметь доступа к оболочке, отредактируйте /etc/shells, добавив оболочку nologin:
Это необходимо, потому что по умолчанию vsftpd использует PAM для аутентификации, а файл конфигурации /etc/pam.d/vsftpd содержит:
Модуль PAM shells ограничивает доступ к оболочкам, перечисленным в файле /etc/shells.
Большинство популярных FTP-клиентов можно настроить для подключения с помощью FTPS. FTP-клиент командной строки lftp также может использовать FTPS.
В этом посте рассказывается, что такое FTP-сервер и как его установить в Ubuntu 20.04.
Установка FTP-сервера:
Обновление вашей системы:
Выполните приведенную ниже команду, чтобы обновить системные репозитории:
Как установить vsftpd (FTP-сервер):
Во-первых, нам нужно получить vsftpd. «vsftpd» — это FTP-сервер, безопасный, быстрый и удобный для систем Linux.
Выполните приведенную ниже команду:
По умолчанию он запускается, как и все службы в Debian.
Проверка состояния vsftpd:
После установки vsftpd (FTP-сервер) запустите команду, чтобы проверить статус, запущен он или нет:
Он показывает, что "FTP-сервер работает правильно".
Настройка FTP-сервера:
Все конфигурации VSFTPD находятся в файле /etc/vsftpd.conf, поэтому перед изменением его легко создать резервную копию. Если произойдет что-то непредвиденное, мы сможем вернуться к оригиналу и исправить все ошибки.
Используйте указанную команду для создания резервной копии:
Систематически вводите все комментарии.
Начнем с активного прослушивания сервера.
Введите слушать =YES
Если вы не используете IPv6, его необходимо отключить:
listen_ipv6=Нет
Кроме того, не следует предоставлять доступ анонимному пользователю:
anonymous_enable=НЕТ
По умолчанию клиент может только скачать файл, поэтому пусть он остается активным:
local_enable=ДА
write_enable=ДА
FTP работает на порту 20:
connect_from_port_20=ДА.
Порт прослушивания можно изменить:
listen_port=XX
Сохраните изменения, нажав «CTRL+o», и закройте файл, нажав «CTRL+x».
Терминал будет выглядеть так.
Введите указанную команду, чтобы просмотреть файл без комментариев:
Создание нового пользователя:
Выполните команду, показанную ниже, чтобы создать нового пользователя для конфигурации сервера:
Он попросит вас назначить пароль. Введите пароль:
Еще раз введите пароль для подтверждения. Ваш пароль обновлен.
Пользователь успешно создан на FTP-сервере.
Настройка FTP-сервера в Ubuntu 20.04:
У нас есть два способа настройки FTP-сервера:
- Настроить через терминал
- Настроить через браузер
Нам нужен IP-адрес для настройки сервера; проверьте свой IP-адрес с помощью следующей команды:
Настроить через терминал:
Запустите терминал и предоставьте доступ к нему с IP-адресом сервера:
Настроить через браузер:
Откройте браузер и предоставьте доступ к FTP-серверу. Следующий адрес:
После установления соединения вам будет предложено ввести имя пользователя и пароль:
После ввода учетных данных нажмите «ОК», соединение будет установлено.
Вывод:
FTP (протокол передачи файлов) — это программное приложение, которое позволяет нам отправлять файлы из одной системы в другую через Интернет. Это хорошо известный протокол. Одна система действует как сервер для сохранения информации, а другая действует как клиент, который отправляет или запрашивает файлы с сервера. Благодаря этому посту мы поняли, как установить FTP-сервер и как его настроить через терминал и браузер в Ubuntu 20.04.
Об авторе
Акса Макбул
Как инженер-программист, я с удовольствием пишу о различных
статьях, связанных с ИТ, но глубоко интересуюсь Linux. Я провожу большую часть своего времени за чтением блогов, связанных с Linux, и книг, связанных с ИТ. Я хочу служить миру своими писательскими способностями.
vsftpd, очень безопасный FTP-демон, представляет собой FTP-сервер для многих Unix-подобных систем, включая Linux, а также часто является FTP-сервером по умолчанию для многих дистрибутивов Linux. vsftpd полезен для оптимизации безопасности, производительности и стабильности. Он также обеспечивает надежную защиту от проблем с безопасностью, обнаруженных на других FTP-серверах. vsftpd может обрабатывать виртуальные конфигурации IPD, поддерживать шифрование с интеграцией SSL и многое другое.
В этом руководстве вы настроите vsftpd, чтобы позволить пользователю загружать файлы в свой домашний каталог с помощью FTP с учетными данными для входа, защищенными SSL/TLS. Вы также подключите свой сервер с помощью FileZilla, FTP-клиента с открытым исходным кодом, чтобы протестировать шифрование TLS.
Предпосылки
Чтобы следовать этому руководству, вам потребуется:
Первое, что вам нужно, это сервер Ubuntu 20.04, пользователь без полномочий root с правами sudo и включенный брандмауэр. Вы можете узнать больше о том, как это сделать, в нашем руководстве Initial Server Setup with Ubuntu 20.04.
Второе, что вам нужно, это FileZilla, FTP-клиент с открытым исходным кодом, установленный и настроенный на вашем локальном компьютере. Это позволит вам проверить, может ли клиент подключиться к вашему серверу через TLS. Инструкции по установке FileZilla в системах Debian и Ubuntu можно найти в этом руководстве, а также ссылки на инструкции по установке в других системах.
Шаг 1 — Установка vsftpd
Начните с обновления списка пакетов:
Затем установите демон vsftpd:
По завершении установки скопируйте файл конфигурации, чтобы вы могли начать с пустой конфигурации, а также сохраните оригинал в качестве резервной копии:
Сделав резервную копию конфигурации, вы готовы к настройке брандмауэра.
Шаг 2. Открытие брандмауэра
Сначала проверьте состояние брандмауэра, чтобы убедиться, что он включен. Если это так, вы внесете изменения, чтобы убедиться, что FTP-трафик разрешен, чтобы правила брандмауэра не блокировали тесты.
Проверьте состояние брандмауэра:
Эти выходные данные показывают, что брандмауэр активен и разрешен только SSH:
У вас могут быть другие правила или вообще не быть правил брандмауэра. Поскольку разрешен только SSH-трафик, вам нужно добавить правила для FTP-трафика.
Для начала откройте порты 20 , 21 и 990, чтобы они были готовы к включению TLS:
Затем откройте порты 40000–50000 для диапазона пассивных портов, которые вы будете устанавливать в файле конфигурации:
Проверьте состояние вашего брандмауэра:
Теперь результаты правил брандмауэра должны выглядеть следующим образом:
Установив vsftpd и открыв необходимые порты, пришло время создать выделенного пользователя FTP.
Шаг 3. Подготовка каталога пользователей
На этом шаге вы создадите выделенного пользователя FTP. Однако у вас уже может быть пользователь, которому нужен FTP-доступ. В этом руководстве описывается, как сохранить доступ существующего пользователя к своим данным, но даже в этом случае мы рекомендуем вам начать с нового выделенного пользователя FTP, пока вы не настроите и не протестируете свои настройки, прежде чем перенастраивать любых существующих пользователей.
Начните с добавления тестового пользователя:
Назначьте пароль при появлении запроса. Не стесняйтесь нажимать ENTER, чтобы пропустить следующие подсказки, так как эти детали не важны для целей этого шага.
FTP обычно более безопасен, когда пользователи ограничены определенным каталогом. vsftpd выполняет это с помощью chroot-тюрьм. Когда chroot включен для локальных пользователей, они по умолчанию ограничены своим домашним каталогом. Поскольку vsftpd особым образом защищает каталог, он не должен быть доступен для записи пользователем.Это нормально для нового пользователя, который должен подключаться только через FTP, но существующему пользователю может потребоваться запись в свою домашнюю папку, если у него также есть доступ к оболочке.
В этом примере вместо того, чтобы удалять права записи из домашнего каталога, создайте каталог ftp, который будет служить chroot, и каталог файлов с возможностью записи для хранения реальных файлов.
Создайте папку ftp:
Установите владельца:
Удалить права на запись:
Проверьте разрешения:
Далее создайте каталог для загрузки файлов:
Затем назначьте право собственности пользователю:
Проверка прав доступа к ftp-каталогу должна вернуть следующий результат:
Наконец, добавьте файл test.txt для тестирования:
Теперь, когда вы защитили каталог ftp и разрешили пользователю доступ к каталогу файлов, теперь вам нужно изменить нашу конфигурацию.
Шаг 4 — Настройка FTP-доступа
На этом шаге вы разрешите одному пользователю с локальной учетной записью оболочки подключаться к FTP. Два ключевых параметра для этого уже установлены в vsftpd.conf. Откройте этот файл с помощью предпочитаемого вами текстового редактора. Здесь мы будем использовать nano :
После того как вы открыли файл, убедитесь, что для директивы anonym_enable установлено значение NO, а для директивы local_enable установлено значение YES :
Эти настройки запрещают анонимный вход в систему и разрешают локальный вход соответственно. Имейте в виду, что включение локального входа означает, что для входа может использоваться любой обычный пользователь, указанный в файле /etc/passwd.
Раскомментируйте chroot, чтобы пользователь, подключенный к FTP, не мог получить доступ к каким-либо файлам или командам за пределами дерева каталогов:
Затем добавьте директиву user_sub_token, значением которой является переменная среды $USER. Затем добавьте директиву local_root и задайте для нее показанный путь, который также включает переменную среды $USER. Эта настройка гарантирует, что конфигурация позволит этому пользователю и будущим пользователям перенаправляться в домашний каталог соответствующего пользователя при входе в систему. Добавьте эти настройки в любом месте файла:
Ограничьте диапазон портов, которые можно использовать для пассивного FTP, чтобы обеспечить достаточное количество подключений:
Примечание. На шаге 2 вы открыли указанные здесь порты для диапазона пассивных портов. Если вы измените эти значения, обязательно обновите настройки брандмауэра.
Чтобы разрешить доступ по FTP в каждом конкретном случае, настройте конфигурацию таким образом, чтобы пользователи имели доступ только тогда, когда они явным образом добавлены в список, а не по умолчанию:
userlist_deny переключает логику: если для него установлено значение YES , пользователям в списке будет отказано в доступе к FTP; если для него установлено значение NO , доступ разрешен только пользователям из списка.
После внесения изменений сохраните файл и выйдите из редактора. Если вы использовали nano для редактирования файла, вы можете сделать это, нажав CTRL + X , Y , а затем ENTER .
Убедитесь, что он был добавлен так, как вы ожидали:
Перезапустите демон, чтобы загрузить изменения конфигурации:
Настроив конфигурацию, вы можете проверить доступ к FTP.
Шаг 5. Тестирование FTP-доступа
Мы настроили сервер так, чтобы только пользователь sammy мог подключаться через FTP. Теперь мы убедимся, что это работает должным образом.
Поскольку вы отключили анонимный доступ, вы можете проверить его, попытавшись подключиться анонимно. Если конфигурация настроена правильно, анонимным пользователям должно быть отказано в доступе. Откройте другое окно терминала и выполните следующую команду. Обязательно замените 203.0.113.0 общедоступным IP-адресом вашего сервера:
При запросе имени пользователя попробуйте войти в систему как несуществующий пользователь, например анонимный, и вы получите следующий вывод:
Закройте соединение:
Другие пользователи, кроме sammy, также не смогут подключиться. Попробуйте подключиться как пользователь sudo. Им также следует запретить доступ, и это должно произойти до того, как им будет разрешено ввести свой пароль:
Закройте соединение:
С другой стороны, пользователь sammy должен иметь возможность подключаться, читать и записывать файлы. Убедитесь, что назначенный вами FTP-пользователь может подключиться:
Теперь перейдите в каталог файлов:
Затем запустите get, чтобы перенести созданный ранее тестовый файл на локальный компьютер:
Затем загрузите файл с новым именем, чтобы проверить права на запись:
Закройте соединение:
Теперь, когда вы протестировали свою конфигурацию, теперь вам нужно предпринять шаги для дополнительной защиты вашего сервера.
Шаг 6 — Защита транзакций
Поскольку FTP не шифрует передаваемые данные, включая учетные данные пользователя, вы можете включить TLS/SSL для обеспечения этого шифрования. Первым шагом является создание SSL-сертификатов для использования с vsftpd .
Вам будет предложено указать адресную информацию для вашего сертификата. Замените выделенные значения своей информацией:
После создания сертификатов снова откройте файл конфигурации vsftpd:
После этих строк добавьте следующие строки, указывающие на созданный вами сертификат и закрытый ключ:
Теперь вы будете принудительно использовать SSL, что предотвратит подключение клиентов, не поддерживающих TLS. Это необходимо для обеспечения шифрования всего трафика, но это может заставить вашего FTP-пользователя сменить клиентов. Измените ssl_enable на YES :
Далее добавьте следующие строки, чтобы явным образом запретить анонимные подключения через SSL и потребовать SSL как для передачи данных, так и для входа в систему:
Затем настройте сервер для использования TLS, предпочтительного преемника SSL, добавив следующие строки:
Наконец, добавьте две последние опции. Первый не потребует повторного использования SSL, поскольку он может нарушить работу многих FTP-клиентов. Для второго потребуются наборы шифров с «высоким» шифрованием, что в настоящее время означает длину ключа, равную или превышающую 128 бит:
Вот как должен выглядеть этот раздел файла после внесения всех этих изменений:
По завершении сохраните и закройте файл. Если вы использовали nano , вы можете выйти, нажав CTRL + X , Y , а затем ENTER .
Перезапустите сервер, чтобы изменения вступили в силу:
С этого момента вы больше не сможете подключаться к небезопасному клиенту командной строки. Если вы попытаетесь, вы получите следующее сообщение:
Затем убедитесь, что вы можете подключиться с помощью клиента, поддерживающего TLS, например FileZilla.
Шаг 7. Тестирование TLS с помощью FileZilla
Большинство современных FTP-клиентов можно настроить на использование шифрования TLS. Для наших целей мы продемонстрируем, как подключиться к FileZilla из-за его кроссплатформенной поддержки. Обратитесь к документации для других клиентов.
При первом открытии FileZilla найдите значок диспетчера сайта, расположенный над словом Host, самый левый значок в верхней строке. Нажмите эту кнопку:
Откроется новое окно. Нажмите кнопку «Новый сайт» в правом нижнем углу:
В разделе "Мои сайты" появится новый значок со словами "Новый сайт". Вы можете назвать его сейчас или вернуться позже и использовать кнопку "Переименовать".
Заполните поле Хост именем или IP-адресом. В раскрывающемся меню "Шифрование" выберите "Требовать явный FTP через TLS".
В поле «Тип входа» выберите «Запрашивать пароль». Введите имя пользователя FTP в поле «Пользователь»:
Нажмите кнопку «Подключиться» в нижней части интерфейса. Вам будет предложено ввести пароль пользователя:
Выберите OK для подключения. Теперь вы должны быть подключены к серверу с шифрованием TLS/SSL.
Далее вам будет представлен сертификат сервера, который выглядит следующим образом:
Приняв сертификат, дважды щелкните папку с файлами и перетащите upload.txt влево, чтобы подтвердить, что вы можете загружать файлы:
После этого щелкните правой кнопкой мыши локальную копию, переименуйте ее в upload-tls.txt и перетащите обратно на сервер, чтобы убедиться, что вы можете загружать файлы:
Теперь вы подтвердили, что можете безопасно и успешно передавать файлы с включенным протоколом SSL/TLS.
Шаг 8. Отключение доступа к командной строке (необязательно)
Если вы не можете использовать TLS из-за требований клиента, вы можете повысить безопасность, отключив возможность входа пользователя FTP каким-либо другим способом. Один из способов предотвратить это — создать собственную оболочку. Хотя это не обеспечит никакого шифрования, возможно, стоит ограничить доступ скомпрометированной учетной записи к файлам, доступным через FTP.
Сначала откройте файл с именем ftponly в каталоге bin:
Добавьте сообщение, сообщающее пользователю, почему он не может войти в систему:
Сохраните файл и выйдите из редактора. Если вы использовали nano , вы можете выйти, нажав CTRL + X , Y , а затем ENTER .
Затем измените разрешения, чтобы сделать файл исполняемым:
Откройте список допустимых оболочек:
Внизу добавьте:
Обновите оболочку пользователя с помощью следующей команды:
Теперь попробуйте войти на свой сервер как sammy:
Вы получите следующее сообщение:
Это подтверждает, что пользователь больше не может подключиться к серверу по протоколу ssh и имеет доступ только к FTP.Обратите внимание: если вы получили сообщение об ошибке при входе на сервер, это может означать, что ваш сервер не поддерживает аутентификацию по паролю. Использование аутентификации на основе пароля может сделать ваш сервер уязвимым для атак, поэтому вы можете рассмотреть возможность отключения аутентификации по паролю. Если вы уже настроили аутентификацию на основе SSH-ключа, вы можете узнать больше о том, как отключить аутентификацию по паролю на своем сервере, на шаге 4 этого руководства.
Заключение
В этом руководстве мы объяснили, как настроить FTP для пользователей с локальной учетной записью. Если вам нужно использовать внешний источник аутентификации, вы можете изучить поддержку vsftpd виртуальных пользователей. Это предлагает богатый набор возможностей благодаря использованию PAM, подключаемых модулей аутентификации, и является хорошим выбором, если вы управляете пользователями в другой системе, такой как LDAP или Kerberos. Вы также можете прочитать о возможностях vsftpd, последних выпусках и обновлениях, чтобы узнать больше.
Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!
Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.
Читайте также: