Что такое FTP и зачем оно нужно — Журнал «Код»

Что такое ftp-сервер и где его используют

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

Наиболее распространенная цель использования FTP-серверов – обмен файлами между сайтом и ПК его администратора. Данные полезный или развлекательный контент преобразованные в файлы, находятся именно в FTP-хранилищах.

FTP-сервер позволяет:

При этом серверы FTP имеют ряд особенностей – необходимость аутентификации; возможность осуществлять различные операции с файловыми системами; использование отдельного канала для каждого соединения;  возможность указания типов передаваемых файлов при помощи MIME-заголовков; поддержка двух режимов передачи данных – текстового и двоичного (бинарного); сессионный режим работы.

Первоначальная настройка брандмауера

Создаем минимальный набор правил в нашем фаерволе. Этот пример создан лишь для того, чтобы показать принцип работы iptables. Для более углубленного понимания работы iptables рекомендую прочитать статью Оскара Андерсона в переводе Андрея Кисилева – Iptables Tutorial 1.1.19, которая считается классикой.

## /usr/local/firewall.sh#
 
#!/bin/shIPTABLES="/sbin/iptables"
 
# Отчищаем все правила в таблицах filter, nat и mangle
 
$IPTABLES-t filter -F$IPTABLES-t nat -F$IPTABLES-t mangle -F
 
# Удаляем все пользовательские цепочки в таблицах filter, nat и mangle
 
$IPTABLES-t filter -X$IPTABLES-t nat -X$IPTABLES-t mangle -X
 
# Задаем политики по умолчанию
 
$IPTABLES-t filter -P INPUT DROP
$IPTABLES-t filter -P FORWARD DROP
$IPTABLES-t filter -P OUTPUT ACCEPT
 
# Создаем пользовательские цепочки. Как строить firewall каждый решает сам.# Но лично мне удобно настраивать фаервол, когда все разбито по цепочкам# и как бы разложено по своим полочкам. Тогда я точно знаю, что и где надо# искать или исправлять. Думаю, названия цепочек говорят сами за себя.
 
$IPTABLES-N eth0-eth1
$IPTABLES-N eth1-eth0
$IPTABLES-N eth1-in
$IPTABLES-N eth0-in
 
# Направляем все входящие пакеты в соответствующие цепочки.
 
$IPTABLES-A INPUT -d 192.168.1.1 -j eth0-in
$IPTABLES-A INPUT -d 212.42.65.100 -j eth1-in
 
# Для удобства фильтрации, направляем все транзитные пакеты,# в соответствующие цепочки.# eth0-eth1 локальная сеть -> мир# eth1-eth0 мир -> локальная сеть
 
$IPTABLES-A FORWARD -i eth0 -o eth1 -j eth0-eth1
$IPTABLES-A FORWARD -i eth1 -o eth0 -j eth1-eth0
 
# eth0-eth1. В данную цепочку попадают все транзитные пакеты,# направленные из локальной сети в мир.
 
$IPTABLES-A eth0-eth1 -p tcp --dport21-j ACCEPT
$IPTABLES-A eth0-eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES-A eth0-eth1 -j LOG --log-prefix"eth0-eth1 "--log-level7$IPTABLES-A eth0-eth1 -j DROP
 
# eth1-eth0. В данную цепочку попадают все транзитные пакеты,# направленные из мира в локальную сеть.
 
$IPTABLES-A eth1-eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES-A eth1-eth0 -j LOG --log-prefix"eth1-eth0 "--log-level7$IPTABLES-A eth1-eth0 -j DROP
 
# eth0-in. В данной цепочке открываем порты тех служб, которые# должны быть доступны из локальной сети.
 
$IPTABLES-A eth0-in -i lo -j ACCEPT
$IPTABLES-A eth0-in -p tcp --dport21-j ACCEPT
$IPTABLES-A eth0-in -p tcp --dport22-j ACCEPT
$IPTABLES-A eth0-in -p tcp --dport25-j ACCEPT
$IPTABLES-A eth0-in -p udp --dport53-j ACCEPT
$IPTABLES-A eth0-in -p tcp --dport80-j ACCEPT
$IPTABLES-A eth0-in -p tcp --dport110-j ACCEPT
$IPTABLES-A eth0-in -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES-A eth0-in -j LOG --log-prefix"eth0-in "--log-level7$IPTABLES-A eth0-in -j DROP
 
# eth1-in. В данной цепочке открываем порты тех служб, которые# должны быть доступны из мира.
 
$IPTABLES-A eth1-in -p tcp --dport25-j ACCEPT
$IPTABLES-A eth1-in -p tcp --dport80-j ACCEPT
$IPTABLES-A eth1-in -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES-A eth1-in -j LOG --log-prefix"eth1-in "--log-level7$IPTABLES-A eth1-in -j DROP
 
# Производим сетевую трансляцию адресов (NAT)
 
$IPTABLES-A POSTROUTING -t nat -s 192.168.1.0/24-o eth1 -j SNAT --to-source 212.42.65.100

eth0 – смотрит в локальную сеть, eth1 – смотрит в мир. Данным скриптом (firewall.sh) удобно пользоваться на стадии отладки правил.

:/>  How to Manage Partitions with Disk Partition CMD in Windows 10?-EaseUS

# chmod  x /usr/local/firewall.sh# /usr/local/firewall.sh

После того, как у вас все настроено, лучше воспользоваться штатными средствами управления iptables. Для этого воспользуемся скриптом для сохранения текущих правил в файл. В разных дистрибутивах набор правил может сохраняться по отличному от /etc/sysconfig/iptables пути. Данный путь является стандартным для Red Hat дистрибутивов и его клонов, например CentOS.

# iptables-save > /etc/sysconfig/iptables# chkconfig --level 35 iptables on# service iptables restartFlushing firewall rules:                                   [  OK  ]Setting chains to policy ACCEPT: mangle filter nat         [  OK  ]Unloading iptables modules:                                [  OK  ]Applying iptables firewall rules:                          [  OK  ]

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

# modprobe ip_nat_ftp# lsmod | grep ftpip_nat_ftp              4336  0ip_conntrack_ftp       71728  1 ip_nat_ftpiptable_nat            19772  2 ip_nat_ftpip_conntrack           34740  4 ip_nat_ftp,ip_conntrack_ftp,iptable_nat,ipt_state

Обратите внимание, что в цепочке eth0-eth1, через которую проходят все транзитные пакеты, мы открыли только порт 21 и разрешили прохождение пакетов с состоянием RELATED и ESTABLISHED. Для работы ftp как в активном так и в пассивном режимах больше ничего не требуется, все остальные заботы берут на себя модули ip_nat_ftp и ip_conntrack_ftp.

Ftp-архивы

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

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

  • ограниченного пользования. К этой категории могут относиться ресурсы с ограниченным временем действия, например программы категории shareware, которые предоставляют определенное время для использования, после чего предлагают приобрести полную версию ПО;

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

Поиск в FTP-архивах осуществляется посредством системы Archie. Она сканирует все хранилища, предоставляя затем ссылку на нужный сервер, с которым необходимо установить соединение.

Как организовать и настроить ftp-сервер

Организацию и настройку FTP-сервера стоит рассмотреть на примере ОС Windows 10. Встроенные средства этой ОС возможность подготовить сервер для подключения устройств даже начинающему пользователю.


Алгоритм действий для создания и настройки FTP-сервера выглядит следующим образом:

После создания FTP-сервера необходимо перейти в настройки брандмауэра и активировать доступ к FTP. Для этого требуется открыть «Дополнительные параметры» и поставить соответствующие галочки. Затем через «Панель управления» запускается инструмент «Управление компьютером» (находится в разделе «Администрирование»), с помощью которого создаются группы, куда добавляются учетные записи пользователей, имеющих доступ к FTP-серверу.

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

