Настроить сервер ftp: Как настроить FTP на виртуальном сервере Windows Server — INVS.RU

Содержание

Настройка сети — Документация — FileZilla

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

Содержание

  • Общие сведения

    • Исторические сведения
    • Технические сведения
      • NAT-роутеры
    • Файрволы
    • Умные роутеры, файрволы, и саботаж данных
  • Настройка клиента FileZilla
    • Пассивный режим
    • Активный режим
  • Настройка сервера FileZilla
    • Активный режим
    • Пассивный режим
  • Решение проблем
    • Таймауты при передаче больших файлов
  • Настройка сервера FileZilla под Windows Firewall

Общие сведения

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

Исторические сведения

На фоне быстро развивающейся сети Интернет протокол FTP выглядит не просто старым, а действительно архаичным. Ранние черновые спецификации протокола датируются 1971-ым годом, составление текущей спецификации начато в 1985-ом. На протяжении последних двух десятилетий протокол не менялся в своей основе.

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

Те времена прошли и многое изменилось. Технологический прогресс шел быстрее, чем кто-либо мог себе представить, одновременно выросло новое поколение пользователей. Интернет теперь — повсеместное явление, благодаря которому миллионы людей общаются друг с другом множеством разных способов. Главное ощутимое изменение: Интернет стал враждебным. Доступность и открытость сети привлекла злонамеренных пользователей, активно эксплуатирующих ошибки и неопытность других.

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

  • NAT-роутеры. Большинство сети использует протокол IPv4, имеющий ограниченное адресное пространство (IPv6 разработан решить эту проблему). Благодаря NAT-роутерам системы с большим количеством устройств могут пользоваться одним и тем же IP-адресом.
  • Персональные файрволы для защиты пользователей от недоработок операционных систем и приложений.

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

Тем не менее, при правильной настройке FTP предлагает надежный и опробованный способ передачи файлов.

Технические сведения

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

Существует два способа создания этого подключения: активный и пассивный режимы.

В пассивном режиме, который является рекомендуемым, клиент отсылает серверу команду PASV, на которую сервер отвечает адресом. После этого клиент отсылает команду для передачи файла или листинга директории и создает вторичное подключение по адресу, который был получен от сервера.

В активном режиме клиент открывает сокет на локальном устройстве и отсылает серверу адрес сокета с помощью команды PORT. После отсылки команды передачи файла или листинга сервер создает подключение по заданному адресу, который был указан клиентом.

В обоих случаях файл/листинг будут переданы через подключение для передачи данных.

Создание исходящих подключений требует задания меньшего количества параметров для роутеров/файрволов, чем создание входящих подключений. В пассивном режиме, подключение является исходящим от клиента и входящим для сервера. В активном режиме клиент и сервер меняются ролями — входящее подключение для клиента и исходящее для сервера.

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

Типичная сетевая конфигурация может выглядеть так:

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

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

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

NAT-роутеры

У большинства пользователей широкополосного подключения NAT-роутер расположен между их компьютером и сетью. Это может быть самостоятельное устройство (возможно беспроводной роутер), или же встроенный роутер в DSL- или кабельном модеме. В среде NAT все устройства за роутером составляют локальную сеть (LAN), каждое из устройств в сети имеют локальный IP-адрес (четыре небольших числа разделённых точками). NAT-роутер в свою очередь имеет свой локальный IP-адрес, а также внешний IP-адрес для идентификации в глобальной сети. Локальные адреса действительны только внутри LAN, для удаленного устройства они не имеют смысла. Пример:

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

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

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

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

Файрволы

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

В особенности при использовании FTP пользователи файрвола могут получать такие сообщения:


Trojan Netbus заблокирован на порту 12345, который используется процессом FileZilla. exe  

Почти во всех случаев такое сообщение — ложная тревога. Любое приложение может выбрать любой порт для сообщения через интернет. Может случиться так, что FileZilla выберет порт, случайно являющийся портом по умолчанию для трояна или другой зловредной программы. Дистрибутив FileZilla скачанный с официального сайта не содержит вирусов.

Умные роутеры, файрволы, и саботаж данных

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

