marți, 23 februarie 2016

freebsd как добавить ftp пользователя

FreeBSD добавление ftp пользователя

Меньше воды, только кратко о том, как добавить пользователя с нужной домашней директорией

Как проще всего добавить пользователя?

Используйте команду adduser. Для выполнения более сложных операций обратитесь к команде pw .

Чтобы удалить пользователя, используйте команду rmuser. И, снова повторимся, команда pw тоже будет работать.

Пример: добавим пользователя mynewuser в группу site.ru. с домашней директорией /usr/home/ site.ru /templates/

FreeBSD настройка ftpd.

Настраиваем штатный ftpd для FreeBSD 9.0 RELEASE.

Добавляем группу и пользователя ftp. Открываем файл /etc/group — добавляем группу ftp.

Файл /etc/master.passwd — добавляем пользователя ftp.

Обновляем базу пользователей вручную.

Создаем домашний каталог пользователя для анонимного ftp доступа если необходимо.

Меняем владельца и права.

Добавляем в /etc/rc.conf следующие строчки для запуска в режиме демона.

Запускаем.

проверяем что получилось.

Второй способ — через inetd — по факту не используется. В /etc/rc.conf добавляем

и раскоментируем строчку в файле /etc/inetd.conf

и даем команду

Результат — мы настроили анонимный FTP сервер, анонимный пользователь может только читать, логи подключений пишутся в файл по умолчанию /var/log/xferlog.

Дополнительные настройки.

/etc/ftpwelcome – приветственное сообщение выводимое сервером до ввода логина и пароля.

/etc/ftpmotd – приветственное сообщение, выводимое при удачном входе на сервер.

/etc/ftphosts – настройка виртуальных хостов.

/etc/ftpchroot — настройка chroot для пользователей. Например для пользователя test делать chroot в каталог /wwwroot/test/html, для всех пользователей группы ftptest — chroot в каталог /wwwroot/test, для пользователей группы www — chroot в свои домашние каталоги.

Незабываем про настройку файервола если используется, дополнительно можно воспользоватся настройками в файле /etc/hosts.allow для разрешения/запрещения коннектов с тех или иных адресов.

Но помним — проблемы с настройкой пассивного режима работы — актуально если необходимо обслуживать соединения из-за NAT.

Дополнительные ключи ftpd.

-4 Когда указана опция -D, принимать соединения через сокет AF_INET.

-6 Когда указана опция -D, принимать соединения через сокет AF_INET6.

-8 Разрешить прозрачный режим UTF-8. Клиенты, совместимые со стандартом RFC 2640 оповещаются об использовании сервером символов в кодировке UTF-8. Эта опция не включает любые перекодировки имен файлов сервера; это работает для имен файлов сервера, закодированных в UTF-8. При выкачке (upload) файлов на FTP включается для клиентов, совместимых с RFC 2640, перекодировка из локальной кодировки клиента в UTF-8. FTP команды и собственные сообщения ftpd в любом случае кодируются в ASCII, который является подмножеством UTF-8. Следовательно, здесь не нужна перекодировка на сервере.

-A Разрешается только анонимный доступ к ftp.

-a Когда указана опция -D, соединения принимаются только от указанного адреса.

-D Когда указана эта опция, ftpd отсоединяется от консоли и становится демоном, принимающим соединения через порт FTP и порождающим (forking) дочерние процессы для поддержки запросов. Это обеспечивает меньшие траты ресурсов в сравнении с запуском ftpd через inetd(8) и полезно для применения на нагруженных серверах для уменьшения нагрузки.

-d Отладочная информация будет записываться в лог с изпользованием LOG_FTP.

-E Запретить команду EPSV. Это хорошо применять для серверов за файерволом.

-h Запрет вывода в сообщениях сервера информации, специфичной для хоста, такой как версия ПО сервера или имя хоста.

-l Каждая успешная и ошибочная ftp(1) сессия записывается через syslog LOG_FTP. Если эта опция указана дважды, то записыватся команды retrieve (get), store (put), append, delete, make directory, remove directory и операции rename вместе с именами файлов и аргументами. По умолчанию, syslogd(8) записывает эти сообщения в /var/log/xferlog.

-M Предотвращает создание анонимными (anonymous) пользователями директорий.

