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

Поставим пакет vsftpd, а также пакет anonftp. Разделение такое затем, что в репозитории есть много FTP-серверов (proftpd, vsftpd, bsdftp). У них есть нечто общее: дерево каталогов, которое нужно развернуть в домашнем каталоге этого FTP-сервера (/var/ftp, и чтобы каждый раз его не создавать, оно было вынесено в отдельный пакет. К тому же, в ALTLinux, уделяющем много внимания безопасности, есть много разных закладок для защиты от дурака, чтобы человек не поставил себе ftp-сервер, а тот сразу заработал и открыл всем доступ на запись. Поэтому нужно поставить пакет anonftp, он состоит из одного файлаa /var/ftp, при появлении этого файла ftp начинает хотя бы нормально работать. но vsftpd работает через метадемон inted.

Утилита chkconfig управляет одновременно и системными службами в стиле start/stop-ных скриптов (см. учебник), и настройками тех служб, которые цепляются к метадемону. Такой унверсальный интерфейс с единым синтаксисом.

Посмотрим, какие включены службы

# 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

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

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

$chkconfig xinetd on

$chkconfig vsftpd on

only_from 127.0.0.1

Это если вы понаставили служб, которые пользуются inetd и повключали их, то с ними соединиться можно будет только с адресе 127.0.0.1.

Нужно не забыть перезапустить xinitd, чтобы он перечитал конфиги. Он умный: при старте, если видит, что в нём нет разрешенных служб, молча останавливается.

можно зайти на ftp:

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

Сообщений об ошибках не было, а файлов на сервере пока никаких нет. Вообще, Если места на жестком диске мало (20-30 Гб), и режим работы компьютера щадящий (включил-поработал-выключил, а не круглосуточно включенный сервер с файлами), то можно не думать о разбиении диска, а весь диск сделать одним корневым разделом.

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

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

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

Использовать 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-сервер сидит не на внешнем ip-адресе, а находится за межсетевым экраном, на котором включена трансляция адресов (NAT), то есть реальный шанс, что соединения к нему не будут работать либо из внешней, либо из внутренней сети.


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

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

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

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

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

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

Level

Maintainer

Start date

End date

20

1

1

1

1

PavelSutyrin, DmitryChistikov, VsevolodKrishchenko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex