FTP — для всех и «для себя любимого»…

Мне уже очень давно хотелось такие обыденные вещи для web-разработчика, как удаленное подключение к VPS -серверу через SSH и FTP , перестроить в автоматический режим. Согласитесь, что использовать любые прослойки в виде ftp- или ssh- клиентов, когда ты пользуешься Linux – бред. Все можно организовать намного проще и прозрачнее.

Процесс подключения

  1. В операционных система семейства Debian устанавливаем эту програмульку вот так:

    sudo apt-get install curlftpfs

  2. Создаем директорию в которую будем подключать наш ftp-сервер:

    mkdir ~/ftp Мне проще работать с директорией, которая расположена в пользовательском окружении, поэтому я выбрал ~/ftp.

  3. Для того, чтобы команду на подключение выполнять без sudo и ввода пароля суперпользователя, нужно добавить вашего пользователя в группу fuse и отредактировать права:

    sudo adduser имя_пользователя fuse где имя_пользователя – это соответственно имя вашего пользователя.

    sudo chgrp fuse ~/ftp

  4. И команда непосредственного монтирования ftp-сервера:

    curlftpfs ftp://[пользователь]:[пароль]@ip_сервера ~/ftp

Вот на первый взгляд простой способ сделать работу web-разработчика еще проще и удобнее.

Теги: ftp и сервер

*Простой FTP-сервер на базе Ubuntu.

Время от времени у каждого системного администратора возникает потребность в FTP-сервере, чаще всего это связано с необходимостью обеспечить обмен информацией в автоматическом режиме между приложениями, например при автообмене распределенной информационной базы 1С, или для доступа к файлам на веб-сервере. Сегодня мы расскажем, как меньше чем за 10 минут создать такой сервер на платформе Ubuntu. Но сначала немного теории. Протокол FTP (File Transfer Protocol) предназначен, как следует из названия, для передачи файлов и появился в 1971 году, но несмотря на свой преклонный возраст продолжает широко использоваться до сих пор. Хотя сегодня его использование носит чаще технический характер, для доступа конечных пользователей к данным обычно используют браузер и протокол HTTP. К достоинствам FTP можно отнести возможность докачки файла при обрыве связи и возможность одинаково легко как считывать файлы, так и записывать их. Но есть и недостатки, самый серьезный — низкая безопасность, поэтому этому вопросу следует уделить самое пристальное внимание.

FTP, как и PPTP, использует разные соединения для передачи команд и передачи данных. При инициации соединения клиент передает управляющие команды на порт 21 сервера, который в свою очередь устанавливает исходящее соединение для передачи данных на 20 порту, порт со стороны клиента определяется в результате согласования. Однако при нахождении клиента за NAT соединение подобным образом установить не удастся, поэтому был разработан дополнительный режим FTP passive mode (пассивный режим), когда соединение для передачи данных устанавливает не сервер, а клиент, однако с параметрами указанными сервером. Эти моменты следует учитывать при форвардинге FTP и при настройке сетевого фильтра.

Для нашего сервера мы будем использовать vsftpd — простой, быстрый и безопасный FTP сервер. Так как он будет обслуживать как внешнюю, так и внутреннюю сети, то имеет смысл добавить эту роль нашему роутеру. Установка сервера предельно проста:

sudo apt-get install vsftpd

Настройка сервера производится через конфигурационный файл /etc/ он имеет простую структуру и позволяет настроить сервер без какой либо инструкции при наличии минимальных знаний. Рассмотрим его основные параметры.

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

listen=YES

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

anonymous_enable=NO local_enable=YES

Разрешим пользователям записывать файлы и укажем серверу автоматически выставлять нужные права (755 на папки и 644 на файлы):

write_enable=YES local_umask=022

По умолчанию сервер использует время GMT, чтобы файлам устанавливалось время вашего часового пояса используйте опцию:

use_localtime=YES

Включим лог загружаемых и скачиваемых файлов:

xferlog_enable=YES

В целях безопасности разрешим серверу устанавливать соединения для передачи данных только на порт 20:

connect_from_port_20=YES

Зададим таймаут неактивной сессии:

idle_session_timeout=600

Также в целях безопасности изолируем пользователя в его домашнем каталоге:

chroot_local_user=YES

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

ftpd_banner=Welcome to Roga i Kopyta LLC FTP