-m Разрешает анонимным пользователям перезаписывать или модифицировать существующие файлы, если это разрешено правами файловой системы. По умолчанию anonymous не может модифицировать существующие файлы; в частности, файлы для выгрузки на сервер (upload) должны создаваться с уникальными именами.

-O Переводит сервер а режим write-only только для anonymous. Команда RETR запрещена для anonymous, что предотвращает анонимные загрузки (downloads) с сервера. Не дает эффекта, если также указана опция -o.

-o Переводит сервер а режим write-only. Команда RETR запрещена для всех, что предотвращает загрузку информации с сервера.

-P Когда указана опция -D, принимает соединения на указанном порту, указанном как числовая величина или имя сервиса, вместо порта «ftp» по умолчанию.

-p Когда указана опция -D, записывает файл process ID в указанный файл вместо pid-файла по умолчанию /var/run/ftpd.pid.

-R Когда указана эта опция, ftpd возвращается к историческому поведению по отношения к проверкам безопасности операций пользователей и ограничениям по запросам PORT. В настоящий момент ftpd поддерживает только команды PORT, направленные на непривилегированные порты для удаленных пользователей хоста (которые нарушают спецификацию протокола FTP, однако закрывают некоторые дыры в безопасности).

-r Переводит сервер с режим read-only (только для чтения). Все команды, которые могут модифицировать файловую систему, запрещены.

-S Когда указана эта опция, ftpd пишет в лог /var/log/ftpd все загрузки файлов anonymous, если этот файл лога существует.

-T Клиент может также запрашивать отличеющийся период таймаута; максимально разрешенный период таймаута, который может быть установлен, задается опцией -T в секундах. Лимит по умолчанию 2 часа.

-t Таймаут неактивности в секундах (по умолчанию 15 минут).

-U Эта опция инструктирует ftpd использовать порты данных в диапазоне IP_PORTRANGE_DEFAULT вместо IP_PORTRANGE_HIGH. Это изменение полезно для некоторых специфичных конфигураций файерволла; см. ip(4) для дополнительной информации.

Примите к сведению, что эта опция является виртуальной и не работает на FreeBSD 5.0 выше; оба диапазона портов на них по умолчанию идентичны.

-u Маска создания режима файла по умолчанию (file creation mode mask) устанавливается в umask, которая ожидается в восьмеричной числовой величине. См. umask(2) для деталей. Эта опция может быть переустановлена (запрещена) через login.conf(5).

-v Синоним -d.

-W Не записывать в лог /var/log/wtmp сессии FTP.

Создание ftp пользователя на (Linux/FreeBSD) без панели управления ISPmanager

По-умолчанию, при установке ОС Linux / FreeBSD из любых шаблонов, на сервере доступен только суперпользователь root. Подключение с данными root по протоколу FTP невозможно в целях безопасности (используется незашифрованный пароль). При установке шаблонов ОС типа minimal сервер FTP также не будет включен в установочный пакет. Если у Вас возникла необходимость быстрой ручной настройки нового ftp пользователя при отсутствии на сервере панели управления ISPmanager, нужно сделать следующее:

Установка proftpd (если proftpd уже установлен, пропустите этот шаг):

Системы Debian

Ограничение ftp пользователей пределами домашнего каталога

Данная статья подразумевает работу конфигурацией ProFTPd "по-умолчанию", а в этом случае пользователь может выходить за пределы своего домашнего каталога и, хотя прав на работу с другими папками у него, скорее всего, нет, но при недостаточно строгой конфигурации сервера это может представлять угрозу безопасности. Решить эту проблему можно добавив одну строку в файл proftpd.conf:

Добавить ее можно в конец файла. После сохранения, перезапустите ftp сервер:

Создание нового ftp пользователя

Простым ftp пользователям нет необходимости иметь доступ к командной оболочке. Перед тем, как приступите к созданию новых пользователей, выполните команду:

Создайте нового пользователя

Командами выше мы создали пользователя (имя_пользователя нужно заменить на не занятое имя) и соответствующую группу, назначили и создали (ключ -m можно опустить, если каталог уже существует) домашний каталог /home/имя_папки и выбрали /bin/false в качестве командной оболочки пользователя, тем самым ее отключив в целях безопасности. Командой passwd мы создали пользователю необходимый пароль.

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

