Различия между версиями 6 и 10 (по 4 версиям)
Версия 6 от 2008-08-15 01:57:53
Размер: 11937
Редактор: PavelSutyrin
Комментарий: расшифровано
Версия 10 от 2008-08-15 21:25:14
Размер: 13324
Редактор: DmitryChistikov
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
## 00:26:40
## with updates from 300708 (form 03:00:30)
=== Установка ===
Строка 6: Строка 5:
Поставим пакет {{{vsftpd}}}, а также пакет {{{anonftp}}}. Разделение такое
затем, что в репозитории есть много FTP-серверов (proftpd, vsftpd, bsdftp). У
них есть нечто общее: дерево каталогов, которое нужно развернуть в домашнем
каталоге этого FTP-сервера ({{{/var/ftp}}}, и чтобы каждый раз его не
создавать, оно было вынесено в отдельный пакет. К тому же, в ALTLinux,
уделяющем много
внимания безопасности, есть много разных закладок для защиты от дурака, чтобы
человек не поставил себе ftp-сервер, а тот сразу заработал и открыл всем доступ
на запись. Поэтому нужно поставить пакет {{{anonftp}}}, он состоит из одного файлаa
{{{/var/ftp}}}, при появлении этого файла ftp начинает хотя бы нормально
работать. но {{{vsftpd}}} работает через метадемон {{{inted}}}.
Развернем на нашей машине FTP-сервер. Установим для этого пакеты vsftpd и anonftp:
Строка 18: Строка 7:
Утилита {{{chkconfig}}} управляет одновременно и системными службами в стиле
start/stop-ных скриптов (см. учебник), и настройками тех служб, которые
цепляются к метадемону. Такой унверсальный интерфейс с единым синтаксисом.
{{{
# apt-get install vsftpd anonftp
}}}
Строка 22: Строка 11:
Посмотрим, какие включены службы Поясним сперва, почему какого-либо одного пакета было бы недостаточно. Первая причина заключается в следующем. Программ, предоставляющих нужную нам функциональность, в хранилище более одной: это proftpd, vsftpd, pure-ftpd. Дерево каталогов, которое соответствует содержимому FTP-сервера, не должно быть жестко привязано к какому-то конкретному пакету, однако должно создаваться при развертывании сервера. Именно за это и отвечает пакет anonftp:

{{{
$ rpmquery -l anonftp
/var/ftp
}}}

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

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

 ''Нужно определиться, используем мы термин '''служба''' или '''сервис'''. Оставляю пока "разнобой".'' -- DmitryChistikov <<DateTime(2008-08-15T14:15:15+0400)>>
Строка 41: Строка 41:

}}}
Видно, что по умолчанию все выключено.

Нужно проделать еще три упражнения:

 * нужно включить сам метадемон {{{inetd}}}:
{{{
$chkconfig xinetd on
}}}
 * нужно включить сам {{{vsftpd}}}:
{{{
$chkconfig vsftpd on
}}}
 * в файле ({{{/etc/xinetd.conf}}}) надо проверить, а не ждет ли нас замечательная фича altlinux — что все сетевые сервисы по умолчанию запускаются так, что они доступны только с этой же машины. для этого закомментируем строчку
{{{
only_from 127.0.0.1
Строка 60: Строка 43:
Это если вы понаставили служб, которые пользуются {{{inetd}}} и повключали их, то с
ними соединиться можно будет только с адресе {{{127.0.0.1}}}.
Как видно, все использующие xinetd сервисы (в том числе и vsftpd) в настоящее время выключены. Если мы хотим, чтобы FTP-сервер запускался каждый раз при старте машины, нужно проделать следующие операции:
Строка 63: Строка 45:
Нужно не забыть перезапустить {{{xinitd}}}, чтобы он перечитал конфиги.
Он умный: при старте, если видит, что в нём нет разрешенных служб, молча останавливается.
 * обеспечить запуск метадемона:
Строка 66: Строка 47:
можно зайти на 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, чтобы внесенные нами поправки вступили в силу:
Строка 69: Строка 66:
$lftp localhost # service xinetd restart
}}}

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