Перезапускаем сервер:

sudo service vsftpd restart

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

Как видим, мы действительно создали рабочий FTP-сервер менее чем за 10 минут.

  • < Назад
  • Вперёд >

Настройка

Начать нам придется с настройки не самого ProFTP, а с файервола. Если на компьютере, на котором Вы установили и запустили ProFTP, он (файервол) включен, то в нем потребуется открыть порт, используемый для FTP. Обычно это 21-й порт. При желании, Вы сможете настроить ProFTP-сервер на использование порта с другим номером (об этом ниже). В таком случае, в файерволе нужно будет открыть тот порт, который Вы использовали для FTP. О том, каким образом в Mandriva Linux можно открыть порты в файерволе, я уже писал тут.

Теперь о настройке собственно ProFTP. Сразу же после установки сервер ProFTP сконфигурирован в некоем «умолчательном» варианте и уже запущен. Если Вы установили только сам ProFTP (с неким набором модулей, идущим в «комплекте по умолчанию»), и не устанавливали никаких дополнительных пакетов с модулями для ProFTP, то вся настройка сервера осуществляется в единственном файле — /etc/. По этому, именно его мы и открываем в (любом) текстовом редакторе.

Находим в указанном файле первый интересующий нас параметр — имя сервера. Он задан вот такой строкой:

ServerName «ProFTPD Default Installation»

Как по мне — не самый важный параметр. Но тем не менее — Вы можете для своего сервера ввести то имя, которое Вам нравится. Находим следующий параметр, который можно изменить «на свой вкус и цвет». Это упоминавшийся ранее номер порта:

Port 21

Менять его или нет — решать Вам. Если Вы планируете создать у себя публичный FTP-сервер, то однозначно не стоит. Потому как, по умолчанию, когда кто-то в своем браузере набирает «ftp://», то запрос пойдет именно на 21-й порт указанного сервера. С другой стороны, Вы можете использовать ProFTP только для «личных нужд». В этом случае, можно уйти со стандартных номеров портов, которые в первую очередь сканируются злоумышленникам и при попытке взлома…

Еще пара «глобальных» параметров сервера:

User nobody Group nogroup

Они задают пользователя и группу, от имени которых запущен сервер. Этот «бесправный» (в прямом смысле слова) пользователь «автоматом» создается для нужд ProFTP. В данном случае, на мой взгляд, ничего менять не нужно.

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

UseReverseDNS off

Причину этого действия я уже описал у себя в блоге ранее. Дело в том, что если значение параметра установлено в «on«, ProFTP для нужд ведения своего лога (журнала работы) выполняет DNS-запрос имени компьютера, пытающегося к нему подключиться. В случае неудачи (а такое случается, например, в описанном мной случае — из-за кривизны настройки у провайдера «домашней сети») удаленный компьютер подключиться не сможет. С другой стороны, если данный параметр выключен («off«), то в лог пишется просто IP-адрес удаленного компьютера. На мой взгляд, этого вполне достаточно.

Таким образом, подводя итог всего сказанного выше, получается, что их всех настроек, изначально присутствовавших в файле /etc/ (по умолчанию), я изменил всего лишь одну — отключил запрос имен компьютеров, подключающихся к моему FTP-серверу. На этом, с «глобальными» настройками я покончил.

Есть еще одна вещь, которую нужно сделать. Необходимо в текстовом редакторе (от имени «root-а») открыть файл /etc/shells и добавить в него такую строку:

/bin/false

Этим мы добавляем «пустую» командную оболочку. Она потребуется нам при создании пользователей, которым мы предоставим возможность записи файлов на наш FTP-сервер. В итоге, этим «избранным» пользователям в нашем сервере будут доступны только команды протокола FTP, и ничего более. Безопасность, однако…

И вот теперь мы будем настраивать ресурсы, к которым предполагается предоставлять доступ. Начнем с тех, которые…

Углубленная настройка FileZilla Server — пользователи, приветстве и прочее

В следующем подпункте можно настроить приветственное сообщение, которое будут видеть пользователи при подключении. Например: “Сервер Заметок Сис. Админа на FileZilla Server! 🙂”. Здесь же можно воспользоваться, так называемыми, текстовыми параметрами. Например, можно задать вывод для клиентов версии ftp-сервера. Для этого введите, помимо приветствия, сочетание символов %v . В месте где Вы их введете, будет автоматически выводится вышеупомянутая версия.