Дополнительная информация

Доступ к командной оболочке (shell)

Если Вы все-таки хотите предоставлять пользователю доступ к командной оболочке. то указывайте путь до любой действующей вместо /bin/false, например:

Пользователям обычного протокола ftp не нужен доступ к shell, поэтому, безопаснее его не предоставлять.

Безопасник

Конфигурирование FTP-сервера FreeBSD

Общие сведения о FTP

Протоколы FTP и HTTP могут показаться очень похожими. Оба этих протокола позволяют пересылать файлы, поддерживают аутентификацию пользователей и широко используются при работе в Сети: двоичные и мультимедийные файлы можно загрузить с Web-страниц как по протоколу http://, так и по ftp://. На самом деле эти протоколы были разработаны с разной целью, поэтому наборы поддерживаемых ими свойств значительно отличаются. В табл. 27.1 показаны основные различия в этих протоколах.

Двустороннее (Dual connection) Одностороннее (Single connection)

Оба действия Загрузки

Модель соединения

Предназначен в первую очередь для загрузки/выгрузки файлов

Поддерживает тип содержимого (заголовки MIME)

Поддерживает операции с файловой Да Нет

системой (mkdir, rm, rename и т.д.)

Наибольшее различие между FTP и HTTP заключается в следующем: FTP требует установления сеанса связи. Иначе говоря, между клиентом и сервером устанавливается полноценное двустороннее соединение, команды пересылаются в обе стороны и в конце клиент прерывает сеанс со своей стороны. (Вспомните, что HTTP - это протокол, который не поддерживает сеансы, т.е. одиночный запрос, за которым следует одиночный или "конвейерный" ответ.) FTP не ограничивается одним соединением. Фактически, это протокол с двумя соединениями: одно предназначено для двусторонней пересылки команд и статусных сообщений (control connection - управляющее соединение), а второе - непосредственно для пересылки данных (data connection - соединение для передачи данных). Схема FTP-соединения представлена на рис. 27.1.

FTP-клиент (команда ftp, включенная в состав FreeBSD) открывает управляющее соединение с FTP-сервером на 21-ом порту. Соединение остается открытым на протяжении всего сеанса. Когда пользователь вводит команду (например, Is или get picturel.gif), клиент и сервер договариваются о паре TCP-портов, между которыми открывается соединение для передачи данных, которое существует только на время передачи листинга или файла, а затем закрывается. Отдельное соединение для передачи данных открывается при каждой пересылке. Полный сеанс, типичный для работы с FTP, приведен в листинге 27.1.

Листинг 27.1 FTP-сеанс из командной строки

# ftp spots.somewhere.com Connected to spots.somewhere.com.

220 spots.somewhere.com FTP server (Version 6.00LS) ready.

Name (spots.somewhere.com:frank):

331 Password required for frank.

230 User frank logged in.

Remote system type is UNIX.

Using binary mode to transfer files.

150 Opening ASCII mode data connection for '/bin/Is'.

226 Transfer complete.

ftp> get picturel.gif

local: picturel.gif remote: picturel.gif

150 Opening BINARY mode data connection for 'picturel.gif (52427 bytes).

100% |**************************************************| 52427 00:00 ETA

226 Transfer complete.

52427 bytes received in 4.99 seconds (10.25 KB/s)

ftp> quit

221 Goodbye.

Первая часть соединения проводит аутентификацию имени пользователя и пароля так же, как это происходит при Telnet-соединении. В отличие от аутентификации пользователя HTTP, которая, фактически, входит в функции Apache и не является частью протокола HTTP, аутентификация пользователей FTP использует информацию об учетных записях пользователей на машине, работающей как FTP-сервер. В этом смысле FTP-соединение очень похоже на Telnet. Чтобы зарегистрироваться в системе по протоколу FTP, пользователю необходимо или ввести корректную ин-формацию о своей учетной записи (имя и пароль) или же воспользоваться аноним-ным FTP (anonymous FTP), если сервер допускает его использование.