Какими способами можно подключиться к ftp


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

  • FileZilla Server 0.9.23 – приложение, позволяющее давать доступ к определенным папкам, настраивать параметры входа (имя сервера и пароль), и затем отправлять эти данные пользователям, решившим подключиться к серверу через программу FileZilla;
  • Xlight FTP Server – программа для создания пользовательских серверов с удобным интерфейсом. Русского языка нет, но есть разнообразные настройки, например, активация доступа через IPv6;
  • FAR FAR-manager – популярная программа с большим числом настроек. Меню приложения напоминает старые версии BIOS, а весь интерфейс представлен на английском языке;
  • Total Commander – файловый менеджер с функциями создания и управления удаленным сервером, на котором может быть размещена любая папка с пользовательского ПК. Данный менеджер поддерживает русский язык и имеет в наличии раздел «Справка». Работает как на компьютере, так и на смартфоне.
  • FTP-сервер Complete FTP – инструмент, который позволяет настроить сервер за 5-7 нажатий благодаря интуитивно понятному меню;
  • TYPSoft FTP Server 1.10 – простая программа, популярная как среди профессионалов, так и среди начинающих пользователей. Отличается удобным интерфейсом, наличием русского языка и настройкой большого числа удаленных функций – от скачивания до удаления файлов;
  • FTP-сервер Core FTP Server – приложение в платной и бесплатной версиях. У второй модификации есть ряд функциональных ограничений, но базовые потребности пользователя способна удовлетворить даже она;
  • FTPRush – бесплатная программа, выполненная в стилистике продуктов Microsoft, что делает освоение утилиты быстрым и удобным. Также приложение имеет в наличии менеджер закачек;
  • CoffeeCup Free FTP – программа, подходящая для новичков. Интерфейс переведен на русский язык, а меню не перегружено. Есть поддержка двухпанельного режима работы и передачи файлов с одного сервера на другой без прямого взаимодействия с хранилищем ПК.

:/>  7tsp - скачать 7tsp бесплатно » Программы бесплатные

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

Клиент и сервер

Для работы по FTP нужны двое: FTP-сервер и FTP-клиент. Что делает сервер:

Принцип работы

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

Программы для работы с ftp-серверами

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

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

  • поддержка FTP через SSL/TLS (FTPS) и SSH File Transfer Protocol (SFTP);

  • поддержка IDN, IPv6, Drag-and-drop;

  • удаленное редактирование файлов;

  • работа с вкладками;

  • возможность приема и передачи больших объемов информации (более 4 Гб);

  • менеджер сайтов и очередь загрузки.

Режимы работы ftp: активный и пассивный

При работе по протоколу FTP между клиентом и сервером устанавливается два соединения – управляющее (по нему идут команды) и соединение передачи данных (по нему передаются файлы). Управляющее соединение одинаково для Активного и Пассивного режимов. Клиент инициирует TCP-соединение с динамического порта (1024-65535) к порту номер 21 на FTP-сервере и говорит «Привет! Я хочу подключится к тебе. Вот мое имя и мой пароль». Дальнейшие действия зависят от того, какой режим FTP (Активный или Пассивный) выбран.

В Активном режиме, когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP-сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.

Что такое FTP и зачем оно нужно — Журнал «Код»

В Пассивном режиме, после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024-65535), к которому можно подключится для установки соединения передачи данных. Главное отличие между Активным режимом FTP и Пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных. В Активном режиме, клиент должен принять соединение от FTP-сервера. В Пассивном режиме, клиент всегда инициирует соединение.

Что такое FTP и зачем оно нужно — Журнал «Код»

Активный FTP «выгоден» для FTP-сервера, но «вреден» для стороны клиента. FTP сервер пытается соединиться со случайными высокими (по номеру) портами на клиенте, такое соединение наверняка будет блокировано брандмауэром на стороне клиента.

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

Тестирование

После того, как мы загрузили модуль и правил можно приступить непосредственно к тестированию. Для этого можно воспользоваться любимым ftp клиентом и попробовать соединиться с любым ftp сервером. В качестве клиента я использовал ftp клиент встроенный в far, который позволяет использовать как активный, так и пассивный режимы. Если под рукой нет никакого ftp клиента всегда можно воспользоваться встроенным в windows клиентом как показано ниже.

:/>  Как очистить диск С от ненужных файлов и мусора в Windows 7/10

C:Documents and SettingsAdmin>ftp ftp.sys-adm.org.uaСвязь с ftp.sys-adm.org.ua.220 Welcome To SYS-ADM.ORG.UA FTP Server.Пользователь (ftp.sys-adm.org.ua:(none)): alex331 Please specify the password.Пароль: *******230 Login successful.ftp> ls200 PORT command successful. Consider using PASV.150 Here comes the directory listing.gamesmusicvideoxxx226 Directory send OK.ftp: 26 байт получено за 0,00 (сек) со скоростью 26000,00 (КБ/сек).ftp> quit221 Goodbye.

Для наглядности можно посмотреть с помощью tcpdump что происходит при попытке подключиться к удаленному ftp серверу.