Приведем пример. Предположим, что клиент находится за NAT-роутером и пытается подключиться к серверу. Предположим также, что клиент не осведомлен в том, что он находится за NAT и использует активный режим. Клиент отсылает команду PORT со своим локальным, немаршрутизируемым IP-адресом, серверу:


PORT 10,0,0,1,12,34  

Эта команда указывает серверу на подключение по адресу 10. 0.0.1 на порту 12*256+34 = 3106

После этого NAT-роутер бесшумно подменяет команду, включая внешний IP-адрес, а также создает временный порт для переброски FTP-сессии, возможно даже на другом порту:


PORT 123,123,123,123,24,55  

Эта команда указывает серверу на подключение по адресу 123.123.123.123 на порту 24*256+55 = 6199

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

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

  • NAT-роутер слепо предполагает, что некоторые подключения принадлежат FTP основываясь на таких данных, как целевые порты или ответы сервера:
    • Нет никакой гарантии относительно используемого протокола, несмотря на автоматическое определение (такие случаи называют ложной тревогой). Хоть это и маловероятно, вполне допустимо, что в будущих версиях протокола FTP синтаксис команды PORT может измениться. NAT-роутер, модифицируя команду PORT, изменяет без ведома пользователя параметры, которые он не поддерживает, из-за чего соединение будет разорвано.
    • Определение протокола роутером может не распознать FTP. Предположим, что роутер следит только за целевым портом, а если этот порт 21-ый, он будет распознан как FTP. Подключения в активном режиме от неправильно настроенного клиента к серверу на 21-ом порту будут работать, но подключения к другим серверам на нестандартных портах — нет.
  • Очевидно, что NAT-роутер не сможет модифицировать подключение, если FTP-сессия зашифрована, оставляя пользователя в недоумении, т.к. работать будут только незашифрованные подключения.
  • Предположим, что клиент за NAT-роутером отсылает «PORT 10,0,0,1,12,34». Каким образом NAT-роутер осведомлен в том, что клиент настроен неправильно? Также возможен случай с правильно настроенным клиентом, который инициирует FXP (сервер-сервер) передачу между сервером, к которому он подключен и устройством, которое находится в локальной сети сервера.

Как мы видим, возможности специфические для протоколов, включенные на NAT-роутере по умолчанию могут вызвать множество проблем. Хороший NAT-роутер всегда и полностью работает с протоколом без информации о самом протоколе. Исключением может быть случай, когда пользователь явно применил эту возможность и осознает все возможные последствия.

В этом подразделе мы рассматривали сочетание NAT-роутера на стороне клиента в активном режиме, те же рассуждения применяются и в случае сервера за NAT и ответами на команду PASV.

Настройка клиента FileZilla

Если вы пользуетесь FileZilla 3, мы рекомендуем запустить мастер настройки сети. С помощью мастера вы пройдете все нужные шаги, а после их завершения у вас будет возможность протестировать вашу конфигурацию.

Очевидно, что для подключения к любому серверу ваш файрвол должен разрешить такие действия для FileZilla. Большинство обычных FTP-серверов используют 21-ый порт, SFTP-серверы — 22-ой, а FTP через SSL/TLS (неявный режим) по умолчанию — 990-ый. Номера портов не являются жестко заданными, поэтому лучше всего разрешить исходящие подключения на любой порт.

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

Пассивный режим

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

Активный режим

В активном режиме клиент открывает сокет и ожидает от сервера подключения для передачи.

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

Если у вас присутствует NAT-роутер, вам нужно указать FileZilla внешний IP-адрес, в противном случае соединения в активном режиме не сработают для серверов вне вашей локальной сети:

  • Статический IP-адрес можно указать в диалоге настройки FileZilla.
  • Если ваш IP-адрес динамический, у вас есть возможность разрешить FileZilla получать внешний IP-адрес на специальном сайте автоматически каждый раз при запуске. Никакая информация не будет передана от вас на этот сайт, кроме версии используемого клиента FileZilla.

Если вы не уверены в своем выборе, используйте второй вариант.

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