F3T поддерживает набор команд, во многом похожих на команды интерпретато-ра: Is, cd, mkdir, pwd и т.д. Эти команды помогают перемещаться по структуре ката-логов и изменять удаленные файлы так же, как если бы они находились на локаль-ной машине. Для перехода к каталогу на локальной машине используется команда led. Она полезна тогда, когда файл необходимо загрузить не в тот каталог, из кото-рого изначально был запущен FTP-клиент. Пересылкой файлов управляют команды put (загрузить на сервер), get (загрузить с сервера), mput (загрузить на сервер не-сколько файлов) и mget (загрузить с сервера несколько файлов). Эти пользователь-ские команды переводятся в команды клиента (например, RETR, STOR, CWD и LIST), которые понимает РТР-сервер, отвечающий с помощью трехзначных кодов наподобие тех, что применяются в HTTP. Значения кодов ответа знать не обязатель-но. Полный список клиентских команд РТР приведен на странице справочного ру-ководства man ftpd.

ПРИМЕЧАНИЕ

Пересылка файлов по FTP осуществляется в одном из двух режимов: ASCII (обычный текст, где все данные пересылаются как буквенно-цифровые символы, а символы конца строки перево-дятся в соответствии с клиентской платформой, т.е. CR/LF для DOS/Windows, CR для Macintosh и LF для UNIX); или Binary (двоичный) (поток двоичных данных). Некоторые FTP-клиенты авто-матически определяют, какой режим является подходящим, и переключаются в него до начала пересылки. Другие клиенты требуют явного выбора режима ASCII или Binary до пересылки файлов. Для переключения режимов используются команды bin и asc

Очень важно, особенно при пересылке с одной платформы на другую таких файлов, как HTML-страницы или сценарии на языке Perl, использовать режим ASCII. В этом случае символы конца строки будут преобразовываться правильно. Двоичный режим приведет к тому, что сценарии Perl, загруженные на сервер с не-UNIХ-клиента, просто не будут выполняться. Однако для изображений, выполняемых файлов и других типов двоичных данных этот режим является обя-зательным. Пересылка двоичных файлов в режиме ASCII приведет к их искажению.

FTP-сервером, используемым во FreeBSD по умолчанию, является стандартный BSD-демон ftpd. Он запускается из суперсервера inetd, как telnetd и Qpopper, и не может работать как отдельный демон. И дело не только в том, что ему недостает нескольких свойств, присущих его альтернативам (например, WU-FTPD или ProFTPD). Основная причина - многочисленные дыры в защите, неизбежные в сложном программном обеспечении. Альтернативные демоны рассматриваются в заключительной части этой главы. Здесь же мы рассмотрим стандартный РТР-сервер FreeBSD.

Обзор структуры каталогов FTP

Если не разрешена анонимная регистрация по FTP, схема расположения файлов на FTP-сервере достаточно проста и интегрирована в систему, как и большинство основных служб. В каталоге /etc находится несколько конфигурационных файлов, часть из которых используется как ресурсы, необходимые и другим службам системного уровня. Начальные каталоги пользователей также являются частью схемы рас-положения файлов FTP-сервера, поскольку каждый зарегистрировавшийся пользо-ватель попадает непосредственно в свой каталог.

Если разрешен анонимный доступ к FTP, то существует корневой каталог сервера FTP (как и для Apache), который создается на этапе конфигурирования. По умолчанию он расположен в /var/ftp и включает несколько подкаталогов, которые позволяют регистрироваться пользователям, не имеющим учетных записей в системе.

Аутентифицированный и анонимный РТР-доступ

Когда пользователь, имеющий в системе учетную запись, регистрируется в системе по FTP с корректным именем и паролем, сервер предоставляет ему доступ к начальному каталогу и всем файлам в нем. Для проверки можно воспользоваться командой ls. Таким образом, каждый пользователь попадает в свою точку иерархии FTP-сервера. Анонимный FTP-доступ позволяет регистрироваться в системе пользо-вателям, не имеющим учетных записей. Пользователь такого типа открывает соеди-нение, вводит в качестве имени anonymous (или ftp) и любую текстовую строку (обыч-но адрес своей электронной почты, хотя это и не обязательно) в качестве пароля. В этом случае он попадает в "общедоступную" область FTP: /var/ftp, начальный ката-лог пользователя ftp (этого пользователя также требуется создать при разрешении анонимного доступа).