{{{
$ lftp localhost
Строка 74: Строка 77:
Сообщений об ошибках не было, а файлов на сервере пока никаких нет.
Вообще, Если места на жестком диске мало (20-30 Гб), и режим работы компьютера
щадящий (включил-поработал-выключил, а не круглосуточно включенный сервер с
файлами), то можно не думать о разбиении диска, а весь диск сделать одним
корневым разделом.
Сообщений об ошибках, как видим, нет. Впрочем, файлов на сервере тоже пока нет. Скажем еще несколько слов о дисциплине организации FTP-сервера. В каталоге, который является корнем для службы FTP (в нашем случае это /var/ftp) традиционно создается подкаталог pub, файлы в котором доступны на чтение. Именно этот каталог и предназначен для работы "публичных пользователей". Описание же того, как организовать доступ по FTP для обычных пользователей системы, приводить не будем, ограничившись отсылкой к документации.
Строка 80: Строка 79:
В при работе с FTP используется дисциплина: в каталоге,
который является корнем для службы FTP, в нашем случае {{{/var/ftp}}}, должен
быть подкаталог {{{pub/}}}, в котором файлы доступны на чтение, это файлы для
публичных пользователей. В документации можно прочитать, как организовать
доступ по FTP обычным пользователям системы.
=== Настройка и использование ===
Строка 86: Строка 81:
Вообще говоря, уже сейчас можно этот каталог делать доступным
в качестве хранилища нашего класса. Доступ по ftp сейчас разрешён
Поговорим немного о настройке и использовании FTP-сервера. Во-первых, использовать FTP с системными логином и паролем пользователя совершенно неразумно. Эти данные в протоколе FTP передаются по сети открытым текстом, поэтому "подслушать" их не составляет труда. По этой причине FTP-серверы чаще всего используются лишь для предоставления анонимного доступа на чтение к тем или иным данным. Некоторые FTP-клиенты, заметим, требуют при их использовании обязательного ввода логина и пароля даже при работе с "анонимными" FTP-серверами. В таких случаях используется логин anonymous (иногда ftp) и какой угодно, но содержащий символ коммерческого at (@) пароль. Последнее требование, впрочем, предъявляется не всеми FTP-серверами.
Строка 89: Строка 83:
## 00:40:30.5 (pause)
##Кусок от 080730 (с 03:24:41)
Отметим, однако, что в некоторых случаях доступ к данным по протоколу FTP все же защищается паролем. Этим могут заниматься, к примеру, владельцы FTP-серверов, распространяющие сомнительные с точки зрения лицензионной чистоты программы и данные. Трюк заключается в следующем: в случае возникновения каких-либо претензий всегда можно сослаться на использование пароля и объяснить, что защищенные таким способом файлы не являются общедоступными и, следовательно, бесплатно по сети не распространяются.
Строка 92: Строка 85:
=== О настройке FTP-серверов === Поясним теперь, зачем в хранилище помещено более одной программы, реализующей функциональность FTP-сервера. В случае, когда аппаратная конфигурация используемой в качестве сервера машины не слишком "продвинута", а компьютеры-клиенты образуют несколько различных категорий, может возникнуть необходимость использовать специальные возможности таких программ. К таким возможностям относится выставление приоритетов в соответствии с IP-адресами клиентов, ограничения на число одновременных соединений, защита от множественного скачивания программами типа ReGet и пр. В случае же, когда такие возможности не требуются, разумно использовать более "легковесные" программы.
Строка 94: Строка 87:
Использовать ftp с логином и паролем пользователя системы нехорошо.
Разные FTP-клиенты, кроме lftp, требуют обязательно ввода логина и пароля, даже если это анонимный FTP-сервер, и тогда логин тогда должен быть либо anonymous либо ftp, что легче набирать, а проль -- какой угодно, лишь бы содержал @.
С использованием протокола FTP может быть связана еще одна проблема. Дело в том, что скачивание файлов по протоколу FTP требует создание специального соединения для передачи данных. IP-адрес и порт для создания этого соединения передаются по сети в пакетах прикладного уровня (в рамках так называемого "управляющего" соединения). В случае "активного" FTP передаются адрес и порт клиента, а случае "пассивного" --- адрес и порт сервера. Понятно, что при использовании трансляции адресов (Network Address Translation, NAT) такой механизм работы может индуцировать довольно неприятные ситуации. К примеру, при работе с "пассивным" сервером строго следующий описанию протокола FTP клиент (примером может служить Mozilla Firefox) не может проигнорировать полученный таким способом IP-адрес и, если этот адрес оказывается локальным для сети сервера, терпит неудачу при попытке соединения.
Строка 97: Строка 89:
Этих ftp-серверов так много, во-первых, потому что там
есть отдельные штуки, связанные с пользователем (однако,
пароль на FTP для пользователя нужен только для одного, чтобы
отмазаться от того, что вы бесплатно распространяете что-то, что бесплатно распространять нельзя. В этом случае вы говорите: какое бесплатно, видите, на
FTP без пароля нельзя зайти, а вот мне лично бывает нужно скачать, я же хозяин, и т.п.), а в остальном понятно -- любой FTP-пароль всегда виден.
Есть другая довольно неприятная картина: пусть у
вас есть не очень мощная машина, кторая раздаёт какие-то важные файлы,
и есть разные категории компьютеров-клиентов этого сервера.
Например, если кто-то из локальной сети подключается, то приоритет высокий,
а если издалека --- то низкий, и, скажем, ограничение на число одновременных соединений. В
этом случае надо использовать всякие свойства всяких крутых FTP-демонов --
proftpd или vsftpd, где по ip-адресу клиента определяются правила и ограничения его работы. Так же можно защититься от всякого множественного скачивания, когда всякими ReGet'ами качают. Вторая прблема --- протокол
ftp, гад, передаёт ip-адрес сервера прямо на прикладном уровне.
То есть, когда вы подключаетсь по ftp, то прямо по FTP передаются IP-адреса и порты (в случае passive ftp -- адрес и порт сервера, куда теперь нужно подключиться клиенту, в случае active ftp -- адрес и порт клиента, куда соединиться сервер и закачает файл)

ftp скорей всего придётся делать пассивным,
но в этом случае возникает прблема: например, по управляющему, 21-му, порту
устанавливается соединение между клиентом и сервером, и клиент говорит,
что хочет чего-то взять. Сервер после этого говорит ip-адрес и порт, по которому
клиент сможет это взять. Если машина с этим ip-адресов находится за NAT'ом,
то есть происходит трансляция адресов, то будет дан её внутренний адрес,
и далеко не каждый FTP-клиент способен это проигнорировать (например, мозилла (firefox) не может. Т.е., если вы заходите на адрес с внешним ip-шником по passive ftp и просите у него закачать файлы, и внутри протокола FTP приходит ip-адрес внутренний (10.X.X.X), firefox просто не работает, он честно следует протоколу FTP, в котором написано: заходить на такой-то ip-шник).

Пэтому у ftp-сервера должна быть возможность в зависимости от
того, с какого ip-адреса клиент пришёл, передавать ему для соединения
внутри FTP-протокола подходящий (внутренний, либо внешний) ip-адрес,
иначе что-то может не работать. Лектор у
себя на факультете это разруливал на уровне firewall'а (соединения по 21 порту с разных ip-адресов разруливались на разные порты, где их ждали по-разному настроенные FTP-серверы, но это изврат).

Но надо иметь в виду, что если FTP-сервер сидит не на внешнем ip-адресе,
а находится за межсетевым экраном, на котором включена трансляция адресов (NAT), то есть реальный шанс, что соединения к нему не будут работать либо из внешней, либо из внутренней сети.

## 300708 till 03:30:00
Возможным решением данной проблемы может служить тонкая настройка FTP-сервера таким образом, чтобы передаваемый IP-адрес для подключения в "пассивном" режиме различался для клиентов из разных сетей. Иногда оказывается полезным держать несколько FTP-серверов на одной машине и "разруливать" подключения к 21-му порту (ftp) с помощью средств файрвола. При настройке маршрутизатора хорошую службу может сослужить также специальный модуль ip_nat_ftp к iptables.
Строка 137: Строка 97:
|| 20 || 1 || 1 || 1 || || 1 || PavelSutyrin, DmitryChistikov, VsevolodKrishchenko || || || || 42 || 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

42

1

1

1

1

PavelSutyrin, DmitryChistikov, VsevolodKrishchenko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080722/00FtpInstallConfigure (последним исправлял пользователь eSyr 2009-03-23 02:11:30)