Доступные порты находятся в диапазоне от 1 до 65535, порты ниже 1024-го зарезервированы для остальных протоколов. Для активного режима FTP лучшим выбором является номер порта равный или выше 50000. В связи с устройством протокола TCP (протокол, который находится ниже уровня FTP и используется для передачи данных), порт не может быть использован повторно сразу после каждого подключения. Таким образом, диапазон портов не должен быть слишком узким, в противном случае вы не сможете передать много файлов малого размера. В большинстве случаев достаточно диапазона в 50 портов.

Настройка и тестирование сервера FileZilla

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

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

  • Роутер заблокирует доступ к своему внешнему адресу изнутри локальной сети как возможную атаку
  • Роутер перебросит соединение вашему провайдеру, который заблокирует его как возможную атаку.

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

Активный режим

Убедитесь, что серверу FileZilla разрешено создавать исходящие подключения по любому порту, т.к. в этом режиме клиент определяет порт для соединения.

На локальной стороне подключения сервер FileZilla пытается использовать порт со значением на единицу ниже, чем у порта для контрольного соединения (к примеру, порт 20, если сервер принимает соединения на порту 21). Тем не менее, это не всегда возможно, поэтому не следует всегда полагаться на эту особенность.

Пассивный режим

Настройка сервера в этом случае практически повторяет настройку клиента в активном режиме.

В пассивном режиме сервер открывает сокет и ожидает соединения от клиента.

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

При наличии NAT-роутера вам нужно сообщить серверу FileZilla ваш внешний IP-адрес, в противном случае соединения в пассивном режиме будут работать только внутри локальной сети:

  • Статический IP-адрес можно указать в диалоге настройки сервера FileZilla.
  • Если ваш IP-адрес динамический, у вас есть возможность разрешить серверу FileZilla получать внешний IP-адрес на специальном сайте автоматически при каждом запуске. Никакая информация не будет передана от вас на этот сайт, кроме версии используемого сервера FileZilla.

Если вы не уверены в своем выборе, используйте второй вариант.


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

Доступные порты находятся в диапазоне от 1 до 65535, порты ниже 1024-го зарезервированы для остальных протоколов. Для активного режима FTP лучшим выбором является номер порта равный или выше 50000. В связи с устройством протокола TCP (протокол, который находится ниже уровня FTP и используется для передачи данных), порт не может быть использован повторно сразу после каждого подключения. Таким образом, диапазон портов не должен быть слишком узким, в противном случае вы не сможете передать много файлов малого размера. В большинстве случаев достаточно диапазона в 50 портов.

Решение проблем

К сожалению, множество персональных файрволов и пользовательских роутеров имеют свои недоработки или, в некоторых случаях, даже способны саботировать работу FTP (например SMC Barricade v1. 2).

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

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

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

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

Причиной другой возможной проблемы может быть использование 21-го порта по умолчанию для вашего FTP-сервера. На стороне вашего провайдера может присутствовать файрвол, который может неожиданно изменять порт для команды PASV. Попробуйте использовать порт отличный от порта по умолчанию для вашего FTP-сервера.

Если время от времени вы наблюдаете сообщение «невозможно открыть подключение для передачи данных», т.е. FTP-клиент способен без проблем подключиться к FTP-серверу достаточное число раз, пока вы не получите данное сообщение, возможным препятствием может быть антивирус на клиентском ПК, настроенный на блокировку исходящих подключений по определенному диапазону портов. При работе сервера в пассивном режиме исходящие порты клиента определяются случайным образом, а при выборе портов попадающих в заблокированный диапазон, вы будете получать сообщение об ошибке. Для того, точной диагностики, вам следует просмотреть логи антивируса на машине клиента, который получает данную ошибку. В общем, любое ПО, способное блокировать диапазон исходящих портов, может быть причиной проблем подобного рода.

Таймауты при передаче больших файлов

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

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