Между обычными пользователями и зарегистрировавшимися анонимно существует фундаментальное различие. Для анонимных пользователей с помощью утилиты chroot установлено, что корневым каталогом сервера является каталог /var/ftp. Поэтому им недоступно (даже для просмотра) все, что находится за пределами /var/ftp. Пользователь, зарегистрировавшийся под своей учетной записью, может с помощью команды cd /usr/local перейти к любой части системы и обратиться к файлам с теми же правами доступа, что и в терминальной сессии. Анонимный пользователь, введя команду cd /pub, на самом деле попадет в /var/ftp/pub.

Обычных пользователей, для которых также следует заменить корневой каталог, можно добавить в файл /etc/ftpchroot.

Настройка FTP-сервера

Службы FTP требуют достаточно большого числа конфигурационных файлов, часть из которых находится в каталоге /etc, а часть - в /var/ftp/etc. Причина такого деления заключается в том, что часть файлов должна быть доступна анонимным пользователям FTP, которым недоступно ничего за пределами иерархии /var/ftp. Рассмотрим несколько файлов из каталога /etc, которые глобально влияют на работу FTP-сервера.

o /etc/ftpusers. "Черный список" пользователей, которым запрещен доступ по FTP. Для предотвращения регистрации пользователей по FTP достаточно доба-вить их имена в этот файл.

o /etc/ftpchroot. Пользователи, для которых изменен корневой каталог (наподо-бие того, как это сделано для анонимных пользователей), в результате чего им доступен лишь их начальный каталог.

o /etc/ftphosts. Позволяет конфигурировать виртуальные хосты, как это дела-лось для Apache (см. главу 26).

o /etc/ftpwelcome. Приветственное сообщение. Содержимое этого файла ото-бражается каждому пользователю, устанавливающему соединение, до пригла-шения ввода имени и пароля.

o /etc/ftpmotd. Второе приветственное сообщение (Message Of The Day - "Со-общение дня"), которое отображается обычным пользователям после регист-рации в системе.

o /etc/shells. Мы сталкивались с этим файлом в главе 12. Его задачей является проверка того, что каждый пользователь, регистрирующийся в системе, имеет доступ к корректному командному интерпретатору. Это предотвращает реги-страцию пользователей посредством таких учетных записей, как bin, tty и nobody, для которых в этом файле командные интерпретаторы не указаны.

Кроме конфигурационных файлов в каталоге /etc, существует набор дополни-тельных файлов, управляющих анонимным FTP-доступом. Однако они включают в себя не только конфигурационные файлы. Поскольку для анонимных пользователей /var/ftp представляет собой корневой каталог /, им недоступны средства из таких каталогов, как /bin, или файлы из /etc. FTP-сервер использует несколько системных утилит, в частности /bin/Is и /bin/date для создания листинга файлов и отправки его клиенту. Эти средства должны быть доступны и анонимным пользователям, поэтому и существует каталог

/var/ftp/bin.

Дерево /var/ftp содержит приведенные ниже файлы и каталоги. Любой анонимный пользователь видит эти файлы, но они не являются "опасными" (так, например, файлы /var/ftp/etc не содержат паролей).

o /var/ftp/bin. Этот каталог содержит выполняемые файлы Is и date. Они необхо-димы FTP-серверу, чтобы генерировать листинги, а системные программы (при правильной настройке сервера) /bin/Is и /bin/date недоступны. Такое поведе-ние применяется по умолчанию.

o /var/ftp/etc/passwd, /var/ftp/etc/group. Как и утилиты в /var/ftp/bin, эти фай-лы являются копиями файлов по умолчанию /etc/passwd и /etc/group. Их зада-ча - преобразование идентификаторов в имена пользователей и групп при выводе листингов каталогов. Поскольку анонимный FTP-доступ ограничен каталогом /var/ftp, наличие этих файлов необходимо для отображения прав владения различными файлами в /var/ftp. Обычно файлы в общедоступной области принадлежат пользователю root или другой системной учетной записи, поскольку их, как правило, размещает администратор. Имена других пользо-вателей, поскольку они отсутствуют в /var/ftp/etc/passwd, не будут отобра-жаться, в результате чего анонимным пользователям будут выводиться только числовые идентификаторы.

