Что такое ftp и как с ним работать в клиенте filezilla

Введение

В этом руководстве вы узнаете, как произвести настройку FTP-клиента FileZilla. Закончив данное руководство, вы сможете подключиться к вашему FTP серверу для управления своими файлами. Настройка FileZilla не займёт у вас много времени. Однако не только при помощи FTP можно управлять файлами на Hostinger. Вы также можете использовать ‘drag and drop’ Файловый Менеджер (с удобным перетаскиванием мышью). Многие пользователи находят Файловый Менеджер более удобным в сравнении с FTP:

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

FileZilla-клиент завоевал свою популярность благодаря простоте и лёгкости использования для обычного пользователя. Он поддерживает множество операционных систем, таких как Windows, Linux, Mac OS X, BSD, а настройка FileZilla не займёт и пяти минут. Он переведён на больше количество языков и имеет множество полезных функций.

Утилита Iptables

Подсистема iptables и netfilter встроены в ядро, но вот набор утилит для управления всем этим не всегда поставляется вместе с системой. Для установки утилиты в Ubuntu наберите:

А в дистрибутивах, основанных на Fedora, установка iptables выполняется немного по-другому:

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

$ iptables -t таблица действие цепочка дополнительные_параметры

Теперь давайте рассмотрим параметры iptables, таблица указывает таблицу, с которой нужно работать, этот параметр можно упустить, действие — нужное действие, например, создать или удалить правило, а дополнительные параметры описывают действие и правило, которое нужно выполнить.

Осталось рассмотреть основные действия, которые позволяет выполнить iptables:

  • -A — добавить правило в цепочку;
  • -С — проверить все правила;
  • -D — удалить правило;
  • -I — вставить правило с нужным номером;
  • -L — вывести все правила в текущей цепочке;
  • -S — вывести все правила;
  • -F — очистить все правила;
  • -N — создать цепочку;
  • -X — удалить цепочку;
  • -P — установить действие по умолчанию.

Дополнительные опции для правил:

  • -p — указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp,
    mh;
  • -s — указать ip адрес устройства-отправителя пакета;
  • -d — указать ip адрес получателя;
  • -i — входной сетевой интерфейс;
  • -o — исходящий сетевой интерфейс;
  • -j — выбрать действие, если правило подошло.

Теперь вы можем перейти рассмотрению примеров того как выполняется настройка iptables.

Видео

Онлайн курс «SRE практики и инструменты»

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «SRE практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и Linux. Обучение длится 3 месяц, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

На курсе вы узнаете как:

  • Внедрить SRE практики в своей организации
  • Управлять надежностью, доступностью и эффективностью сервисов
  • Управлять изменениями
  • Осуществлять мониторинг
  • Реагировать на инциденты и производительность
  • Работать со следующим технологическим стеком: Linux, AWS, GCP, Kubernetes, Ansible, Terraform, Prometheus, Go, Python.

Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Показать статус.

Примерный вывод команды для неактивного файрвола:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Для активного файрвола:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID
  394 43586 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
   93 17292 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0
    1   142 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  br0    br0     0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID
    0     0 TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 TCPMSS clamp to PMTU
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 wanin      all  --  vlan2  *       0.0.0.0/0            0.0.0.0/0
    0     0 wanout     all  --  *      vlan2   0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT 425 packets, 113K bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain wanin (1 references)
 pkts bytes target     prot opt in     out     source               destination
Chain wanout (1 references)
 pkts bytes target     prot opt in     out     source               destination

Где:
-L : Показать список правил.
-v : Отображать дополнительную информацию. Эта опция показывает имя интерфейса, опции, TOS маски. Также отображает суффиксы ‘K’, ‘M’ or ‘G’.
-n : Отображать IP адрес и порт числами (не используя DNS сервера для определения имен. Это ускорит отображение).

Ubuntu и CentOS

В современных операционных системах Ubuntu и CentOS по умолчанию нет iptables. Необходимо его установить или пользоваться более новыми утилитами.

В CentOS