В спецификации TCP не указывается лимит времени для сохранения неиспользуемого подключения. Предполагается, что подключение сохраняется на неопределенное время пока не будет закрыто явным образом. Тем не менее, большинство роутеров и файрволов автоматически закрывают свободные подключения по истечению некоторого времени. Более того, в большинстве случаев разрыв соединения происходит без уведомления об этом его участников. В случае продолжительной передачи данных через FTP это значит, что контрольное соединение может быть разорвано, но, ни клиент, ни сервер не будут об этом уведомлены. Таким образом, после того, как все данные были переданы, сервер все еще ожидает, что контрольное подключение можно использовать и отсылает через него подтверждение передачи клиенту. Аналогично, клиент готов использовать контрольное соединение и ожидает ответа от сервера. Но, т.к. контрольное соединение было разорвано, это ответ никогда не будет доставлен, что приводит к таймауту.

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

Препятствием этому служит то, что многие роутеры и файрволы разрывают соединения, которые не использовались меньше чем 2 и 4 минуты. Такое поведение нарушает спецификацию протокола TCP, в RFC 5382 это указано достаточно ясно. Другими словами, роутеры и файрволы, разрывающие соединение раньше нужного момента, нельзя признать рабочими, т. к. они не могут использоваться при длительной передаче данных через FTP. К сожалению, производители роутеров потребительского класса и поставщики файрволов не заботятся о соблюдении спецификаций.

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

Настройка сервера FileZilla под Windows Firewall

Если вы испытываете проблемы при настройке сервера FileZilla при работающем Windows Firewall (в особенности, если клиент, подключающийся к такому серверу получает сообщение об ошибке «Невозможно получить листинг директории»), вам нужно добавить сервер FileZilla в список исключений Windows Firewall. Для этого вам нужно сделать следующие шаги:

  • Откройте Windows Firewall из Панели Управления
  • Если вы пользуетесь Vista, нажмите «Изменить настройки»
  • Выберите вкладку «Исключения»
  • Нажмите «Добавить программу..»
  • НЕ выбирайте «интерфейс сервера FileZilla» из списка, вам нужно нажать на «Просмотр. ..»
  • Найдите установочную директорию сервера FileZilla (обычно это «C:\Program Files\FileZilla Server\»)
  • Выберите «FileZilla server.exe» и нажмите открыть (повторим еще раз, НЕ ВЫБИРАЙТЕ «FileZilla Server Interface.exe»)
  • Выберите «FileZilla server.exe» из списка и нажмите «Ok»
  • Удостоверьтесь в том, что «FileZilla server.exe» находится в списке исключений и отметьте соответствующий пункт
  • Нажмите «Ok» для закрытия окна

Это обеспечивает работу пассивного режима. Если после этого вы все равно испытываете проблемы при подключении (внутри или извне сети), проверьте настройки вашего роутера или попробуйте добавить номер порта в настройках Windows Firewall во вкладке «Исключения».

Обратитесь к 931130 KB-статье от Microsoft, описывающей работу FileZilla со включенными сервисами «Маршрутизация и удаленный доступ» или «Шлюз уровня приложения». http://support.microsoft.com/kb/931130

Настройка FTP сервера VSFTPD на Ubuntu

Рассмотрим, как установить и настроить FTP на VPS под управлением ОС Linux-Ubuntu. В качестве FTP-сервера будем использовать «VSFTPD».

Чтобы установить VSFTPD необходимо подключится к VPS по «SSH».

1. Подключаемся к серверу по SSH. В командной строке вводим команду
yum install vsftpd

и ждем окончания проверки зависимостей и репозиториев и и подтверждаем установку вводом y и нажатием «Enter».

2. При появлении  предупреждения о публичном ключе также разрешаем установку вводом y и нажатием «Enter».

3.  Редактируем файл настроек FTP-сервера /etc/vsftpd/vsftpd.conf

В данном примере используется  текстовый редактор «nano», команда:

nano /etc/vsftpd/vsftpd.conf

Выставляем опцию anonymous_enable=NO (запрет на подключение анонимных пользователей), chroot_local_user=YES (запретим выход за пределы домашней директории пользователя), добавляем опцию allow_writeable_chroot=YES (разрешаем подключения пользователю, у которого есть права на запись в корневую директорию), и назначаем порты, которые будут использоваться для пассивного режима подключений:

pasv_min_port=49000

