Форумы

Серверы Counter-Strike :: Форумы :: Документация :: Other
 
Возможности vsftpd и примеры их использования
Модераторы: kapitowka, A1exseder, McNamara, HuKuToC, Jake_One, Meranpocynep6om, Chaos2Order, FizZ
Автор Добавил
kapitowka
25.03.2008, 17:28
FreeBSD The Power To Serve

статус Skype
STEAM_0:0:34602107

[RAT]


ID пользователя #1
Зарегистрирован: 01.01.1970, 03:00

Сообщений: 3361
Отблагодарен: 255 раза в 192 сообщениях
Репутация: 64
Репутация темы: 0 из 0 голосов

[html] Keywords: vsftpd ftp
From: Александр Головин aka screenn, <alex.golovin@mail.ru>
Newsgroups: email
Date: Mon, 24 Mar 2008 14:31:37 +0000 (UTC)
Subject: Возможности vsftpd и примеры их использования.


Введение
В этой статье я подробно опишу возможности использования VSFTPD.

VSFTPD - FTP сервер являющийся безопасным, эффективным, стабильным, полностью готовым и
проверенным решением в мире FTP серверов.

Совмещая функциональность с безопасностью, он все больше привлекает к себе внимание,
подтверждением тому служит (неполный) список проектов доверивших ему свои сервера:

* ftp.debian.org
* ftp.freebsd.org
* ftp.suse.com
* ftp.openbsd.org
* ftp.gnu.org
* ftp.kernel.org
* ftp.gnome.org
* ftp.gimp.org
* rpmfind.net
* ftp.linux.org.uk
* ftp-stud.fht-esslingen.de
* gd.tuwien.ac.at
* ftp.sunet.se
* ftp.ximian.com
* ftp.engardelinux.org
* ftp.sunsite.org.uk
* ftp.isc.org
* ftp.redhat.com
* ftp.kde.org
Разработчик Chris Evans, являясь профессиональным исследователем в области информационной
безопасности, обнаруживший достаточное количество уязвимостей в других программах
[[http://www.scary.beasts.org/security/ www.scary.beasts.org/security]] , не забыл при этом позаботиться о усилении безопасности
своего продукта. При этом ему удалось сильно расширить возможности VSFTPD, наделив его
такими функциями как:

*** Virtual IP configurations - возможность назначения виртуальных IP;
*** Virtual users - возможность создания виртуальных пользователей;
*** Standalone or inetd operation - возможность автономного пуска без inetd/xinetd;
*** Powerful per-user configurability - конфигурация пользователей;
*** Bandwidth throttling - контроль скорости полосы пропускания;
*** Per-source-IP configurability - конфигурация по IP адресу;
*** Per-source-IP limits - конфигурация лимита по IP адресу;
*** IPv6 - релизация поддержки IPv6;
*** Encryption support through SSL integration - поддержка SSL шифрования данных;
*** и многими другими возможностями описанными мной далее...


Исходный код программы можно получить по адресу ftp://vsftpd.beasts.org/users/cevans/ .
Но скорее всего этого делать не придется, поскольку обычно сервер уже включен в дистрибутив Linux.

Выпуски новых версий случаются не так часто, потому как сообщения об ошибках остаются очень
редким явлением для VSFTPD.

К примеру в Debian GNU/Linux, программный пакет устанавливается одной командой:

apt-get install vsftpd.

После установки следует обратить внимание на файлы документации в каталоге /usr/share/doc/vsftpd,
каталог EXAMPLE уже содержит различные примеры конфигурационного файла vsftpd.conf. Также будет
полезно посмотреть man vsftpd.conf - в этом мане подробно расписываются все возможности программы.
Единственный недостаток (а возможно преимущество) руководства, в том что оно написано на английском
языке, в конце этой статьи я добавил русский перевод этого руководства.

Сама программа располагается в каталоге /usr/sbin/vsftpd, возможно в разных дистрибутивах
файл vsftpd.conf находится в разных местах, узнать его расположение к примеру можно
командой - whereis vsftpd.
В дистрибутиве Debian GNU/Linux, пакет vsftpd размещает свои файлы следующим образом:

/.
/var
/var/run
/var/run/vsftpd
/usr
/usr/share
/usr/share/doc
/usr/share/doc/vsftpd
/usr/share/doc/vsftpd/AUDIT
/usr/share/doc/vsftpd/BENCHMARKS
/usr/share/doc/vsftpd/BUGS
/usr/share/doc/vsftpd/EXAMPLE
/usr/share/doc/vsftpd/EXAMPLE/INTERNET_SITE_NOINETD
/usr/share/doc/vsftpd/EXAMPLE/INTERNET_SITE_NOINETD/README
/usr/share/doc/vsftpd/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf
/usr/share/doc/vsftpd/EXAMPLE/README
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS_2
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS_2/README
/usr/share/doc/vsftpd/EXAMPLE/PER_IP_CONFIG
/usr/share/doc/vsftpd/EXAMPLE/PER_IP_CONFIG/README
/usr/share/doc/vsftpd/EXAMPLE/PER_IP_CONFIG/hosts.allow
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_HOSTS
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_HOSTS/README
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/logins.txt
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/vsftpd.conf
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/README.gz
/usr/share/doc/vsftpd/EXAMPLE/INTERNET_SITE
/usr/share/doc/vsftpd/EXAMPLE/INTERNET_SITE/vsftpd.xinetd
/usr/share/doc/vsftpd/EXAMPLE/INTERNET_SITE/vsftpd.conf
/usr/share/doc/vsftpd/EXAMPLE/INTERNET_SITE/README.gz
/usr/share/doc/vsftpd/README
/usr/share/doc/vsftpd/README.security
/usr/share/doc/vsftpd/README.ssl
/usr/share/doc/vsftpd/REWARD
/usr/share/doc/vsftpd/SECURITY
/usr/share/doc/vsftpd/SECURITY/TRUST.gz
/usr/share/doc/vsftpd/SECURITY/IMPLEMENTATION
/usr/share/doc/vsftpd/SECURITY/OVERVIEW
/usr/share/doc/vsftpd/SECURITY/DESIGN.gz
/usr/share/doc/vsftpd/SIZE
/usr/share/doc/vsftpd/SPEED
/usr/share/doc/vsftpd/TODO
/usr/share/doc/vsftpd/TUNING
/usr/share/doc/vsftpd/README.Debian
/usr/share/doc/vsftpd/copyright
/usr/share/doc/vsftpd/changelog.gz
/usr/share/doc/vsftpd/FAQ.gz
/usr/share/doc/vsftpd/changelog.Debian.gz
/usr/share/man
/usr/share/man/man5
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8
/usr/share/man/man8/vsftpd.8.gz
/usr/sbin
/usr/sbin/vsftpd
/etc
/etc/init.d
/etc/init.d/vsftpd
/etc/pam.d
/etc/pam.d/vsftpd
/etc/logrotate.d
/etc/logrotate.d/vsftpd
/etc/vsftpd.conf
/etc/ftpusers

Как уже стало понятно для работы сервера необходимо отредактировать конфигурационный файл:
/etc/vsftpd.conf, итак рассмотрим этот вопрос более подробней.
Файл vsftpd.conf состоит из трех видов опций:

* BOOLEAN OPTIONS - основные опции, которые могут содержать значения: YES, NO;
* NUMERIC OPTIONS - опции содержащие разные цифровые значения, например время в секундах или
номер порта соединения;
* STRING OPTIONS - содержат строку, например путь к каталогу на диске: /var/run/vsftpd;

Стоит заметить что опции могут отсутствовать в конфигурационном файле, это означает что
используется значение заданное по умолчанию, обозначаемое как "Default:" в man vsftpd.conf.
Многие не зная этого думают что опции надо указывать напрямую, поэтому их конфигурационный
файл вырастает до больших размеров, хотя на самом деле обычно необходимо записать в файл
всего лишь несколько строк, остальные настройки приемлемы по умолчанию и поэтому не нуждаются
в добавлении.

Многие настройки зависят от других опций, если те опции от которых они зависят отключены,
то настройки не будут работать. Некоторые опции являются взаимоисключающими, значит не будут
работать в паре с другими включенными опциями.

А также (на всякий случай), # - этот знак превращает следующую за ним строку в комментарий
не используемый программой.

Ниже я приведу примеры vsftpd.conf с описанием для различных вариантов работы. Любой из этих
примеров, подходящий под ваши конкретные нужды, может быть использован прямо сейчас, для быстрого
пуска сервера, особо не углубляясь в подробности возможных настроек. После чего можно будет
продолжать читать статью уже с работающим VSFTPD, изменяя или добавляя другие настройки по мере
необходимости.

ПРИМЕРЫ КОНФИГУРАЦИИ
--------------------

1. Конфигурация для загрузки с анонимным доступом, без проверки пароля.
a)inetd/xinetd.

anonymous_enable=YES
no_anon_password=YES
guest_enable=YES
guest_username=ftp
xferlog_enable=YES
ftpd_banner=Hello!

Можно указать другой путь к каталогу с файлами для загрузки (по умолчанию /home/ftp),
в /etc/passwd, отредактировав строку "ftp:" следующим образом:

ftp:x:107:65534::/home/diretory/way/:/bin/false (где /home/diretory/way/ - путь)

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

б)независимый режим.

listen=YES
background=YES
anonymous_enable=YES
no_anon_password=YES
guest_enable=YES
guest_username=ftp
xferlog_enable=YES
ftpd_banner=Hello!
Опция listen=YES позволит VSFTPD работать самостоятельно, без помощи inetd/xinetd.
В этом случае необходимо запускать сервер вручную или при помощи загрузочных стартовых
скриптов. Для запуска необходимо ввести в консоли команду /usr/sbin/vsftpd и FTP будет
запущен в фоновом режиме благодаря опции background=YES.

Если сервер предназначен для работы в интернет, полезно добавить некоторые ограничения.

anonymous_enable=YES
no_anon_password=YES
anon_world_readable_only=YES
connect_from_port_20=YES
no_anon_password=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
xferlog_enable=YES
ascii_download_enable=NO
async_abor_enable=YES
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=15000

Для работы в интернет в независимом от inetd/xinetd режиме

listen=YES
max_clients=200
max_per_ip=4
anonymous_enable=YES
no_anon_password=YES
anon_world_readable_only=YES
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
xferlog_enable=YES
async_abor_enable=YES
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=15000

При переходе в независимый от inetd режим работы (listen=YES), я столкнулся с проблемой,
при попытке запуска сервера получал сообщение "500 OOPS: could not bind listening IPv4 socket".
Решение оказалось простым, нужно закомментировать строку ftp в /etc/inetd.conf и
перезапустить inetd. Также при переходе в режим listen=NO, пришлось раскоментировать строку ftp
в /etc/inetd.conf и перезапустить inetd иначе при попытке подключиться я получал такое
сообщение - "ftp: connect: Connection refused".


Я не буду описывать все возможные варианты примеров конфигурации сервера, потому что на самом
деле их может быть очень много, вместо этого ниже хочу добавить перевод man vsftpd.conf, который
изначально был написан мною для удобства изучения возможностей vsftpd. Быть может этот перевод
несколько "сырой", но я надеюсь он поможет нам в более быстром освоении сервера. В дальнейшем я
буду улучшать качество перевода, и если вы найдете в нем какие либо ошибки,
свяжитесь со мной по e-mail.

==========

VSFTPD.CONF(5) VSFTPD.CONF(5)

NAME
vsftpd.conf - конфигурационный файл vsftpd



СПОСОБЫ ЗАПУСКА
---------------


listen
Если опция включена сервер стартует в независимом от inetd/xinetd режиме
"standalone mode". В этом случае он сам заботится о прослушивании и
определении входящих соединений.
Default: NO

listen_ipv6
Тоже самое что listen, за исключением того что vsftpd слушает IPv6 протокол включительно.
Этот параметр и listen взаимно исключаемые.
Default: NO

background
При включении, vsftpd стартуя в режиме listen, работает в фоновом режиме.
Т.е. контроль передается той оболочке в которой был запущен vsftpd.
Default: NO

listen_port
Если запущен в standalone mode, указанный порт прослушивается на предмет
входящих FTP соединений.
Default: 21

listen_address
Если запущен в standalone mode, обычно слушает все адреса (или все локальные интерфейсы).
Что может быть отменено указанием определенных ip адресов в этой строке.
Default: (none)

listen_address6
Тоже что и listen_address, но прослушивает адреса соединений на основе IPv6 протокола
(который используется если выбрана опция listen_ipv6), формат в виде стандартного IPV6 адреса.
Default: (none)

max_clients
Если vsftpd находится в standalone_mode, это максимальное количество клиентов,
которые могут быть подключены. Попытки подключения сверх указанного количества,
получат сообщение об ошибке.
Default: 0 (unlimited)

max_per_ip
Если vsftpd находится в standalone mode, эта опция указывает максимально
возможное количество клиентов с одинаковыми ip адресами. Клиентские подключения
пытающиеся привысить этот лимит, получат сообщение об ошибке.
Default: 0 (unlimited)

run_as_launching_user
Включите для возможности запуска vsftpd от пользователя vsftpd. Это полезно когда root
доступ недопустим. Важное предупреждение! Не разрешайте эту опцию если вы полностью не
уверены что вы делаете, наивное использование этой опции может создать множество проблем
связанных с безопасностью. В особенности, vsftpd не может использовать chroot технологию для
разграничения доступа к файлам (даже если при этом сервер запущен от root). В некоторой степени
можно ограничить доступ при помощи параметра deny_file, указав шаблон запрещенных файлов,
такой как {/*,*..*}, но надежность этого не сравнима с chroot, поэтому не стоит возлагать на
это больших надежд. С использованием этой опции, также проявляются ограничения в других опциях.
Для примера, в опциях требующих привилегии, не анонимные входы, изменение владельца закачанных
на сервер файлов, подключение по 20 порту и прослушивание портов менее 1024. Возможно и другие
опции пересекаются с включением этой опции.
Default: NO


ПРАВИЛА ДЛЯ АНОНИМНЫХ ПОЛЬЗОВАТЕЛЕЙ
-----------------------------------

anonymous_enable
Разрешает или запрещает вход анонимных пользователей. Если разрешено, пользователи
с именами ftp и anonymous распознаются как анонимные пользователи.
Default: YES

anon_max_rate
Максимальная допустимая скорость передачи данных для анонимных клиентов, выражена в байтах
в секунду .
Default: 0 (unlimited)

anon_root
Эта опция обозначает каталог в который vsftpd пытается перевести анонимных пользователей
после входа. При неудаче просто игнорируется.
Default: (none)

no_anon_password
Если разрешено, предотвращает запрос пароля, в таком случае анонимные пользователи
подключаются напрямую без ввода пароля.
Default: NO

anon_mkdir_write_enable
Включение этой опции, позволяет анонимным пользователям создавать новые каталоги в
соответствии с определенными для этого условиями. Для того чтобы это работало опция
write_enable должна быть включена, и анонимный пользователь должен иметь права на
запись в родительской папке.
Default: NO
anon_other_write_enable
Если выбрано YES, анонимные пользователи могут выполнять операции записи отличные от
загрузки на сервер и создания каталогов, такие как удаление и переименование. Это обычно
не рекомендуется, но все таки такая возможность присутствует для полноты.
Default: NO

anon_upload_enable
Включение этой опции позволяет анонимным пользователям загружать файлы на сервер, в
соответствии с определенными для этого условиями. Для того чтобы это работало опция
write_enable должна быть активирована, и анонимный ftp пользователь должен иметь права
на запись в каталоге для загрузки. Включение опции также необходимо для предоставления
возможности загружать на сервер файлы виртуальным пользователям; по умолчанию виртуальные
пользователи имеют одинаковые привилегии с анонимными пользователями
(т.е. максимально ограниченные привилегии).
Default: NO

anon_world_readable_only
При включение этой опции, анонимным пользователям будет разрешено скачивать только
видимые ими из мира файлы. Предполагается полезным, если пользователи могут загружать
на сервер и хранить на нем собственные файлы.
Default: YES

deny_email_enable
Активация опции, позволяет использовать список анонимных паролей типа e-mail, при
использовании которых попытки подключения будут отвергнуты. По умолчанию, файл содержащий
этот список располагается в /etc/vsftpd.banned_emails, но имеется возможность изменить путь,
указав альтернативный путь в banned_email_file.
Default: NO

banned_email_file
Эта опция указывает имя файла в котором содержится список анонимных e-mail паролей
не принимаемых сервером. Сервер сверяется с этим файлом если опция
deny_email_enable включена.
Default: /etc/vsftpd.banned_emails

guest_enable
Если разрешено, все не анонимные входы классифицируются как гостевые ("guest") входы.
Гостевым входам в свою очередь переназначаются параметры в соответствии с параметрами
guest_username опции.
Default: NO

guest_username
В этой опции содержится имя пользователя назначаемое гостевым пользователям.
Смотрите опцию guest_enable для выяснения способа выполнения гостевого входа.
Default: ftp

secure_email_list_enable
Активируйте опцию, если хотите разрешать вход анонимным пользователям только на основе
проверки паролей указанных в e-mail листе. Это простой путь ограничения доступа к
низко безопасному содержимому без необходимости в виртуальных пользователях. При включении,
анонимные входы блокируются если пароль не содержится в файле указанном опцией
email_password_file. Формат файла - один пароль на строку. По умолчанию файл располагается
в /etc/vsftpd.email_passwords.
Default: NO

email_password_file
Эта опция может быть использована для предоставления альтернативного пути файла
используемого secure_email_list_enable опцией.
Default: /etc/vsftpd.email_passwords

anon_umask
Значение накладываемой маски на создаваемые анонимными пользователями файлы.
Замечание! Если вы решили указать цифровое значение, надо помнить о
нулевом "0" префиксе, иначе значение будет рассмотрено как десятизначное.
Default: 077

ftp_username
Это имя мы используем для обозначения анонимных пользователей.
Домашний каталог пользователя с этим именем, корневой каталог
анонимного пространства FTP.
Default: ftp


ПРАВИЛА РАБОТЫ С ПОЛЬЗОВАТЕЛЯМИ
-------------------------------
local_enable
Разрешает или запрещает вход для локальных пользователей. Если включено
обычные пользовательские акаунты в /etc/passwd могут быть использованы для входа.
Должно быть включено для разрешения любых не анонимных входов, включая вход
виртуальных пользователей.
Default: NO

local_root
Эта опция указывает каталог в который vsftpd должен перевести пользователя после
локального не анонимного входа. В случае неудачи просто игнорируется.
Default: (none)

user_config_dir
Эта опция позволяет задавать дополнительные параметры относительно к отдельным
пользователям. Например если в user_config_dir выбрать /etc/vsftpd_user_conf, тогда
вход пользователя "chris", означает что vsftpd будет использовать настройки из файла
/etc/vsftpd_user_conf/chris для этой сессии. Обратите внимание, не все настройки задаются
в пользовательской концепции, например listen_address, banner_file,
max_per_ip, max_clients, xferlog_file, и другие.
Default: (none)

chroot_local_user
Если выбрано локальные пользователи будут (по умолчанию) перенесены в chroot () "заточение"
в их домашнем каталоге после входа. Внимание: эта опция имеет смысл быть включенной из
соображений безопасности, особенно если пользователи имеют права позволяющие загрузку
файлов на сервер, или shell доступ. Включать только если вы действительно уверены что
знаете зачем вам это нужно. Заметим что эта опция безопасности в системах класса unix,
характерна не только для vsftpd, используется и в других FTP серверах.
Default: NO

passwd_chroot_enable
Если разрешено, вместе с chroot_local_user, тогда возможно любое выбранное на ваше
усмотрение размещение chroot(), указывается на основе пользовательской концепции.
Любые пользователи заключаются в chroot получая их домашние каталоги из строки в /etc/passwd.
Подробное месторасположение указанное в строке пользователя как путь /./ означает что
этот пользователь при входе будет перемещен в отдельный каталог по этому пути.
Default: NO

chroot_list_enable
Если включить, вы можете использовать список локальных пользователей помещаемых в
chroot() заточение в их домашнем каталоге после входа. Если используется совместно
с включенным chroot_local_user означает список пользователей которые не помещаются
в chroot() заточение. По умолчанию список содержится в файле /etc/vsftpd.chroot_list,
но можно указать любой другой путь к файлу используя опцию chroot_list_file.
Default: NO

chroot_list_file
Опция является дополнением к chroot_list_enable указывает альтернативный путь
к файлу содержащему список локальных пользователей которые будут перемещены в chroot()
заточение в их домашние каталоги при входе. Эта опция уместна только при разрешенной
chroot_list_enable. Если опция chroot_local_user включена, наоборот указывает
файл списка пользователей не помещаемых в chroot() заточение.
Default: /etc/vsftpd.chroot_list

chmod_enable
Включение этой опции разрешает использование SITE CHMOD команд устанавливающих
права доступа для файла. ВНИМАНИЕ! Применимо только к локальным пользователям.
Анонимные пользователи никогда не используют SITE CHMOD команды.
Default: YES

check_shell
Замечание! Опция эффективна только для non-PAM сборок vsftpd. Если запрещена,
vsftpd не проверяет файл /etc/shells на допустимость пользовательских shell
оболочек для локальных входов.
Default: YES

virtual_use_local_privs
Если включено, виртуальные пользователи будут использовать одинаковые с
локальными пользователями привилегии. По умолчанию, виртуальные пользователи
используют одинаковые с анонимными пользователями привилегии, предполагающие
большие ограничения, (особенно условия доступа на запись).
Default: NO

user_sub_token
Используется для автоматической генерации домашнего каталога виртуального
пользователя базируясь на шаблоне. К примеру, если домашний каталог реального
пользователя указанного в guest_username это /home/virtual/$USER, и в
user_sub_token выбрать $USER, тогда при входе виртуального пользователя fred,
он будет направлен, (обычно в chroot) директорию /home/virtual/fred. Эта опция
также работает если local_root содержит user_sub_token.
Default: (none)

local_max_rate
Максимальная скорость передачи данных, выраженная в байтах в секунду, для
локально аутентифицированных пользователей.
Default: 0 (unlimited)

local_umask
Значение маски назначения прав доступа к файлам созданным локальными
пользователями. Помните! Если вы хотите указать параметр в качестве
цифрового значения, указывайте "0" (нулевую) приставку, иначе
значение будет определено как целое десятизначное.
Default: 077

session_support
Управление поддержкой vsftpd сессий для входа. Если vsftpd поддерживает сессии,
при этом обновляются utmp и wtmp. Также открывается pam_session, если
используется PAM аутентификация, закрывается только после выхода. Можно
отключить это, если нет необходимости в журналировании сессии, и есть желание
предоставить vsftpd больше возможностей для запуска с меньшими привилегиями.
Замечание - utmp и wtmp поддерживаются только в сборках с включенным PAM.
Default: NO

userlist_enable
Если разрешено, vsftpd загружает список имен пользователей, из файла
указанного userlist_file параметром. Если пользователь пытается войти
используя имя взятое из этого файла, вход будет отклонен перед запросом
пароля. Это может быть полезно для предотвращения передачи пустого поля
в качес



-------------------------------------------------------
Правила сервера

Банлист
Наверх
Сайт
 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System