В качестве штатной программы управления брандмауэром используется firewall-cmd. Подробнее читайте инструкцию Как настроить firewalld в CentOS.

Если необходимо пользоваться iptables, устанавливаем пакет с утилитой:

yum install iptables-services

Отключаем firewalld:

systemctl stop firewalld

systemctl disable firewalld 

Разрешаем и запускаем iptables:

systemctl enable iptables

systemctl start iptables

В Ubuntu

Для управления брандмауэром теперь используется ufw.

Для работы с iptables, устанавливаем следующий пакет:

apt-get install iptables-persistent

Отключаем ufw:

ufw disable

Типы цепочек

Существует три типа цепочек iptables — input, forward и output.

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

Цепочка — это упорядоченная последовательность правил. Правило содержит в себе критерий (например, IP-адрес источника пакета) и действие, которое нужно применить к пакету с этим критерием (например, «заблокировать»). Если критерий отсутствует, правило применяется ко всем пакетам.

При определении, что нужно сделать с пакетом, iptables просматривает соответствующую цепочку с начала списка, перебирая правила, пока не найдет совпадение. Если совпадение не найдено (соединение не попадает ни под одно созданное правило), применяется правило по умолчанию. 

При настройке правил iptables помните, что для многих портов при передаче данных требуется не только отправить запрос, но и получить на него ответ. Также будьте внимательны, чтобы случайно не запретить доступ для себя — удаленное подключение к серверу по SSH тоже является входящим соединением.

Что такое активный и пассивный режим, и как они связаны с портами

Дело в том, что есть два варианта развития сценария взаимодействия клиента с сервером. Первый вариант — это когда программа назначает порт, по которому ей удобно пользоваться. То есть на сервере установлен определенный номер порта, и система с этим соглашается, освобождая его. А второй вариант — это когда операционная система сама подбирает для программы порт для выхода в сеть.

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

Но дело в том, что в протоколе FTP есть два типа соединения:

  1. Управляющее.
  2. Соединение для передачи данных.

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

Подключаем флешку к роутеру TP-LINK и настраиваем FTP-сервер

Показывать я буду на примере роутера TP-LINK Archer C20i. Подключил я к нему обычную флешку. Вы так же подключите свой накопитель в USB-разъем маршрутизатора. У меня получилось вот так:

Роутер должен быть включен. И устройство, с которого вы будете настраивать, должно быть подключено к роутеру по Wi-Fi, или по сетевому кабелю.

Дальше открываем любой браузер, и переходим по адресу tplinklogin.net, 192.168.1.1, или 192.168.0.1. Точный адрес указан на наклейке снизу маршрутизатора. На странице авторизации указываем имя пользователя и пароль. Если вы их не меняли, то это admin и admin. Если не получается, то смотрите подробную инструкцию.

Перейдите сразу на вкладку «USB Settings» (Настройки USB) – «USB Mass Storage» (USB-хранилище). На этой странице будет отображаться USB накопитель, который мы подключили к маршрутизатору.

Убедились, что накопитель есть и он работает. Дальше я советовал бы отключить совместный доступ к этому накопителю, так как он по умолчанию почему-то включен. Что бы он не отображался на устройствах в локальной сети. А использовался только для FTP сервера. Для этого откройте вкладку «Storage Sharing» (Совместный доступ), и нажмите на кнопку «Disable» (Отключить).

Переходим на вкладку «FTP Server». Он должен быть включен, в статусе «Enabled». По умолчанию он у меня был включен.

По умолчанию, уже создан каталог «volume» с доступом ко всему накопителю. И с правами администратора. Сейчас объясню. Сам сервер уже работает, и к нему можно получить доступ. По умолчанию, доступ настроен ко всему накопителю. И с правами администратора «Super User». Права администратора дают полный доступ к файлам на накопителе. В том числе, на их изменение.

Это значит, что мы уже можем получить доступ к FTP серверу с любого устройства, которое подключено к нашему роутеру. Для этого, на вкладке «USB Settings»– «FTP Server», справа (где инструкция), скопируйте ftp адрес (или просто запомните, он нам понадобится):