pasv_max_port=55000

Чтобы разрешить только определенным пользователям входить на FTP-сервер, добавьте следующие строки после userlist_enable=YES строки:

userlist_file=/etc/vsftpd/user_list

userlist_deny=NO

Когда эта опция включена, нужно явно указать, какие пользователи могут войти, добавив имена пользователей в /etc/vsftpd/user_list файл (по одному пользователю в строке).

Чтобы  разрешить пользователю входить  за пределы своей корневой директории вставляем опцию chroot_list_file=/etc/vsftpd/chroot_list, в файле /etc/vsftpd/chroot_list будет перечислен список пользователей, которым это разрешено и раскомментируем опцию chroot_list_enable=YES.

Чтобы по FTP отображались файлы, имена которых начинаются с точки, например .htaccess, включаем опцию force_dot_files=YES.

4. Разрешаем автозапуск vsFTPd и запускаем его командами

systemctl enable vsftpd

systemctl start vsftpd

Далее открываем порты в файрволле и также его перезапускаем.

firewall-cmd --permanent --add-port=21/tcp

firewall-cmd --permanent --add-port=49000-55000/tcp

firewall-cmd --reload

5. Добавим пользователей.

Чтобы разрешить доступ пользователю root, внесем его в файлы etc/vsftpd/chroot_list и /etc/vsftpd/user_list

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

echo 'root'> /etc/vsftpd/user_list

echo 'root'> /etc/vsftpd/chroot_list

В файле же /etc/vsftpd/ftpusers строку с root комментируем, поставив в начале символ «#»

6. Добавим теперь нового пользователя с доступом только по FTP

useradd -s /sbin/nologin testuser

passwd testuser

Добавляем нового пользователя в файл /etc/vsftpd/user_list через текстовый редактор или командой

echo 'testuser'>> /etc/vsftpd/user_list

По умолчанию, vsftpd имеет запрет. Стоит запрет на пользователей без к оболочки к файловой системе, поэтому чтобы мы могли подключиться под новым пользователем, нужно в файле /etc/pam.d/vsftpd закомментировать эту строчку: auth required pam_shells.so и перезапустить vsftpd командой systemctl restart vsftpd

7. Теперь мы можем подключится.

Под пользователем root мы имеем доступ ко всей файловой системе, под пользователем testuser — только к его домашней директории

Как установить и настроить FTP-сервер в Ubuntu с помощью VSFTPD

Введение

Если вы хотите установить FTP-сервер в Ubuntu, вы не сможете превзойти простоту vsftpd.

FTP означает протокол передачи файлов. Он похож на HTTP (протокол передачи гипертекста) тем, что определяет язык для передачи данных по сети. FTP по умолчанию не зашифрован, поэтому сам по себе он не является хорошим выбором для безопасной передачи данных.

Это руководство поможет вам установить и настроить FTP-сервер с vsftpd в Ubuntu.

Предварительные условия

  • Доступ к учетной записи пользователя с привилегиями sudo
  • Доступ к окну терминала/командной строке (Ctrl-Alt-T)
  • Менеджер пакетов apt , включенный по умолчанию

Шаг 1 : Update System Packages

Начните с обновления ваших репозиториев — введите в окне терминала следующее:

 sudo apt update 

Система переходит к обновлению репозиториев.

Шаг 2. Установите сервер vsftpd в Ubuntu

Общепринятая утилита FTP с открытым исходным кодом, используемая в Ubuntu, — это vsftpd . Его рекомендуют из-за простоты использования.

1. Чтобы установить vsftpd , введите команду:

 sudo apt install vsftpd 

Это пример вывода в Ubuntu.

2. Чтобы запустить службу и включить ее при запуске, выполните команды:

 sudo systemctl start vsftpd
sudo systemctl включить vsftpd 

Примечание: Инструкция по установке и настройке FTP-сервера с помощью vsftpd также доступна для CentOS 7 и Rasberry Pi.

Шаг 3: Резервное копирование файлов конфигурации

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

1. Создайте резервную копию файла конфигурации по умолчанию, введя следующее:

 sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_default 

Шаг 4. Создайте пользователя FTP

Создайте нового пользователя FTP с следующие команды:

 sudo useradd -m testuser
sudo passwd testuser 

Система должна попросить вас создать пароль для новой учетной записи testuser .

Шаг 5. Настройте брандмауэр для разрешения FTP-трафика

Если вы используете UFW, который входит в стандартную комплектацию Ubuntu, он будет блокировать FTP-трафик по умолчанию. Введите следующие команды, чтобы открыть порты 20 и 21 для FTP-трафика:

 sudo ufw allow 20/tcp
sudo ufw разрешить 21/tcp 

Примечание: Если вы используете другой брандмауэр, обратитесь к инструкциям, чтобы разрешить доступ к порту 20 и порту 21 . Это порты прослушивания для службы FTP.

Шаг 6: Подключитесь к FTP-серверу Ubuntu

Подключитесь к FTP-серверу с помощью следующей команды:

 sudo ftp ubuntu-ftp 

Замените ubuntu-ftp на имя вашей системы (взято из команда линия).

Войдите в систему , используя testuser учетная запись и пароль, которые вы только что установили. Теперь вы должны успешно войти на свой FTP-сервер.

Настройка и защита сервера Ubuntu vsftpd

Изменение каталога по умолчанию

По умолчанию FTP-сервер использует каталог /srv/ftp в качестве каталога по умолчанию. Вы можете изменить это, создав новый каталог и изменив домашний каталог пользователя FTP.

Чтобы изменить домашний каталог FTP, введите следующее:

 sudo mkdir /srv/ftp/new_location
sudo usermod -d /srv/ftp/new_location ftp 

Перезапустите службу vsftpd , чтобы применить изменения:

 sudo systemctl restart vsftpd.service 

Теперь вы можете поместить любые файлы, которыми хотите поделиться через FTP, в папку /srv/ftp (если вы оставили ее по умолчанию) или каталог /srv/ftp/ new_location / (если вы его изменили).

Аутентификация пользователей FTP

Если вы хотите разрешить аутентифицированным пользователям загружать файлы, отредактируйте файл vsftpd. conf , введя следующее:

 sudo nano /etc/vsftpd.conf 

Найдите запись с пометкой write_enable=NO и измените значение на « YES ».

Сохраните файл, выйдите, затем перезапустите службу FTP, выполнив следующую команду:

 sudo systemctl restart vsftpd.service 

Это позволяет пользователю вносить изменения в свой домашний каталог.

Примечание: Чтобы узнать больше об использовании FTP, обратитесь к нашему подробному руководству по команде Linux ftp.

Защита FTP

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

Ограничение доступа пользователей

Одним из способов является ограничение доступа пользователей к их домашнему каталогу. Откройте vsftpd.conf в редакторе и раскомментируйте следующую команду:

 chroot_local_user=YES 

Это пример файла в nano :

Создать файл списка пользователей

Чтобы создать файл списка, отредактируйте /etc/vsftpd. chroot_list и добавьте по одному пользователю в каждой строке.

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

 chroot_local_user=YES
chroot_list_file=/etc/vsftpd.chroot_list 

Изображение иллюстрирует внесенные изменения:

Перезапустите службу vsftpd :

 sudo systemctl restart vsftpd.service 

По умолчанию список заблокированных пользователей от FTP-доступа хранится в /etc/ftpusers . Чтобы добавить заблокированных пользователей, отредактируйте этот файл и добавьте по одному пользователю в каждой строке.

Шифрование трафика с помощью FTPS

Еще один метод защиты вашего FTP-сервера — шифрование трафика. Это делается с помощью FTPS — протокола передачи файлов через SSL (Secure Socket Layer).

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

1. Начните с создания нового сертификата с помощью openssl. Для этого выполните команду:

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

2. Введите необходимую информацию при появлении запроса или оставьте конфигурацию по умолчанию, нажав Введите .

3. Затем откройте файл vsftpd.conf в редакторе и измените строку ssl_enable=NO на ssl_enable=YES :

90 030 ssl_enable=YES

4. Затем добавьте следующие строки:

 rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
