Differences between revisions 6 and 8 (spanning 2 versions)
Revision 6 as of 2008-08-15 01:57:53
Size: 11937
Editor: PavelSutyrin
Comment: расшифровано
Revision 8 as of 2008-08-15 11:39:08
Size: 12619
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
## 00:26:40
## with updates from 300708 (form 03:00:30)
=== Установка ===
Line 6: Line 5:
Поставим пакет {{{vsftpd}}}, а также пакет {{{anonftp}}}. Разделение такое
затем, что в репозитории есть много FTP-серверов (proftpd, vsftpd, bsdftp). У
них есть нечто общее: дерево каталогов, которое нужно развернуть в домашнем
каталоге этого FTP-сервера ({{{/var/ftp}}}, и чтобы каждый раз его не
создавать, оно было вынесено в отдельный пакет. К тому же, в ALTLinux,
уделяющем много
внимания безопасности, есть много разных закладок для защиты от дурака, чтобы
человек не поставил себе ftp-сервер, а тот сразу заработал и открыл всем доступ
на запись. Поэтому нужно поставить пакет {{{anonftp}}}, он состоит из одного файлаa
{{{/var/ftp}}}, при появлении этого файла ftp начинает хотя бы нормально
работать. но {{{vsftpd}}} работает через метадемон {{{inted}}}.
Развернем на нашей машине FTP-сервер. Установим для этого пакеты vsftpd и anonftp:
Line 18: Line 7:
Утилита {{{chkconfig}}} управляет одновременно и системными службами в стиле
start/stop-ных скриптов (см. учебник), и настройками тех служб, которые
цепляются к метадемону. Такой унверсальный интерфейс с единым синтаксисом.
{{{
# apt-get install vsftpd anonftp
}}}
Line 22: Line 11:
Посмотрим, какие включены службы Поясним, почему какого-либо одного пакета было бы недостаточно. Первая причина заключается в следующем. Программ, предоставляющих функциональность FTP-сервера, в хранилище более одной: это proftpd, vsftpd, pure-ftpd. Дерево каталогов, которое соответствует содержимому FTP-сервера, не должно быть жестко привязано к какому-то конкретному пакету, однако должно при развертывании сервера создаваться. Именно за это и отвечает пакет anonftp:

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

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

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

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

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

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

Теперь можно подключиться к локальному FTP-серверу:

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

Этих 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 может быть связана еще одна проблема. Дело в том, что при скачивании файлов по сети FTP передает (на прикладном уровне) IP-адрес и порт для создания отдельного подключения. В случае "активного" FTP это адрес и порт клиента, а случае "пассивного" --- сервера. Понятно, что в случае использования трансляции адресов (Network Address Translation, NAT) могут возникнуть довольно неприятные ситуации. Строго следующий описанию протокола FTP клиент (примером может служить Mozilla Firefox) не может проигнорировать полученный таким способом IP-адрес. Если этот адрес оказывается локальным для сети сервера, попытка соединиться, естественно, терпит неудачу.
Line 129: Line 90:
## 300708 till 03:30:00 Возможным решением данной проблемы может служить тонкая настройка FTP-сервера таким образом, чтобы передаваемый IP-адрес для подключения в "пассивном" режиме различался для клиентов из разных сетей. Иногда оказывается полезным держать несколько FTP-серверов на одной машине и "разруливать" подключения к 21-му порту (ftp) с помощью средств файрвола. При настройке маршрутизатора хорошую службу может сослужить специальный модуль ip_nat_ftp к iptables.
Line 137: Line 98:
|| 20 || 1 || 1 || 1 || || 1 || PavelSutyrin, DmitryChistikov, VsevolodKrishchenko || || || || 40 || 1 || 1 || 1 || || 1 || PavelSutyrin, DmitryChistikov, VsevolodKrishchenko || || ||

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

Установка

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

# apt-get install vsftpd anonftp

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

$ rpmquery -l anonftp
/var/ftp

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

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

# 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-серверу:

$ 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-сервера. В случае, когда аппаратная конфигурация используемой в качестве сервера машины не слишком "продвинута", а компьютеры-клиенты образуют несколько различных категорий, может возникнуть необходимость использовать специальные возможности таких программ. Это может быть разделение приоритетов в соответствии с IP-адресом клиента, ограничения на число одновременных соединений, защита от множественного скачивания (программами типа ReGet и пр.). В случае же, когда такие возможности не требуются, разумно использовать более "легковесные" программы.

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

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

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


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

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

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

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

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

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

Level

Maintainer

Start date

End date

40

1

1

1

1

PavelSutyrin, DmitryChistikov, VsevolodKrishchenko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

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