Differences between revisions 1 and 11 (spanning 10 versions)
Revision 1 as of 2008-08-01 14:26:59
Size: 7328
Editor: eSyr
Comment:
Revision 11 as of 2008-08-15 21:29:59
Size: 13324
Comment: Передаю дальше
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Чтобы в альте эт организовать, над поставить два пакета: ftp-сервер (vsftpd) и анонимный доступ. Дел в том, что в альте, традиционн уделяющему мнго внимания безопасеости, есть мног защиты от дурака, чтобы если человек поставил ftp-сервер, то не начало оно сразу раздавать всё с анонимусом, да и на запись. Поэтму надо поставить anonftpd, который дбавляет один файл, /var/ftp, после чего оно начинает нормально работать. Нужн проделать ещё три упражнения:
 * Нужно включить сам метадемон inetd: chkconfig xinetd on
 * Нужно включить сам vsftpd: chkconfig vsftpd on
 * В этом же файле (/etc/xinetd.conf) надо проверить, чтобы оно было не только для 127.0.0.1 (можно и нужно закомментировать эту строчку)
После чего можно зайти на ftp: lftp localhost
=== Установка ===
Line 9: Line 5:
При работе с ftp исп. следующая дисц.: в каталоге ftp должен пдкаталог pub, где нахдятся публичные файлы. В дкументации по серверу ftp мжно прчитать много про настройку доступа пользователей. Развернем на нашей машине FTP-сервер. Установим для этого пакеты vsftpd и anonftp:
Line 11: Line 7:
Вообще говоря, уже сейчас можно этт каталог делать доступным в качестве хранилища нашего класса. Дступ по ftp сейчас разрешён... {{{
# apt-get install vsftpd anonftp
}}}
Line 13: Line 11:
Поясним сперва, почему какого-либо одного пакета было бы недостаточно. Первая причина заключается в следующем. Программ, предоставляющих нужную нам функциональность, в хранилище более одной: это proftpd, vsftpd, pure-ftpd. Дерево каталогов, которое соответствует содержимому FTP-сервера, не должно быть жестко привязано к какому-то конкретному пакету, однако должно создаваться при развертывании сервера. Именно за это и отвечает пакет anonftp:
Line 14: Line 13:
##Кусок от 080730 {{{
$ rpmquery -l anonftp
/var/ftp
}}}
Line 16: Line 18:
Развёртывание ftp. Для уст. ftp-сервера необх. выполнить неск. операций.
 * Установка двух пакетов: пакет с фтп-сервером (vsftpd) и специальный пакет (anonftp). Таке раздление нужн вт для чего: фтп-серверов в репозитрии много, у них у всех есть общ. часть, а именно дерево каталогов, которые надо разворачивать в домашний каталог ftp, и чтобы неск. раз это не делать, оно вынесено в отд. пакет, кроме ого, это защита дурака в стиле альтлинукс
 * Уст. пакета ни к чему не ведёт, поск. vsftpd работает через xinetd. xinetd по умолчанию тв. только на запросы с лок. машины, и в его конфиге (.уес.чштуевюсщта) надо закомм. строчку only from 127.0.0.1
 * Дальше можно сделать chkconfig --list, chkconfig отвечает за настр. разных сервисов. По умолч. всё в xinetd выключено.
Включим vsftpd: chkconfig vsftpd on, после чего перезапустить xinetd. Если ни одна служба в нём не запущена, то он молча останавливается
 * После чего мы мжем туда подкл. по ftp, и увидим, что ничего там нет.