allow_anon_ssl = НЕТ
force_local_data_ssl = ДА
force_local_logins_ssl=ДА
ssl_tlsv1 = ДА
ssl_sslv2 = НЕТ
ssl_sslv3 = НЕТ
require_ssl_reuse = НЕТ
ssl_ciphers=ВЫСОКИЙ
pasv_min_port=40000
pasv_max_port=50000 

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

6. Наконец, перезапустите службу, чтобы изменения вступили в силу:

 sudo systemctl restart vsftpd.service 

Примечание: Дополнительные сведения о конфигурациях SSL и сертификатах см. в документации FTP-сервера Ubuntu. Также стоит отметить, что FTPS — это другой протокол, отличный от SFTP. SFTP означает безопасный протокол передачи файлов, и это совершенно другой протокол.

Заключение

Теперь вы должны установить FTP-сервер на Ubuntu с vsftpd .

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

Как настроить и использовать FTP-сервер в Ubuntu Linux

Введение

В этой статье мы покажем вам, как настроить и использовать FTP-сервер в Ubuntu Linux. Мы также рассмотрим некоторые базовые настройки и меры безопасности, чтобы вы могли начать работу.

Обновить системные пакеты

Прежде чем начать, рекомендуется обновить системные пакеты до последней версии. Вы можете сделать это, выполнив следующие команды:

sudo apt-получить обновление
sudo apt-получить обновление
 

Установка сервера vsftpd на Ubuntu

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

sudo apt-get установить vsftpd
 

Резервное копирование файлов конфигурации

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

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
 

Создать пользователя FTP

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

sudo adduser ftpuser
 

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

sudo usermod -a -G ftp ftpuser
 

Настройте брандмауэр для разрешения FTP-трафика

Если на вашем сервере Ubuntu включен брандмауэр, вам необходимо разрешить через него FTP-трафик. Вы можете сделать это, выполнив следующую команду:

sudo ufw разрешить ftp
 

Подключение к FTP-серверу Ubuntu

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

Сначала откройте Filezilla и щелкните значок «Диспетчер сайтов».

Затем нажмите кнопку «Новый сайт» и введите следующую информацию:

  • Хост: введите IP-адрес или имя хоста вашего сервера
  • Порт: введите 21
  • Протокол: выберите «FTP — протокол передачи файлов»
  • Шифрование: выберите «Использовать только обычный FTP (небезопасный)»
  • Тип входа: выберите «Обычный»
  • Пользователь: введите имя пользователя FTP, которое вы создали ранее
  • Пароль: введите пароль пользователя FTP

Теперь нажмите кнопку «Подключиться», и вы должны быть подключены к вашему FTP-серверу.

Как подключиться к FTP-серверу через командную строку

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

FTP имя хоста
 

Вам будет предложено ввести пароль пользователя FTP. Как только вы войдете в систему, вы окажетесь в приглашении FTP, где вы можете вводить различные команды. Введите help , чтобы просмотреть список доступных команд.

Как подключиться к FTP-серверу через графический интерфейс

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

Чтобы подключиться с помощью Filezilla, откройте программу и щелкните значок «Менеджер сайтов».

Затем нажмите кнопку «Новый сайт» и введите следующую информацию:

  • Хост: введите IP-адрес или имя хоста вашего сервера
  • Порт: введите 21
  • Протокол: выберите «FTP — протокол передачи файлов»
  • Шифрование: выберите «Использовать только обычный FTP (небезопасный)»
  • Тип входа: выберите «Обычный»
  • Пользователь: введите имя пользователя FTP, которое вы создали ранее
  • Пароль: введите пароль пользователя FTP

Теперь нажмите кнопку «Подключиться», и вы должны быть подключены к вашему FTP-серверу.

Чтобы подключиться с помощью Nautilus, откройте программу и щелкните меню «Файл», затем выберите «Подключиться к серверу».

В поле «Адрес сервера» введите следующую информацию:

  • Тип службы: Выберите «FTP»
  • Сервер: введите IP-адрес или имя хоста вашего сервера
  • .

  • Порт: введите 21
  • Имя пользователя: введите имя пользователя FTP, которое вы создали ранее
  • Пароль: введите пароль пользователя FTP

Теперь нажмите кнопку «Подключиться», и вы должны быть подключены к вашему FTP-серверу.

Настройка и защита сервера Ubuntu vsftpd

Теперь, когда у вас есть базовый FTP-сервер, давайте рассмотрим некоторые доступные параметры конфигурации.

Изменить каталог по умолчанию

По умолчанию сервер vsftpd изменит ваш каталог на /var/ftp каталог при входе в систему. Если вы хотите изменить это, вы можете отредактировать файл /etc/vsftpd.conf и изменить следующую строку:

#chroot_local_user=ДА
 

до

chroot_local_user = ДА
 

Вам также потребуется создать новый каталог, который вы хотите использовать. Например, если вы хотите использовать каталог /home/ftpuser , вы можете сделать это, выполнив следующую команду:

sudo mkdir /home/ftpuser
 

Аутентификация пользователей FTP

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

#anon_upload_enable=ДА
 

до

anon_upload_enable=НЕТ
 

Вам также потребуется раскомментировать следующую строку:

#local_enable=ДА
 

Как настроить анонимный вход на FTP

Если вы хотите разрешить анонимный FTP-вход, вы можете отредактировать файл /etc/vsftpd.conf и изменить следующую строку:

#anon_upload_enable=ДА
 

до

anon_upload_enable=ДА
 

Вам также потребуется раскомментировать следующую строку:

#anon_mkdir_write_enable=ДА
 

Как изменить порт прослушивания FTP по умолчанию

По умолчанию сервер vsftpd прослушивает порт 21 для FTP-трафика. Если вы хотите изменить это, вы можете отредактировать /etc/vsftpd.conf и измените следующую строку:

#слушать=ДА
 

до

слушать = НЕТ
 

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

#listen_port=
 

Защита FTP

Одной из самых важных вещей, которую вы можете сделать для защиты своего FTP-сервера, является шифрование трафика. Вы можете сделать это с помощью SSL/TLS. Для этого вам необходимо сгенерировать самоподписанный SSL-сертификат, выполнив следующую команду:

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

Вам будет предложено ввести некоторую информацию о вашем сертификате. После создания сертификата необходимо отредактировать файл /etc/vsftpd.conf и изменить следующие строки:

#ssl_enable=НЕТ
#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil. pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
 

до

ssl_enable = ДА
rsa_cert_file=/etc/ssl/частный/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
 

Вам также потребуется раскомментировать следующую строку:

#force_local_data_ssl=ДА
 

Ограничение доступа пользователей

Если вы хотите ограничить доступ пользователей к вашему FTP-серверу, вы можете создать файл со списком пользователей. Для этого нужно отредактировать файл /etc/vsftpd.conf и изменить следующую строчку:

#userlist_deny=НЕТ
 

до

userlist_deny = ДА
 

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

#userlist_file=/etc/vsftpd.userlist
 

Файл списка пользователей представляет собой простой текстовый файл, содержащий список пользователей FTP, по одному в каждой строке. Вы можете создать этот файл, выполнив следующую команду:

судо нано /etc/vsftpd.userlist
 

Добавьте в файл следующую строку:

ftpuser
 

Сохраните файл и выйдите.

Шифровать трафик с помощью FTPS

Если вы хотите зашифровать трафик между вашим FTP-сервером и клиентом, вы можете использовать FTPS. Для этого нужно отредактировать файл /etc/vsftpd.conf и изменить следующие строки:

#ssl_enable=НЕТ
#allow_anon_ssl=НЕТ
#force_local_data_ssl=НЕТ
#force_local_logins_ssl=НЕТ
 

до

ssl_enable = ДА
allow_anon_ssl = НЕТ
force_local_data_ssl = ДА
force_local_logins_ssl=ДА
 

Вам также потребуется раскомментировать следующую строку:

#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
 

Устранение неполадок Ошибка FTP-соединения «отказ в соединении»

Если у вас возникли проблемы с подключением к FTP-серверу, вы можете увидеть ошибку «Отказ в соединении».