|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
11Настройка FTP Сервер FTP (File Transfer Protocol) используется для обмена файлами между системами. Обычно на FTP-сервере размещают большое количество файлов, например, какой-нибудь программный комплекс или набор музыкальных файлов. Примером FTP-сервера может послужить сервер ftp://ftp.redhat.com. На этом сервере вы можете найти как саму операционную систему Linux Red Hat, так и обновления ее пакетов, а также дополнительные программы. Доступ к серверу FTP осуществляется с помощью FTP-клиента. В любой сетевой операционной системе есть простейший FTP-клиент — программа ftp (см. п. 19.3). Обычно для того, чтобы начать работу с FTP-сервером, вы должны зарегистрироваться на нем, другими словами, ввести имя пользователя и пароль. После регистрации вы получаете доступ к своему каталогу. Над файлами и каталогами вы можете производить обычные операции: создание, удаление, копирование, перемещение, переименование. Как правило, при выполнении операции копирования вы либо копируете файлы на сервер (команда put) — загружаете на сервер, либо копируете файлы с сервера на свою локальную машину (команда get) — скачиваете с сервера. Существуют также так называемые общедоступные (анонимные) серверы, к которым имеют доступ все пользователи. На таких серверах размещается свободно распространяемое программное обеспечение, обновление программ, драйверы, документация и прочая публичная информация. Для регистрации на таких серверах обычно нужно использовать имя пользователя anonymous, а в качестве пароля — адрес электронной почты. Создание анонимного сервера рассмотрено в пункте 11.3. В главе 19.3 рассмотрены все команды клиента FTP. Сейчас же просто рассмотрим регистрацию пользователя на сервере и что при этом происходит. Допустим, имеется некий FTP-сервер, к которому могут подключаться не только обычные пользователи, но и анонимные (см. рис. 11.1). Рис. 11.1. FTP-клиент в окне терминала Перед самой регистрацией сначала FTP-клиент сообщит, что соединение с сервером FTP установлено, а затем вас поприветствует сам сервер — сообщение 220: ProFTPD 1.2.0 Server. Далее, в ответ на приглашение Name введите имя пользователя (пусть будет den). Так как пользователь не является анонимным, сервер сообщит вам, что нужно ввести пароль для этого пользователя. Правильно введя пароль, вы успешно зарегистрируетесь на сервере, о чем вам сообщит сервер — сообщение 230. Также сервер вам сообщит, что удаленной системой является UNIX и что сейчас используется двоичный (binary) режим передачи файлов. Я не рекомендую изменять этот режим на текстовый, потому что при передаче нетекстовой информации, например, пакетов RPM, двоичные файлы будут повреждены. 11.1. Сервер FTP wu-ftpdСервер FTP wu-ftpd является разработкой Вашингтонского университета. Этот сервер очень распространен и входит в состав практически каждого дистрибутива Linux. Для его установки нужно установить пакет wu-ftpd. Как и любой другой сервер, wu-fptd может быть постоянно загруженным в память или вызываться суперсервером inetd по мере необходимости. Первый режим называется standalone и применяется, как правило, если FTP-серверу нужно часто обрабатывать запросы клиентов. Второй режим используется в целях экономии памяти и если нагрузка на FTP-сервер не очень велика. Если вы решите настроить работу сервера FTP во втором режиме, в файле inetd.conf должна быть соответствующая запись (см. листинг 11.1) Листинг 11.1. Фрагмент файла inetd.confftp stream top nowait root/usr/sbin/tcpd in.ftpd -l -a Из листинга 11.1 видно, что FTP-сервер вызывается не напрямую, а через демон tcpd, чем обеспечивается дополнительная безопасность. В том случае, если вы используете новую версию inetd — xinetd, формат записи у вас будет другой (см. листинг 11.2). Листинг 11.2. Фрагмент файла xinetd.confservice ftp { socket_type = stream wait = no user = root server = /usr/etc/in.ftpd server_args = -l instances = 4 log_on_success += DURATION USERID log_on_fallure += USERID access_times = 2:00-8:59 12:00-23:59 nice = 10 } Опция -l сервера FTP регистрирует все сеансы FTP в файле syslog. Кроме этой опции, сервер ftp имеет ряд других опций, указанных в табл. 11.1. Опции командной строки сервера wu-ftpd Таблица 11.1
Сервер wu-ftp использует пять файлов конфигурации: ftpaccess, ftphosts, ftpusers, ftpgroups, ftpconversions. В этой главе мы подробно рассмотрим каждый из них. 11.1.1. Файл ftpaccessОсновным файлом конфигурации является ftpaccess. Как и другие файлы конфигурации, он располагается в каталоге /etc. Пример файла /etc/ftpaccess приведен в листинге 11.3. Листинг 11.3. Пример файла ftpaccessclass all real,guest,anonymous * email rootdlocalhost loginfails 3 readme README* login readme README* cwd=* message /welcome.msg login message .message cwd=* compress yes all tar yes all chmod no guest,anonymous delete no guest,anonymous overwrite no guest, anonymous rename no guest, anonymous log transfers anonymous,real inbound,outbound shutdown /etc/shutmsg passwd-check rfc822 warn Файл ftpaccess определяет возможности доступа к FTP-серверу, которые будут иметь различные группы пользователей. В этом файле задаются параметры доступа, разрешенные операции, виды регистрируемых событий. Директива class определяет класс пользователей, которые будут иметь доступ к серверу FTP. В листинге 11.3 задан класс all, который состоит из следующих типов пользователей: настоящие (real), гости (guest), анонимные (anonymous). Под настоящими пользователями подразумеваются те, которые зарегистрированы на сервере, то есть их учетные записи хранятся в файле /etc/passwd. С помощью директивы email можно указать адрес администратора сервера. Директива loginfails задает максимальное количество попыток регистрации. Если это количество превышено, пользователь автоматически будет отключен. Значение по умолчанию для этой директивы равно 5. Директива message определяет файл и событие, когда он должен быть отображен. Например, можно создать несколько файлов, один из которых будет отображаться при регистрации пользователя, а другой — при входе его в определенный каталог. Директивы chmod и delete определяют, могут ли пользователи использовать одноименные команды FTP. А директивы overwrite или delete разрешают или запрещают определенным пользователям перезаписывать или удалять файлы на сервере. В приведенном примере (см. листинг 11.3) пользователи классов guest и anonymous не могут выполнять ни одну из упомянутых операций. Общие директивы сервера wu-ftpd перечислены в табл. 11.2. Директивы сервера wu-ftpd Таблица 11.2
Кроме общих директив, сервер wu-ftp имеет директивы, которые управляют правами доступа. Директивы прав доступа определяют, какие операции могут выполнять пользователи того или иного типа. Эти директивы указаны в табл. 11.3. Директивы прав доступа Таблица 11.3
11.1.2. Файл ftphostsФайл ftphosts используется для разрешения или запрещения доступа определенных пользователей с указанных узлов. Например, вы можете разрешить доступ пользователю admin только с компьютера admm.domain.ru и запретить со всех остальных. А для других пользователей разрешить доступ со всех компьютеров. Таким образом, в файле могут быть записи двух видов: разрешающие и запрещающие. Формат записей в файле ftphosts следующий: allow|deny user hosts [host…] Разрешающая запись allow разрешает пользователю регистрироваться с хостов, указанных в списке hosts, но запрещает регистрацию со всех остальных. Запись deny, наоборот, запрещает доступ с определенных хостов, но разрешает со всех остальных. В листинге 11.4 приведен пример файла ftphosts. Листинг 11.4. Пример файла ftphostsallow admin 192.168.1.1 deny user 192.168.1.2 192.168.1.3 В приведенном примере пользователь admin может регистрироваться на сервере только с компьютера с IP-адресом 192.168.1.1. Если этот пользователь попробует зарегистрироваться с другого компьютера, то ему будет отказано в доступе. Пользователю user запрещено регистрироваться с компьютеров 192.168.1.2 и 192.168.1.3, но он может зарегистрироваться с любого другого компьютера сети. 11.1.3. Файл ftpusersФайл ftpusers содержит список пользователей, которым запрещено использовать команду ftp. Эти пользователи не могут зарегистрироваться на сервере. При попытке регистрации будет выведено сообщение об ошибке Login Incorrect, даже если пользователь ввел правильный пароль. Из соображений безопасности этот файл должен содержать хотя бы имена пользователей root, bin, news, uucp. Пустые строки, а также строки, начинающиеся с символа #, игнорируются. Полностью корректный с точки зрения безопасности файл представлен в листинге 11.5. Листинг 11.5. Файл ftpusersroot bin daemon adm IP sync shutdown halt news uucp operator games nobody 11.1.4. Файл ftpgroupsФайл ftpgroups содержит специальные пароли, с помощью которых пользователи FTP будут рассматриваться как пользователи определенной группы. Такое разрешение получит пользователь, для которого запись в файле ftpgroups содержит выражение yes. Более подробную информацию об этом файле вы можете получить в справочной системе, введя команду man ftpgroups. 11.1.5. Файл ftpconversionsВ файле ftpconversions заданы операции сжатия, разрешенные пользователям для выполнения во время сеанса FTP. Стандартный файл ftpconversions представлен в листинге 11.6. Листинг 11.6. Файл ftpconversions:.Z: : :/bin/compress –d –с %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS : : :.Z:/bin/compress. –c %s:T_REG:0_COMPRESS:COMPRESS :.gz: : :/bin/gzip –cd %s:T_REG|T_ASCII:0_UNCOMPRESSrGUNZIP : :.gz:/bin/gzip –9 –c %s:T_REG:0_COMPRESS:GZIP : :. tar :/bin/tar –c –f – %s:T_REG|T_DIR:O_TAR:TAR : :.tar.Z :/bin/tar –c –Z –f –%s:T_REG|T_DIR:0_COMPRESS|0_TAR:TAR+COMPRESS : :.tar.gz:/bin/tar –c –z –f –%s:T_REG|T_DIR:0_COMPRESS|0_TAR:TAR+GZIP Каждая запись этого файла состоит из восьми полей. Поля разделяются с помощью символа двоеточия. Эти поля содержат префиксы и постфиксы удаления и добавления, внешнюю команду, тип операции и описание. Например, сжатый программой gzip файл должен иметь имя с суффиксом gz. Чтобы к имени файла был добавлен суффикс gz, запись в файле ftpconversions должна иметь постфикс gz. Я специально не использую здесь термин «расширение», так как он отсутствует в терминологии UNIX, потому что файлы в ОС Linux не имеют расширения. 11.1.6. Файл xferlogФайл xferlog является журналом сервера FTP, в который записываются все транзакции, которые были произведены в результате работы пользователей. С помощью опций -о и –i сервера FTP можно выбрать тип транзакций, записываемых в журнал (см. табл. 11.1).
Рассмотрим листинг 11.7, в котором представлен фрагмент файла xferlog. Листинг 11.7. Фрагмент файла xferlogWed Jan 9 11:49:35 2002 1 localhost.localdomain 1490 /home/den/vmware.html a _ o r den ftp 0 * с Wed Jan 9 11:50:08 2002 1 localhost.localdomain 281 /home/den/w.out a _ o r den ftp 0 * с Wed Jan 9 11:50:15 2002 1 localhost.localdomain 281 /home/den/w.out a _ i r den ftp 0 * c- Wed Jan 9 11:52:08 2002 1 localhost.localdomain 888 /home/den/ftphosts.html b _ i r den ftp 0 * с Теперь проанализируем записи. Из первой записи вы можете узнать, что пользователь den был зарегистрирован с удаленного узла localhost.localdomain. Начало передачи файла /home/den/vmware.html произошло в среду, 9 января 2002 года в 11:49. Общее время передачи — одна секунда. Общий объем переданной информации составляет 1490 байт. Для передачи файла использовался режим ASCII (а), не было произведено никаких специальных операций (_). Файл vmware.html пользователь загружал с сервера, на что указывает направление передачи (о). Пользователь den является реальным (зарегистрированным) пользователем системы (r). Название службы, которая производила операцию — ftp. Теперь рассмотрим четвертую запись. Тот же пользователь den передал на сервер файл ftphosts.html. Направление передачи — на сервер (i). Режим передачи — двоичный (b). Вторая и третья записи сообщают о загрузке с сервера и на сервер файла w.out в текстовом (а) режиме. Тип пользователя обозначается символом возле имени пользователя. Символ r обозначает зарегистрированного в системе пользователя, у которого есть своя запись в файле /etc/passwd. Символ g означает гостевую регистрацию, а символ а — анонимную. Направление передачи, как вы уже догадались, обозначается символами о — прием файла пользователем и i — прием файла сервером. Остается только отметить, что файл xferlog используется обоими серверами FTP — wu-ftpd и ProFTPD. 11.2.СерверProFTPАльтернативой, и, на мой взгляд, достаточно хорошей, сервера wu-ftpd является сервер ProFTPD. Он намного проще в плане конфигурирования, чем сервер wu-ftpd, и обладает достаточно гибкими возможностями. Для его установки достаточно установить пакет proftpd. Подобно серверу wu-ftpd, ProFTPD может запускаться автоматически при запуске системы или вызываться суперсервером при наличии запроса на установку соединения. Первый режим называется standalone. Сервер ProFTPD может вызываться с параметрами, указанными в табл. 11.4. Параметры сервера ProFTPD Таблица 11.4
11.2.1. Файл /etc/proftpd.confСервер ProFTPD использует всего один файл конфигурации. — /etc/proftpd.conf, который по своей структуре чем-то похож на файл конфигурации Web-сервера Apache (а именно — директивами конфигурирования). В листинге 11.8 представлен простейший файл конфигурации сервера ProFTPD. Листинг 11.8. Пример файла конфигурации /etc/proftpd.conf# Этот файл устанавливает один сервер и одну # учетную запись ServerName "My ProFTPD server" ServerType standalone DefaultServer on # Используем стандартный порт Port 21 Umask 022 MaxInstances 30 # Пользователь и группа, обслуживающие сервер User nobody Group nobody # Параметры корневого каталога. Блочная директива Directory <Directory /*> # Директива, определяющая параметр AllowOverwrite AllowOverwrite on </Directory> Директивы конфигурации делятся на две группы: директивы, определяющие некоторые параметры, и блочные директивы. Блочные директивы конфигурирования похожи на тэги языка HTML. С помощью блочных директив задаются блоки, содержащие директивы, которые определяют параметры (см. листинг 11.8). При этом используются начальные и конечные блочные директивы. Конечная директива имеет то же имя, что и начальная, но с наклонной чертой в начале. Например, начальная директива <Directory /*>, а конечная — </Directory> (см. листинг 11.8). Действия каждой пары директив распространяются только на блок, который они задают (который расположен между ними). Директива <Directory> определяет свойства какого-нибудь каталога. В вышеприведенном листинге (листинг 11.8) определяются свойства корневого каталога. В табл. 11.5 представлены все директивы файла конфигурации сервера ProFTPD. Директивы файла конфигурации сервера ProFTPD Таблица 11.5
11.2.2. Ограничение доступаЯ считаю необходимым подробно рассмотреть блочную директиву Limit. Эта директива определяет вид и параметры доступа к тому или иному каталогу. Рассмотрим листинг 11.9. Листинг 11.9. Пример использования директивы Limit<Directory incoming> <Limit WRITE> AllowAll </Limit> <Limit READ> DenyAll </Limit> </Directory> Директива Directory определяет свойства каталога incoming, а директива Limit задает вид доступа к этому каталогу. Команда WRITE директивы Limit вместе с директивой AllowAll разрешает всем пользователям записывать информацию в этот каталог. Команда READ директивы Limit задает ограничение на чтение этого каталога. В рассматриваемом случае чтение запрещено для всех пользователей. Кроме команд WRITE и READ в директиве Limit можно задавать команды STOR и LOGIN (см. табл. 11.6). В блоке Limit можно задавать директивы Allow, AllowAll, AllowGroup, AllowUser, Deny, DenyAll, DenyUser (см. табл. 11.5). Например, в листинге 11.10 запрещается доступ всем пользователям, кроме den. Пользователь den может регистрироваться со всех компьютеров, кроме компьютера с IP-адресом 111.111.111.111. Также запрещена регистрация из сети 192.168.2.0 Команды директивы Limit, ограничивающие права доступа Таблица 11.6
<Limit LOGIN> DenyAll AllowUser den Deny from 111.111.111.111 Deny from 192.168.2. </Limit> 11.2.3. Файл .ftpaccessДля конфигурирования отдельного каталога может также использоваться файл .ftpaccess, который расположен в этом каталоге. В нем содержатся такие же директивы, что и в файле proftpd.conf, но файл .ftpaccess имеет приоритет перед файлом proftpd.conf. 11.3. Организация анонимного FТР-сервераАнонимный FTP-сервер можно построить с помощью wu-ftpd, установив пакет anonftp. Этот пакет нельзя использовать вместе с сервером ProFTPD. Пакет anonoftp поставляется в составе большинства дистрибутивов. Сейчас рассмотрим, как организовать анонимный FTP-сервер с помощью сервера ProFTPD. Для организации анонимного доступа сервер ProFTPD имеет директиву Anonymous. При этом в блок Anonymous нужно поместить директивы, конфигурирующие анонимную службу. В самой же директиве Anonymous необходимо указать каталог, который будет использоваться в качестве корневого для анонимной службы. Сервер ProFTPD выполнит для этого каталога команду enroot, превращая этот каталог в корневой для удаленного пользователя. Перед тем, как сделать это, сервер ProFTPD прочитает все необходимые ему файлы конфигурации из реального каталога /etc. При анонимной регистрации, по умолчанию в качестве имени пользователя указывается anonymous, а вместо пароля — адрес электронной почты пользователя. Вы же можете изменить параметры анонимного доступа, добавив проверку пароля для анонимного пользователя с помощью директивы AnonRequirePassword (см. табл 11.5). В следующем примере представлен типичный блок Anonymous, подходящий для большинства анонимных серверов (см. листинг 11.11.) Листинг 11.11. Типичный блок Anonymous<Anonymous /var/ftp> User ftp Group ftp UserAlias anonymous ftp RequireValidShell off <Directory *> <Limit WRITE> DenyAll </Limit> <Limit STOR> AllowAll </Limit> </Directory> </Anonymous> Директивы User и Group задают имя пользователя для анонимного доступа. В обоих случаях применяется имя ftp. Для имени ftp определяется псевдоним anonymous. Вместо пароля нужно указать адрес электронной почты. Директива RequireValidShell отключает проверку командного интерпретатора пользователя. По умолчанию сервер ProFTPD ищет список допустимых интерпретаторов в файле /etc/shells. Если используемый пользователем интерпретатор не указан в файле /etc/shells, то соединение будет разорвано. Директива RequireValidShell off отключает такую проверку. Директива <Directory *> определяет свойства для всех каталогов. При этом всем пользователям запрещено записывать файлы на сервер, но разрешено сохранять файлы сервера на свой локальный компьютер. Желательно также добавить в блок Anonymous директиву MaxClients, которая указывает максимальное число клиентов. Нужно учитывать нагрузку на сервер и пропускной канал для определения максимального числа анонимных клиентов. Настоящих пользователей сервера FTP по возможности не следует ограничивать, в отличие от анонимных. При малоскоростном канале связи, например, 33 Кбит/с, установите маленькое максимальное количество анонимных клиентов, например, 5 или даже 3. Конечно, число клиентов также зависит от объема информации, расположенной на сервере. Если размеры файлов небольшие, например, документация, число клиентов можно установить несколько большим (10…15). 11.4. Вспомогательные программыПри работе с серверами wu-ftpd и ProFTPD вы можете использовать программы ftpshut, ftpwho, ftpcount. Инструментальные средства обоих серверов имеют похожие опции, но вспомогательные программы для ProFTPD выводят больше полезной информации. Программа ftpshut останавливает сервер. Программа ftpwho выводит информацию о пользователях, подключенных к вашему серверу. Программа ftpcount сообщает о количестве установленных соединений. Я рекомендую использовать расширенный вывод программы ftpwho. В этом режиме предоставляется больше информации (см. листинг 11.12). Листинг 11.12. Результат работы программы ftpwho# ftpwho –v Master proftpd process 759: 1113 2m55s proftpd: ftp - localhost.localdomain: anonymous/den@den.com: IDLE (host: localhost.localdomain [127.0.0.1]) (cwd: /) 1150 0m20s proftpd: den - localhost.localdomain: IDLE (host: localhost.localdomain [127.0.0.1]) (cwd: /home/den) Service class 2 users Программа ftpcount только сообщает об общем количестве пользователей (см. листинг 11.13). Листинг 11.13. Результат работы программы ftpcountMaster proftpd process 759: Service class 2 users 11.5. Виртуальный узел FTPВ этом разделе книги пойдет речь о конфигурировании виртуального FTP-сервера. Создание виртуального FTP-сервера будет происходить с использованием сервера ProFTP. Для начала определимся, что такое виртуальный сервер? Как и подразумевает слово «виртуальный», такой сервер не будет существовать физически, но пользователь будет считать, что он работает с реальным сервером. ОС Linux может поддерживать несколько IP-адресов, благодаря чему имеется возможность создать виртуальные узлы. Если вы располагаете дополнительными IP-адресами, то они как раз могут использоваться для создания виртуальных узлов. При конфигурировании виртуальных FTP-узлов каждому из них нужно присвоить отдельный IP-адрес. Виртуальные FTP-узлы нужны, если вы, например, хотите организовать несколько узлов FTP, один — для одной рабочей группы, другой — для второй, третий может быть анонимным и так далее. Обслуживать сразу несколько FTP-узлов позволяет все тот же демон proftpd. Настройка виртуального FTP-узла очень похожа на настройку виртуального Web-сервера, настройка которого будет рассмотрена в следующей главе. Даже используется одна и та же директива VirtualHost. При этом, для конфигурирования виртуального FTP-сервера, в файл proftpd.conf нужно добавить директиву VirtualHost, содержащую IP-адрес (см. листинг 11.14). Листинг 11.14. Директива VirtualHost<VirtualHost 192.168.1.5> ServerName "Virtual FTP Server" </VirtualHost> В блоке VirtualHost можно использовать другие директивы, например, директиву Anonymous, которая создаст гостевой узел. Можно также задать каталог или порт (см. листинг 11.15). Листинг 11.15. Пример использования директивы VirtualHost<VirtualHost ftp.library.com> ServerName "Online library" MaxClients 15 MaxLoginAttempts 1 DeferWelcome on <Limit LOGIN> Allow from 192.168.1 Denyfromall </Limit> <Limit WRITE> AllowUser libadmin DenyAll </Limit> <Anonymous /var/ftp/library/books> User library Group library AnonRequirePassword on </Anonymous> <Anonymous /var/ftp/library> User ftp Group ftp UserAlias anonymous ftp </Anonymous> </VirtualHost> В листинге 11.15 приведена конфигурация виртуального сервера ftp.library.com. В директиве VirtualHost используется доменное имя, которое должно быть прописано в сервере DNS. IP-адрес должен указывать на узел сети, на котором запущен демон ProFTPD. В листинге 11.15 также конфигурируются две анонимных учетных записи — library и ftp. Причем учетная запись library требует ввода пароля при регистрации. Пароль должен совпадать с паролем того пользователя, который запустил демон. Доступ к виртуальному серверу разрешен только для подсети 192.168.1.0. Записывать данные на сервер может только пользователь libadmin. Рис. 11.2. FTP-клиент gFTP В качестве FTP-клиента для X Window я рекомендую использовать программу gFTP, которая обладает довольно удобным интерфейсом и богатыми функциями. Использование gFTP настолько простое, что я не буду останавливаться на его рассмотрении (см. рис. 11.2). |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|