# tcpdump -npi eth1 port 21 and host ftp.sys-adm.org.uatcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes23:17:52.626734 IP 212.42.65.100.1327 > 212.42.65.15.ftp: S 3449417565:3449417565(0) win 65535 23:17:52.629494 IP 212.42.65.15.ftp > 212.42.65.100.1327: S 3892471215:3892471215(0) ack 3449417566 win 5840 23:17:52.630370 IP 212.42.65.100.1327 > 212.42.65.15.ftp: . ack 1 win 6553523:17:52.632693 IP 212.42.65.15.ftp > 212.42.65.100.1327: P 1:42(41) ack 1 win 584023:17:52.709940 IP 212.42.65.100.1327 > 212.42.65.15.ftp: . ack 42 win 6549423:17:55.258372 IP 212.42.65.100.1327 > 212.42.65.15.ftp: P 1:12(11) ack 42 win 6549423:17:55.260886 IP 212.42.65.15.ftp > 212.42.65.100.1327: . ack 12 win 584023:17:55.263883 IP 212.42.65.15.ftp > 212.42.65.100.1327: P 42:76(34) ack 12 win 584023:17:55.347886 IP 212.42.65.100.1327 > 212.42.65.15.ftp: . ack 76 win 6546023:17:56.906175 IP 212.42.65.100.1327 > 212.42.65.15.ftp: P 12:25(13) ack 76 win 6546023:17:56.909129 IP 212.42.65.15.ftp > 212.42.65.100.1327: P 76:99(23) ack 25 win 584023:17:57.000080 IP 212.42.65.100.1327 > 212.42.65.15.ftp: . ack 99 win 6543723:18:01.089040 IP 212.42.65.100.1327 > 212.42.65.15.ftp: P 25:50(25) ack 99 win 6543723:18:01.091282 IP 212.42.65.15.ftp > 212.42.65.100.1327: P 99:150(51) ack 50 win 584023:18:01.094867 IP 212.42.65.100.1327 > 212.42.65.15.ftp: P 50:56(6) ack 150 win 6538623:18:01.097930 IP 212.42.65.15.ftp > 212.42.65.100.1327: P 150:189(39) ack 56 win 584023:18:01.098865 IP 212.42.65.15.ftp > 212.42.65.100.1327: P 189:213(24) ack 56 win 584023:18:01.100303 IP 212.42.65.100.1327 > 212.42.65.15.ftp: . ack 213 win 6532323:18:03.367299 IP 212.42.65.100.1327 > 212.42.65.15.ftp: P 56:62(6) ack 213 win 6532323:18:03.370123 IP 212.42.65.15.ftp > 212.42.65.100.1327: P 213:227(14) ack 62 win 584023:18:03.372775 IP 212.42.65.15.ftp > 212.42.65.100.1327: F 227:227(0) ack 62 win 584023:18:03.372968 IP 212.42.65.100.1327 > 212.42.65.15.ftp: . ack 228 win 6530923:18:03.375854 IP 212.42.65.100.1327 > 212.42.65.15.ftp: F 62:62(0) ack 228 win 6530923:18:03.377860 IP 212.42.65.15.ftp > 212.42.65.100.1327: . ack 63 win 584024 packets captured54 packets received by filter0 packets dropped by kernel

Ну вот собственно и вся настройка. Для того, чтобы каждый раз при загрузке системы модуль ip_nat_ftp загружался автоматически необходимо внести небольшие изменения в файл /etc/sysconfig/iptables-config.

#
# /etc/sysconfig/iptables-config
#

# Загрузка дополнительных модулей iptables (nat помощников)
#   По умолчанию: -пусто-
# Разделенный пробелами список "nat помощников" (например 'ip_nat_ftp ip_nat_irc'),
# которые загружаются после применения правил.
# Опции для "помощников" находятся  в /etc/modprobe.conf.
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"

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

# service iptables restartFlushing firewall rules:                                   [  OK  ]Setting chains to policy ACCEPT:  mangle filter nat        [  OK  ]Unloading iptables modules:                                [  OK  ]Applying iptables firewall rules:                          [  OK  ]Loading additional iptables modules: ip_nat_ftp            [  OK  ]

Уязвимости и надёжность

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

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

Оставьте комментарий

Adblock
detector