Теперь туда можно складывать файлы, которые будут доступны с любой машины.
Есть, впрочем, и вторая причина. В дистрибутивах ALT Linux, уделяющих большое внимание безопасности, включено множество разных закладок для "защиты от дурака". В данном случае дело в следующем: установка FTP-сервера (vsftpd) и его запуск "в лоб" не должны приводить к его автоматическому включению в режиме доступа на запись для всех желающих.
Line 24: Line 20:
Использовать ftp с логином и парлем польз. нехорошо. Разные клиенты требуют ввода логина и пароля, даже если он анонимный, в этом случае логин --- anonymous или ftp, пароль с @. Итак, требуемые пакеты в систему установлены. Займемся их включением. Сервер vsftpd использует при своей работе "метадемон" xinetd. Для настройки того, какие службы запускаются в системе в процессе инициализации, используется утилита chkconfig. Используемая в ПСПО версия этой утилиты умеет управлять системными службами разного типа: как оформленными в стиле start-stop-скриптов, так и использующими "метадемон" xinetd. При применении chkconfig из командной строки пользователь (администратор) избавлен от необходимости запоминать различный синтаксис для этих двух групп. Посмотрим, какие службы сейчас включены:
Line 26: Line 22:
Этих ftp-серверов так много, во-первых, потому что там есть штуки, связанные с пользователем (это в первую чередь для того, чтобы отмазаться от того, что вы раздаёте что-то всем подряд). Есть другая довольно непр. картина: пусть у вас есть не очень мщная машина, кторая что0то раздаёт и есть разные категории машин. Напр, если кто-то подкл. по локальной сети, то приоритет высокий, а если по удалённой --- то низкой. В этом случае потребуются фишки настройки, где ограничивается количество соединений, сеансов.... Вторая прблема --- протокол ftp, гад, передаёт ip-адрес сервера прям на прикладном уровне. То есть, когда вы подкл. по ftp, то надо иметь ip одной из сторон, чтобы к ней подкл. и передать данные. ftp скорей всего придётся делать пассивныМ, но в жтом случае взн. прблема: по упр., 21, порту уст. соед. между клиентом и сервером, и клиент говорит, что хочет чего-то взять. Сервер после этого говорит ip и порт, по которому клиент сможет это взять. Если машина за натом, то далеко не каждый клиент способен это проигнорировать (например, мозилла не мжет). Пэтому у ftp-сервера должна быть взм. в зависимости от того, с каким ip клиент пришёл, раздавать ему сотв. ip. Лектор у себя это разруливал на урвне фаервлла. Но надо иметь в виду, что если
это не разрулить, т кто-то не сможет пдкл.
 ''Нужно определиться, используем мы термин '''служба''' или '''сервис'''. Оставляю пока "разнобой".'' -- DmitryChistikov <<DateTime(2008-08-15T14:15:15+0400)>>

{{{
# chkconfig --list | tail -15

xinetd based services:
        chargen-tcp: off
        chargen-udp: off
        cups-lpd: off
        daytime-tcp: off
        daytime-udp: off
        discard-tcp: off
        discard-udp: off
        echo-tcp: off
        echo-udp: off
        rsync: off
        time-tcp: off
        time-udp: off
        vsftpd: off
}}}

Как видно, все использующие xinetd сервисы (в том числе и vsftpd) в настоящее время выключены. Если мы хотим, чтобы FTP-сервер запускался каждый раз при старте машины, нужно проделать следующие операции:

 * обеспечить запуск метадемона:

 {{{
# chkconfig xinetd on
}}}

 * включить сам vsftpd:

 {{{
# chkconfig vsftpd on
}}}

 * и обнаружить, что мы встретились еще с одной отличительной особенностью дистрибутивов ПСПО. Дело в том, что все сетевые сервисы по умолчанию доступны только с локальной машины --- иными словами, подключиться к ним можно только с адреса 127.0.0.1. В данном случае следует закомментировать в файле /etc/xinetd.conf строку с параметром only_from --- для раздачи сервисов по сети она должна выглядеть примерно так:

 {{{
# only_from = 127.0.0.1
}}}

Отметим, что файл /etc/xinetd.conf содержит настройки, общие для всех использующих xinetd сервисов. Теперь, поскольку мы изменили содержимое этого конфигурационного файла, нужно перезапустить метадемон xinetd, чтобы внесенные нами поправки вступили в силу:

{{{
# service xinetd restart
}}}

После этого локальный FTP-сервер начнет принимать соединения на 21-й порт:

{{{
$ lftp localhost
lftp localhost:~> ls
lftp localhost:/> exit
}}}