Для получения доступа, нам нужно будет указать имя пользователя и пароль. Это те же данные, которые мы указывали при входе в настройки маршрутизатора (заводские – admin и admin).

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

А если вам нужно настроить доступ только к какой-то конкретной папке, и создать других пользователей (с разными правами доступа), то я расскажу как это сделать в конце этой статьи.

Еще один важный момент: как я уже писал выше, по умолчанию, доступ к запущенному на роутере TP-LINK FTP серверу предоставляется с правами администратора. Под именем пользователя и паролем администратора. Если вы не сменили стандартный пароль admin, который используется для входа в настройки роутера, то я настоятельно рекомендую это сделать. Так как этот пароль и стандартное имя пользователя (которое так же admin) будет использоваться для подключения к FTP серверу. Я уже писал, о том как сменить заводской пароль роутера. На TP-LINK, это делается на вкладке «System Tools» (Системные инструменты) – «Password» (Пароль).

Как подключиться

Существует несколько способов подключения к FTP. Рассмотрим основные из них.

Через проводник Windows

Чтобы подключиться к FTP серверу через проводник, выполните следующие операции:

  • Откройте проводник и кликните правой кнопкой мыши по строке «Компьютер» и выберите «Добавить новый элемент в сетевое окружение».
  • Когда появится новое окно, просто нажмите «Далее».
  • Кликните по надписи: «Выберите другое сетевое размещение».
  • Введите адрес подключения.
  • Введите логин пользователя, если он есть. Или оставьте все, как есть, если вы подключаетесь как анонимный пользователь;
  • Задайте имя соединения (может быть любым), оно будет отображаться в проводнике.
  • В следующем окне нужно нажать кнопку «Готово». Чтобы сразу подключиться к FTP, поставьте галочку в поле «Открыть это сетевое размещение».

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

Через любой браузер

Ещё проще зайти на FTP сервер с помощью браузера. Для этого в адресную строку вводим адрес хоста и нажимаем кнопку «Enter».

С помощью Filezilla

Самым популярным и востребованным FTP-клиентом является FileZilla. Он полностью бесплатный и простой в использовании. С официального сайта можно скачать версии для виндовс, начиная с 7 версии, и для Linux.

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

  • Хост. IP сервера FTP, к которому вы хотите подключиться.
  • Имя пользователя. Это логин, который был предоставлен вам при регистрации. Если доступ публичный, то это поле можно оставить пустым.
  • Пароль. При использовании публичного доступа ничего вводить не требуется.
  • Порт. Оставьте это поле пустым или введите порт по умолчанию – 21.

После того, как вы нажмёте кнопку «Быстрое соединение», подключение установится и вы сможете работать с файлами.

Для этого заходим в меню «Файл» выбираем «Менеджер сайтов» и нажимаем «Новый сайт». После этого вводим имя или IP-адрес хоста и порт, выбираем тип входа: анонимный, нормальный или другой. Если вы выбрали анонимный, то больше ничего вводить не нужно, а если нормальный, то потребуется ввести логин и пароль.

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

Статья помогла3Не помогла6

Автозагрузка правил iptables

1. Загрузка правил с помощью скрипта

Сохраненные правила с помощью утилиты iptables-save можно восстанавливать с помощью скрипта, запускаемого при каждом запуске операционной системы. Для этого необходимо выполнить следующие действия:

Сохранить набор правил межсетевого экрана с помощью команды:

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

Заметим — в сети есть много вариантов места размещения скрипта на локальной машине, но я считаю именно размещение в папке if-pre-up.d наиболее верным, так как при этом скрипт будет выполнятся перед включением сетевого интерфейса. Добавляем в данный файл следующий скрипт:

Сохраняем файл iptables Ctrl+O. Выходим из editor Ctrl+X. Устанавливаем необходимые права для созданного файла:

Перезагружаем компьютер и проверяем результат для таблицы filter с помощью команды:

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