o /var/ftp/etc/ftpmotd. Этот файл аналогичен /etc/ftpmotd, но отображается он анонимным пользователям. С их точки зрения, это и есть файл /etc/ftpmotd.

o /var/ftp/pub. Видимый анонимным пользователям как /pub, этот каталог со-держит все загружаемые файлы. Иерархия внутри /pub оставлена на усмотре-ние системного администратора.

o /var/ftp/incoming. Этот необязательный каталог имеет права на запись с уста

новленным битом устойчивости (sticky bit) (1777). Это значит, что анонимные

пользователи могут загружать в него файлы. Помните, что это может быть

опасным: этим каталогом могут воспользоваться для обмена пиратским про-

граммным обеспечением или файлами МРЗ. Используйте эту опцию лишь в

случае крайней необходимости!

Заключительный конфигурационный файл, связанный с конфигурацией FTP-cep-вера называется /etc/inetd.conf. Как отмечалось ранее, демон ftpd запускается из суперсервера inetd и не может работать, если inetd не запущен. Вначале необходимо воспользоваться командой ps и определить, обслуживает ли демон запросы:

# ps -waux | grep inetd

root 1640 0.0 0.6 1048 780. Ss ThuO8PM 0:00.15 inetd -Ww

Если среди выполняемых процессов inetd отсутствует, возможно, он отключен в файле /etc/rc.conf. Поищите строку inetd_enable="NO" и уберите ее. Затем откройте файл /etc/inetd.conf и убедитесь, что служба ftpd разрешена:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -1

Если эта строка закомментирована, уберите комментарий и перезапустите inetd (командой killall -HUP inetd). Проверьте конфигурацию, попытавшись соединиться с сервером (ftp localhost). Если система выдает приглашение для регистрации, значит все в порядке. Если нет, пройдите предыдущие шаги заново. Если потребуется, пере-запустите процесс inetd.

Управление РТР-доступом

FTP не принадлежит к тем службам, использование которых стоит разрешать с легкостью. Хотя для пользователей и может оказаться важным иметь доступ для заг-рузки файлов на сервер (например, Web-страниц), следует помнить, что для вас это потенциальный источник проблем с защитой. В первую очередь потому, что исполь-зуется текстовый механизм, когда все данные (включая и пароли) пересылаются незашифрованными, а следовательно, доступными для прослушивания с помощью соответствующего программного обеспечения. Как мы увидим в главе 29, большин-ство текстовых служб заменено их защищенными эквивалентами: Telnet на SSH, HTTP на Secure HTTP, a POPS и IMAP - аналогичными программами со встроен-ным шифрованием. Однако FTP изначально незащищен и, хотя было предложено несколько решений (например, sftp и sftpd Брайана Веллингтона), незащищенный FTP-доступ продолжает широко использоваться, плохо поддается замене и фактически является обязательным требованием к полнофункциональному серверу. О том, как защитить его, рассказано в главе 29. Кроме того, при разрешении доступа по FTP необходимо принять специальные меры предосторожности.

Помня об этом, в первую очередь нужно блокировать возможность подключения по FTP определенных пользователей. Добиться этого можно несколькими способа-ми. Два наиболее удобных предполагают использование файлов /etc/ftpusers и /etc/ shells. Третий способ, /var/run/nologin, глобально управляет тем, принимает ли сервер соединения.

Файл /etc/ftpusers

Простейший способ запретить отдельному пользователю или целой группе воз-можность соединения с FTP-сервером - добавить его имя в файл /etc/ftpusers, который имеется в инсталляции FreeBSD по умолчанию и включает имена системных псевдопользователей (operator, bin, tty и т.д.). Эти пользователи имеют пустые пароли, a ftpd не позволяет никому соединиться с ним, используя пустой пароль. Добавление имен в файл /etc/ftpusers обеспечивает дополнительный уровень защиты.

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

# ftp localhost

Connected to localhost.somewhere.com.

220 stripes.somewhere.com FTP server (Version 6.00LS) ready. Name (localhost:frank): 530 User frank access denied. ftp: Login failed. ftp>

ПРИМЕЧАНИЕ

Обратите внимание, что сообщение access denied [в доступе отказано) появляется сразу после ввода имени пользователя - пароль даже не запрашивается. Это предотвращает пересылку паролей по сети и является дополнительной мерой предосторожности на случай, если кто-то прослушивает сеть.

В файл /etc/ftpusers можно добавлять и группы. Перед их именем следует указать символ @, например, ©users. Если пользователь является членом этой группы, ему будет отказано в доступе.

Файл /etc/shells

После сверки имени пользователя с файлом /etc/ftpusers демон ftpd проверяет, какой командный интерпретатор назначен пользователю и присутствует ли он в файле /etc/shells. Если нет, пользователь опять-таки получит сообщение access denied. Предотвратить регистрацию в системе с помощью терминальной программы или FTP можно, заменив начальный командный интерпретатор пользователя на /sbin/nologin. Эта утилита рассматривалась в главе 12. Она просто выводит сообщение account not available (учетная запись недоступна) и прекращает работу.

Файл /var/run/nologin

Для полного отключения регистрации по FTP без изменения файла /etc/inetd.conf или других конфигурационных файлов нужно разместить файл с названием nologin в каталоге /var/run. Если ftpd находит этот файл, он отвечает на все попытки соединения следующим образом:

# ftp localhost

Connected to localhost.somewhere.com. 530 System not available. ftp>

Для создания файла (нулевой длины) можно воспользоваться командой touch /var/run/nologin. Чтобы разрешить работу FTP-сервера, достаточно просто удалить этот файл (rm /var/run/nologin).

Разрешение анонимного доступа по FTP

По умолчанию анонимный доступ по FTP запрещен. Разрешить его можно с помощью утилиты sysinstall. Выполните команду /stand/sysinstall, затем перейдите к разделу Configure и Networking. Перейдите к опции Anon FTP и нажмите клавишу пробел. На экране появится меню Anonymous FTP Configuration, показанное на рис. 27.2.

Опции по умолчанию, как правило, подходят для большинства FreeBSD-систем. Поля UID, Group и Comment управляют тем, как создается новый пользователь ftp. Анонимный доступ по FTP работает по следующей схеме: пользователь ftp трактуется как обычный пользователь, добавленный к файлу /etc/ftpchroot, в результате чего регистрация с учетной записью ftp (или ее псевдонимом anonymous) направляет пользователя в каталог /var/ftp.

Остальные поля можно изменить так, как требуется в конкретной системе (на-пример, если UID, равный 14, уже занят или для загрузки файлов на сервер исполь-зуется не incoming, а другой каталог). В результате будет создан пользователь ftp и набор всех нужных подкаталогов в дереве /var/ftp.

Утилита /stand/sysinstall не позволяет запретить анонимный доступ по FTP после того, как он был включен, однако для этого существует несколько других способов:

o Удалить дерево /var/ftp.

o Удалить пользователя ftp.

o Добавить пользователя ftp в файл /etc/ftpusers (вероятно, это самый простой и корректный метод).

Аналогично, загрузку файлов в каталог incoming можно запретить, удалив его или установив права доступа 755 (права доступа по умолчанию, когда записывать что-либо в каталог может только его владелец - пользователь root). Заново разрешить ее можно, изменив права доступа на 1777: chmod 1777 /var/ftp/incoming.

Виртуальный хостинг

Если к машине "привязано" несколько IP-адресов, каждый из них можно сделать отдельным FTP-сервером. Механизмом виртуального хостинга управляет файл /etc/ ftphosts, который не существует в системе FreeBSD по умолчанию (его необходимо создать).

Каждый виртуальный хост определен в своей строке, причем поля указывают на альтернативные конфигурационные файлы каждого хоста, разделенные пустым символом. Различные поля, их назначение и установки по умолчанию (используемые сервером в отсутствие файла /etc/ftphosts) описаны в табл. 27.2.

Таблица 27.2 Поля таблицы виртуальных хостов в файле /etc/ftphosts

Поле Описание Значение по умолчанию

Hostname Имя хоста или IP-адрес виртуального хоста. Отметьте, что Нет

FTP не имеет эквивалента заголовку Host. используемому в НТТР/1.1, поэтому виртуальные хосты FTP определяются только по IP-адресу машины, к которой подключен клиент, в этом поле указано имя хоста, ftpd все равно использует Даже если соответствующий ему IP-адрес. Помните об этом при добавлении виртуальных хостов.

User Пользователь, начальный каталог которого используется для ftp

анонимного доступа по FTP к виртуальному хосту. Анонимные пользователи попадают в этот каталог как в корневой, поэтому в нем должны присутствовать эквиваленты подкаталогов /var/ftp/etc и /var/ftp/bin.

Statfile Файл статистики, в котором содержится информация обо /var/log/ftpd

всех пересылках по FTP для виртуального хоста.

Welcome Приветственное сообщение, отображаемое при попытке /etc/ftpwelcome

установления соединения с FTP-сервером.

MOTD Сообщение дня, отображаемое после успешной регистрации. /etc/ftpmotd

Ниже приведено несколько примеров виртуальных хостов в файле /etc/ftphosts. Если поле оставлено пустым или содержит дефис (-), используется значение по умолчанию.

64.41.131.106 frank /var/log/ftpd-frank /home/frank/welcome

/home/frank/welcome2

ftp2.somewhere.com ftp2 -

/etc/ftpd2welcome -

64.41.131.107 ftp3 /var/log/ftpd-3

Использование альтернативных FTP-серверов

Существует множество альтернативных пакетов FTP-серверов. Два наиболее по-пулярных из них: WU-FTP Вашингтонского университета и сервер ProFTPD с широкими возможностями конфигурирования.

Изначально разработанный в Вашингтонском университете (Washington University) для использования с одной из самых популярных служб распространения дистрибутивов WUarchive, WU-FTPD приобрел широкую популярность и стал самым часто используемым FTP-сервером в мире. Он используется по умолчанию в Linux и многих коммерческих версиях UNIX. Его конфигурация несколько отличается от демона ftpd, включенного по умолчанию во FreeBSD. Он имеет несколько свойств, отсутствующих у ftpd (например, средство проверки конфигурации, возможность оперативного сжатия и упаковки, а также ограничения доступа или объема пересылки по дате и времени). WU-FTPD может понадобиться для поддержки совместимости с другими системами, отличными от FreeBSD.

WU-FTPD распространяется в виде пакета и порта (/usr/ports/ftp/wu-ftpd). После инсталляции переключиться на него с демона ftpd можно, закомментировав строку ftp в файле /etc/inetd.conf и заменив ее на другую:

ftp stream tcp nowait root /usr/local/libexec/ftpd ftpd -1 #ftp stream tcp nowait root /usr/libexec/ftpd ftpd -1

WU-FTPD устанавливается как /usr/local/libexec/ftpd, а страницу его справочного руководства нельзя получить напрямую, так как команда man ftpd выдает страницу демона по умолчанию. Для просмотра нужной страницы следует воспользоваться опцией -MI, указывающей альтернативный путь к man-странице: man -M /usr/local/man ftpd

Более подробную информацию о WU-FTPD можно найти на Web-сайте http:// www.wu-ftpd.org.

ProFTPD был разработан с целью создать FTP-сервер, которым можно было бы управлять с помощью конфигурационных файлов, повторяющих структуру Apache. Конфигурационный файл сервера содержит иерархические блоки, похожие на со-держимое файла httpd.conf (с которым мы познакомились в главе 26), а директивы по своему стилю похожи на директивы Apache. В результате получился сервер, похожий на Apache, с большими возможностями по ограничению доступа. Он обладает высокой степенью конфигурируемости и особенно нравится тем администраторам, которые знакомы с Apache. Его можно установить как пакет или порт (/usr/ports/ftp/ pro ftpd).

Единственное отличие ProFTPD от других серверов состоит в том, что его, как и Apache, можно запускать в самостоятельном режиме, не прибегая к демону inetd. Чтобы запустить его из inetd, достаточно заменить строку ftp по умолчанию новой, указывающей на /usr/local/libexec/proftpd:

ftp stream tcp nowait root /usr/local/libexec/proftpd proftpd #ftp stream tcp nowait root /usr/libexec/ftpd ftpd -1

Домашняя страница ProFTPD находится по адресу http://www.proftpd.org и содержит подробную информацию о его возможностях и директивах конфигурации.

Niciun comentariu:

Trimiteți un comentariu