Сообщений об ошибках, как видим, нет. Впрочем, файлов на сервере тоже пока нет. Скажем еще несколько слов о дисциплине организации FTP-сервера. В каталоге, который является корнем для службы FTP (в нашем случае это /var/ftp) традиционно создается подкаталог pub, файлы в котором доступны на чтение. Именно этот каталог и предназначен для работы "публичных пользователей". Описание же того, как организовать доступ по FTP для обычных пользователей системы, приводить не будем, ограничившись отсылкой к документации.

=== Настройка и использование ===

Поговорим немного о настройке и использовании FTP-сервера. Во-первых, использовать FTP с системными логином и паролем пользователя совершенно неразумно. Эти данные в протоколе FTP передаются по сети открытым текстом, поэтому "подслушать" их не составляет труда. По этой причине FTP-серверы чаще всего используются лишь для предоставления анонимного доступа на чтение к тем или иным данным. Некоторые FTP-клиенты, заметим, требуют при их использовании обязательного ввода логина и пароля даже при работе с "анонимными" FTP-серверами. В таких случаях используется логин anonymous (иногда ftp) и какой угодно, но содержащий символ коммерческого at (@) пароль. Последнее требование, впрочем, предъявляется не всеми FTP-серверами.

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

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

С использованием протокола FTP может быть связана еще одна проблема. Дело в том, что скачивание файлов по протоколу FTP требует создание специального соединения для передачи данных. IP-адрес и порт для создания этого соединения передаются по сети в пакетах прикладного уровня (в рамках так называемого "управляющего" соединения). В случае "активного" FTP передаются адрес и порт клиента, а случае "пассивного" --- адрес и порт сервера. Понятно, что при использовании трансляции адресов (Network Address Translation, NAT) такой механизм работы может индуцировать довольно неприятные ситуации. К примеру, при работе с "пассивным" сервером строго следующий описанию протокола FTP клиент (примером может служить Mozilla Firefox) не может проигнорировать полученный таким способом IP-адрес и, если этот адрес оказывается локальным для сети сервера, терпит неудачу при попытке соединения.

Возможным решением данной проблемы может служить тонкая настройка FTP-сервера таким образом, чтобы передаваемый IP-адрес для подключения в "пассивном" режиме различался для клиентов из разных сетей. Иногда оказывается полезным держать несколько FTP-серверов на одной машине и "разруливать" подключения к 21-му порту (ftp) с помощью средств файрвола. При настройке маршрутизатора хорошую службу может сослужить также специальный модуль ip_nat_ftp к iptables.
Line 35: Line 97:
|| 0 || 1 || 1 || 1 || || 1 || PavelSutyrin, ОльгаТочилкина, VsevolodKrishchenko || || || || 50 || 1 || 1 || 1 || || 1 || PavelSutyrin, DmitryChistikov, VsevolodKrishchenko || || ||

Установка и настройка FTP-сервера

Установка

Развернем на нашей машине FTP-сервер. Установим для этого пакеты vsftpd и anonftp:

# apt-get install vsftpd anonftp

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

$ rpmquery -l anonftp
/var/ftp

Есть, впрочем, и вторая причина. В дистрибутивах ALT Linux, уделяющих большое внимание безопасности, включено множество разных закладок для "защиты от дурака". В данном случае дело в следующем: установка FTP-сервера (vsftpd) и его запуск "в лоб" не должны приводить к его автоматическому включению в режиме доступа на запись для всех желающих.

Итак, требуемые пакеты в систему установлены. Займемся их включением. Сервер vsftpd использует при своей работе "метадемон" xinetd. Для настройки того, какие службы запускаются в системе в процессе инициализации, используется утилита chkconfig. Используемая в ПСПО версия этой утилиты умеет управлять системными службами разного типа: как оформленными в стиле start-stop-скриптов, так и использующими "метадемон" xinetd. При применении chkconfig из командной строки пользователь (администратор) избавлен от необходимости запоминать различный синтаксис для этих двух групп. Посмотрим, какие службы сейчас включены:

  • Нужно определиться, используем мы термин служба или сервис. Оставляю пока "разнобой". -- DmitryChistikov 2008-08-15 13:15:15

# chkconfig --list | tail -15

xinetd based services:
        chargen-tcp:    off
        chargen-udp:    off
        cups-lpd:       off
        daytime-tcp:    off
        daytime-udp:    off
        discard-tcp:    off
        discard-udp:    off
        echo-tcp:       off
        echo-udp:       off
        rsync:          off
        time-tcp:       off
        time-udp:       off
        vsftpd:         off

Как видно, все использующие xinetd сервисы (в том числе и vsftpd) в настоящее время выключены. Если мы хотим, чтобы FTP-сервер запускался каждый раз при старте машины, нужно проделать следующие операции:

  • обеспечить запуск метадемона:
    # chkconfig xinetd on
  • включить сам vsftpd:
    # chkconfig vsftpd on
  • и обнаружить, что мы встретились еще с одной отличительной особенностью дистрибутивов ПСПО. Дело в том, что все сетевые сервисы по умолчанию доступны только с локальной машины --- иными словами, подключиться к ним можно только с адреса 127.0.0.1. В данном случае следует закомментировать в файле /etc/xinetd.conf строку с параметром only_from --- для раздачи сервисов по сети она должна выглядеть примерно так:
    #        only_from = 127.0.0.1

Отметим, что файл /etc/xinetd.conf содержит настройки, общие для всех использующих xinetd сервисов. Теперь, поскольку мы изменили содержимое этого конфигурационного файла, нужно перезапустить метадемон xinetd, чтобы внесенные нами поправки вступили в силу:

# service xinetd restart

После этого локальный FTP-сервер начнет принимать соединения на 21-й порт:

$ lftp localhost
lftp localhost:~> ls
lftp localhost:/> exit

Сообщений об ошибках, как видим, нет. Впрочем, файлов на сервере тоже пока нет. Скажем еще несколько слов о дисциплине организации FTP-сервера. В каталоге, который является корнем для службы FTP (в нашем случае это /var/ftp) традиционно создается подкаталог pub, файлы в котором доступны на чтение. Именно этот каталог и предназначен для работы "публичных пользователей". Описание же того, как организовать доступ по FTP для обычных пользователей системы, приводить не будем, ограничившись отсылкой к документации.

Настройка и использование

Поговорим немного о настройке и использовании FTP-сервера. Во-первых, использовать FTP с системными логином и паролем пользователя совершенно неразумно. Эти данные в протоколе FTP передаются по сети открытым текстом, поэтому "подслушать" их не составляет труда. По этой причине FTP-серверы чаще всего используются лишь для предоставления анонимного доступа на чтение к тем или иным данным. Некоторые FTP-клиенты, заметим, требуют при их использовании обязательного ввода логина и пароля даже при работе с "анонимными" FTP-серверами. В таких случаях используется логин anonymous (иногда ftp) и какой угодно, но содержащий символ коммерческого at (@) пароль. Последнее требование, впрочем, предъявляется не всеми FTP-серверами.

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

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

С использованием протокола FTP может быть связана еще одна проблема. Дело в том, что скачивание файлов по протоколу FTP требует создание специального соединения для передачи данных. IP-адрес и порт для создания этого соединения передаются по сети в пакетах прикладного уровня (в рамках так называемого "управляющего" соединения). В случае "активного" FTP передаются адрес и порт клиента, а случае "пассивного" --- адрес и порт сервера. Понятно, что при использовании трансляции адресов (Network Address Translation, NAT) такой механизм работы может индуцировать довольно неприятные ситуации. К примеру, при работе с "пассивным" сервером строго следующий описанию протокола FTP клиент (примером может служить Mozilla Firefox) не может проигнорировать полученный таким способом IP-адрес и, если этот адрес оказывается локальным для сети сервера, терпит неудачу при попытке соединения.

Возможным решением данной проблемы может служить тонкая настройка FTP-сервера таким образом, чтобы передаваемый IP-адрес для подключения в "пассивном" режиме различался для клиентов из разных сетей. Иногда оказывается полезным держать несколько FTP-серверов на одной машине и "разруливать" подключения к 21-му порту (ftp) с помощью средств файрвола. При настройке маршрутизатора хорошую службу может сослужить также специальный модуль ip_nat_ftp к iptables.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

50

1

1

1

1

PavelSutyrin, DmitryChistikov, VsevolodKrishchenko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080722/00FtpInstallConfigure (last edited 2009-03-23 02:11:30 by eSyr)