2. Автозагрузка правил iptables-persistent

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

Этот пакет впервые стал доступен в Debian (Squeeze) и Ubuntu (Lucid). Используемые этим пакетом правила iptables хранятся в следующих директориях:

  • /etc/iptables/rules.v4 для набора правил протокола IPv4;
  • /etc/iptables/rules.v6 для набора правил протокола IPv6.

Но они должны быть сохранены в понятном утилите iptables-persistent виде.

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

Или можно использовать iptables-save и ip6tables-save:

Утилита netfilter-persistent тоже позволяет управлять автозагрузкой правил. Вот её синтаксис:

sudo netfilter-persistent

Где может принимать следующие значения:

  • start — вызывает все плагины с параметром start, для загрузки правил в netfilter;
  • stop — если настроена конфигурация сброса настроек Netfilter при остановке плагина, сбрасывает все настройки firewall на значения по умолчанию. Иначе просто выдает предупреждение;
  • flush — плагины вызываются с параметром flush, что приводит к сбросу правил межсетевого экрана на значения по умолчанию;
  • save — вызывает плагины с параметром save, позволяя сохранить значения правил брандмауэра в файлы на диске;
  • reload — не задокументированный параметр, возникали случаи когда параметр start не срабатывал, помогал вызов этого параметра для загрузки правил из файла на диске;

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

Для загрузки же сохраненных правил мы можем использовать команду:

Замечание После установки netfilter-persistent система при использовании iptables и формата хранения файлов, связанного с ним, начинает при работе выдавать предупреждение

Это связано с наличием новой утилиты настройки и редактирования правил Netfilter — nftables, для миграцию на эту утилиту старых правил iptables можно использовать автоматический транслятор правил iptables-translate. Но это уже тема для отдельной статьи.

Как сохранить правила iptables?

Debian 7 / Wheezy

Устанавливаем пакет iptables-persistent

# apt-get install iptables-persistent

Сохраняем текущие правила iptables

# /etc/init.d/iptables-persistent save

Добавляем в автозагрузку

# update-rc.d iptables-persistent defaults

Debian 8 / Jessie

Устанавливаем пакет netfilter-persistent

# apt-get install netfilter-persistent iptables-persistent

Сохраняем текущие правила iptables

# netfilter-persistent save

Добавляем в автозагрузку

# systemctl enable netfilter-persisten

В некоторых случаях может появиться следующая ошибка при установке пакета netfilter-persistent

root@localhost:~# apt-get install iptables-persistent
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  netfilter-persistent
The following NEW packages will be installed:
  iptables-persistent netfilter-persistent
  
---cut---