Углубленная настройка FileZilla Server - пользователи, приветстве и прочее

Далее переходим на подпункт “IP bindings”. Здесь настраиваются IP-адреса, по которым будет доступен наш FTP сервер. Если Вам хочется, чтобы сервер был доступен только из локальной сети, то вместо звёздочки, следует указать ваш локальный IP-адрес, как например, . В противном случае, здесь трогать ничего не стоит.

В подпункте “IP Filter” можно задать IP адреса (или их диапазон), которым будет запрещено подключаться к Вашему серверу, а так же задать исключения из заданного диапазона (второе поле).

Углубленная настройка FileZilla Server - пользователи, приветстве и прочее

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

Вкладка “Passive mode settings” регламентирует параметры для пассивного подключения к серверу и отклик оного.

Углубленная настройка FileZilla Server - пользователи, приветстве и прочее

Менять здесь что-либо стоит только в том случае, если Вы подключены к интернету не напрямую, а через роутер, на котором обитает фаерволл и NAT. В этом случае может потребоваться указать в поле «Use the following IP» свой внешний IP-адрес (можно узнать у провайдера или в интерфейсе роутера), а так же задать диапазон портов (Use custom port range), через которые клиент сможет подключаться к Вашему серверу в пассивном режиме.

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

Углубленная настройка FileZilla Server - пользователи, приветстве и прочее

Идем далее. В пункте настроек “Security Settings” задаются ограничения на входящие и исходящие соединения типа “сервер-сервер”. Здесь ничего менять не стоит.

Раздел настроек “Miscellaneous” содержат малозначительные для домашнего фтп-сервера настройки. Например, такие как “Не показывать пароль в лог-файлах” (Don’t show passwords in message log), “Запускать интерфейс свернутым” (Start minimized), а так же размеры буферов передачи. Трогать здесь, в общем-то, ничего не нужно.

Углубленная настройка FileZilla Server - пользователи, приветстве и прочее

На вкладке “Admin Interface Settings” можно задать IP-адрес и порт, по которым будет доступен интерфейс управления сервером (тот самый, что мы вначале использовали как 127.0.0.1 и 14147, т.е, если есть желание, то Вы можете их сменить). Кроме того, можно указать IP-адреса, которым разрешено подключаться к нему.

Раздел настроек “Logging” позволяет включать запись лог-файлов (Enable logging to file), настроить их максимальный размер (Limit log file size to), писать все в один файл (Log all to «FileZilla «) или для каждого дня создавать отдельный (в этом случае можно ограничить их максимальный срок хранения).

Углубленная настройка FileZilla Server - пользователи, приветстве и прочее

Вкладка “GSS Settings” отвечает за использования протокола Kerberos GSS. Для обычного использования эта опция не требует настройки.

Настраиваем сервер

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

Для изменения настроек необходимо войти в файл конфигурации, найти строку Anonymous_enable, затем изменить значение на «NO». Это гарантирует защиту сервера от доступа незарегистрированных лиц. 

Следующий шаг – изменение значения local_enable. Необходимо удалить знак # и установить «YES». После чего поменять «NO» на «YES» в строке write_enable. Это позволит открыть доступ в директорию пользователям для внесения записей.

Далее производится раскомментирование опции chroot_local_user (снятие знака #). Установление значения «YES» ограничивает права пользователей chroot, таким образом, они ограничены в правах и остальные части сервера будут для них недоступны. Прежде чем покинуть файл конфигурации, нужно сохранить произведенные изменения.

Важно: чтобы при запуске последних версий сервера не возникало ошибок из-за того, что пользователи работают не из-под root, можно применить следующие меры:

  • Создание нового локального пользователя (##username## — впоследствии везде меняется на имя локального пользователя);
  • Предоставить ему права администратора;
  • Создание новой папки внутри домашней директории пользователя

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

  • В папке /home добавить папку локального пользователя, перейти внутрь, там добавить папку files;
  • Заменить имя владельца папки на ##username##;
  • Внести изменения внутри «files». Закончив работы перезапустить сервер.

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

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

Наконец, необходимо проверить установленные настройки.

Читайте также:  Как сделать джейлбрейк iOS 12 на iOS 12.4 на вашем iPhone