update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
A dependency job for netfilter-persistent.service failed. See 'journalctl -xn' for details.
invoke-rc.d: initscript netfilter-persistent, action "start" failed.
dpkg: error processing package netfilter-persistent (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of iptables-persistent:
 iptables-persistent depends on netfilter-persistent (= 1.0.3); however:
  Package netfilter-persistent is not configured yet.

dpkg: error processing package iptables-persistent (--configure):
 dependency problems - leaving unconfigured
Processing triggers for systemd (215-17+deb8u3) ...
Errors were encountered while processing:
 netfilter-persistent
 iptables-persistent
E: Sub-process /usr/bin/dpkg returned an error code (1)

Workaround — закомментировать в /etc/modules строку acpiphp и перезагрузить машину.

root@localhost:~# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

loop
# acpiphp

Отобразить список правил с номерами строк

# iptables -n -L -v --line-numbers

Примерный вывод:

Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
Chain FORWARD (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID
3    TCPMSS     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 TCPMSS clamp to PMTU
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
5    wanin      all  --  0.0.0.0/0            0.0.0.0/0
6    wanout     all  --  0.0.0.0/0            0.0.0.0/0
7    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
Chain wanin (1 references)
num  target     prot opt source               destination
Chain wanout (1 references)
num  target     prot opt source               destination

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

Как настроить несколько учетных записей FTP в Windows 10

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

Этот процесс выполняется путем создания новых стандартных учетных записей Windows 10 и настройки правильных настроек.

Создание новых учетных записей пользователей

Чтобы добавить несколько учетных записей на FTP-сервер, выполните следующие действия:

  1. Откройте Настройки .
  2. Нажмите на учетные записи .
  3. Нажмите на семью и других людей .
  4. Нажмите кнопку Добавить кого-то еще на этот компьютер .

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

    Совет. Если вы хотите, чтобы пользователи обращались к серверу с использованием локальных учетных записей , выберите параметр « У меня нет данных для входа в систему» , нажмите « Добавить пользователя без учетной записи Microsoft» и следуйте инструкциям на экране, чтобы создать учетную запись.

  6. Нажмите кнопку Далее .

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

Настройка учетных записей пользователей на FTP-сервер

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

  1. Откройте панель управления .
  2. Нажмите на систему и безопасность .
  3. Нажмите на Администрирование .

  4. Дважды щелкните ярлык диспетчера служб IIS .

  5. На левой панели разверните «Сайты» и выберите сайт, который вы создали ранее.
  6. Дважды щелкните параметр « Правила авторизации FTP» .

  7. На правой панели выберите опцию Добавить разрешающее правило .

  8. Выберите один из этих двух вариантов:

    • Все пользователи: разрешает каждому пользователю, настроенному на вашем устройстве Windows 10, доступ к FTP-серверу.
    • Указанные пользователи: вы можете использовать эту опцию, чтобы указать всех пользователей, которым вы хотите получить доступ к FTP-серверу. (Вы должны разделять каждого пользователя запятой.)
  9. Проверьте параметры чтения и записи .

  10. Нажмите кнопку ОК .

После выполнения этих шагов все указанные вами пользователи должны иметь доступ к FTP-серверу для удаленной загрузки и выгрузки файлов.

Регистрация нового соединения в панели хостинга

Я не могу показать все панели, и указать где находится настройка, но задача показать общий принцип работы. В панели Beget заходим в раздел FTP.

Откроется страница со всеми доступными прилинкованными доменами. Нажимаем на зеленый плюс напротив сайта, к которому желаем сделать удаленное соединение FTP.

Прилинкованный домен – это домен к которому прикреплена папка на хостинге.

Появится всплывающее окно, заполняем поля логин пароль. Обязательно запишите данные куда–нибудь, они нам пригодятся, нажимаем Добавить.

Слева есть адрес сервера, копируем его и записываем в тот же файл где логин с паролем.

FTP — основные команды

Опубликовано muff в Пт, 2010-09-17 18:51

FTP (File Transfer Protocol) — протокол передачи файлов). Для начала — короткий экскурс в историю…

FTP является одним из старейших прикладных протоколов, появившимся задолго до HTTP, в 1971 году. До начала 90-х годов на долю FTP приходилось около половины трафика в сети Интернет. Он и сегодня широко используется для распространения ПО и доступа к удалённым хостам.

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

Основные команды:

  • ABOR — Прервать передачу файла
  • CDUP — Сменить директорию на вышестоящую.
  • CWD — Сменить директорию.
  • DELE — Удалить файл (DELE filename).
  • HELP — Выводит список команд принимаемых сервером.
  • LIST — Возвращает список файлов директории. Список передается через соединение данных (20 порт).
  • MDTM — Возвращает время модификации файла.
  • MKD — Создать директорию.
  • NLST — Возвращает список файлов директории в более кратком формате чем LIST. Список передается через соединение данных (20 порт).
  • NOOP — Пустая операция
  • PASV — Войти в пассивный режим. Сервер вернет адрес и порт к которому нужно подключиться чтобы забрать данные. Передача начнется при введении следующих команд RETR, LIST и тд.
  • PORT — Войти в активный режим. Например PORT 12,34,45,56,78,89. В отличие от пассивного режима для передачи данных сервер сам подключается к клиенту.
  • PWD — Возвращает текущую директорию.
  • QUIT — Отключиться
  • REIN — Реинициализировать подключение
  • RETR — Скачать файл. Перед RETR должна быть команда PASV или PORT.
  • RMD — Удалить директорию
  • RNFR и RNTO — Переименовать файл. RNFR — что переименовывать, RNTO — во что.
  • SIZE — Возвращает размер файла
  • STOR — Закачать файл. Перед STOR должна быть команда PASV или PORT.
  • SYST — Возвращает тип системы(UNIX, WIN, …)
  • TYPE — Установить тип передачи файла(Бинарный, текстовый)
  • USER — Имя пользователя для входа на сервер
     

Пример FTP-сессии:

# telnet localhost 21
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 FTP Server ready
USER username
331 Password required for aller
PASS userpass
230 User aller logged in
230 You've logged on 43 times, username
PASV
227 Entering Passive Mode (127,0,0,1,225,198).
SYST
215 UNIX Type: L8
HELP
214-The following commands are recognized (* =>'s unimplemented):
 CWD     XCWD    CDUP    XCUP    SMNT*   QUIT    PORT    PASV
 EPRT    EPSV    ALLO*   RNFR    RNTO    DELE    MDTM    RMD
 XRMD    MKD     XMKD    PWD     XPWD    SIZE    SYST    HELP
 NOOP    FEAT    OPTS    AUTH    CCC*    CONF*   ENC*    MIC*
 PBSZ    PROT    TYPE    STRU    MODE    RETR    STOR    STOU
 APPE    REST    ABOR    USER    PASS    ACCT*   REIN*   LIST
 NLST    STAT    SITE    MLSD    MLST
MKD folder
257 "/folder" - Directory successfully created
CWD folder250 CWD command successfulPWD257 "/folder" is the current directoryCDUP250 CDUP command successfulTYPE I
200 Type set to I
RMD folder250 RMD command successful
QUIT
quit221 Goodbye.Connection closed by foreign host.

 Вот, собственно, примеры выполнения некоторых команд. Это так — для общего развития. Возможно пригодится ;)

Iptables и пассивный режим FTP.

<?php // the_content(__(‘Read more’, ‘monochrome’)); ?>

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

Для начала необходимо настроить  сервер FTP. Будем настраивать сервер на использование фиксированного диапазона верхних портов, например 49152—65535. Эти порты согласно спецификации IANA являются динамическими или частными. Конфигурация каждого конкретного FTP сервера будет выглядеть по своему.

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

pasv_min_port=49152
pasv_max_port=65534

Для proftpd в файле /etc/proftpd.conf (путь, опять таки, может отличаться в зависимости от операционной системы или от способа установки) в секции Global нужно внести следующие изменения:

<Global>
......
PassivePorts 49152 65534
</Global>

И аналогично для всех остальных FTP серверов.

После внесения изменений, соответственно, сервер нужно перезапустить.

Теперь необходимо загрузить модуль ip_conntrack_ftp для iptables. В RedHat/CentOS достаточно в файл /etc/sysconfig/iptables-config добавить ссылку на загрузку модуля ip_conntrack_ftp:

IPTABLES_MODULES="ip_conntrack_ftp"

и отредактировать /etc/sysconfig/iptables, добавив в него строку, разрешающую входящие соединения на порт 21. Пример конфига Iptables, добавленная строка — номер 8.

*filter
:INPUT ACCEPT 
:FORWARD ACCEPT 
:OUTPUT ACCEPT 
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Теперь нужно перезапустить файервол:

service iptables restart

Можно проверить правильность диапазона портов через lsmod:

lsmod | grep conntrack_ftp

В результате система ответит чем-то вроде этого:

nf_conntrack_ftp 41361 1 nf_nat_ftp
nf_conntrack 65661 8 nf_nat_ftp,nf_conntrack_ftp,ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state

С этого момента пассивный режим FTP можно использовать.

Небольшое дополнение: Если ваш сервер находится за NAT, возможно придётся загрузить ещё один модуль — ip_nat_ftp.

Помогла заметка — поделись с другом:

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: