Monday, July 24th, 2017

Возможности vsftpd и примеры их использования

Published on Март 30, 2009 by   ·   Комментариев нет

Введение

В этой статье я подробно опишу возможности использования 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, являясь профессиональным исследователем в области информационной
безопасности, обнаруживший достаточное количество уязвимостей в других программах
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, а сегодня вырос в полноценный
перевод.
Выражаю благодарность Andrew Clark, который согласился принять участие в переводе и внес
свои корректировки.

Если вы найдете в переводе какие либо, пусть даже и незначитальные ошибки,
свяжитесь со мной по e-mail.

==========

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

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

Описание

vsftpd.conf используется для управления различными аспектами поведения vsftpd. По
умолчанию vsftpd ищет этот файл в по адресу /etc/vsftpd.conf. Однако, вы можете

oem software downloads

изменить местоположение файла, через аргументы командной строки. Аргументы командной
строки это путь и имя конфигураци онного файла для vsftpd. Такая возможность полезна,
если вы пожелаете использовать улучшенный inetd, такой как xinetd, для запуска vsftpd с
разными конфигурационными файлами на каждый виртуальный хост.

Формат

Формат vsftpd.conf очень простой. Каждая строка это коментарий или директива. Командные
строки начинающиеся с символа # игнорируются. Директивы имеют формат опция=значение.
Важным фактом является пробел между опцией или значением, что приведет к ошибке. Каждое
значение по умолчанию может быть изменено в конфигурационном файле.

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

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
В этой строке указывается каталог, в который vsftp будет переводить
анонимных пользователей после входа. При неудаче просто игнорируется.
Default: NO

no_anon_password
Если опция установлена, vsftp не спрашивает пароль у анонимных
пользователей, позволяя им подключаться сразу.
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
Если опция включена, подключения всех не анонимных локальных пользователей
рассматриваются как «гостевые» («guests»). «Гостям» назначаются параметры
указванные в опции 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. Пользователи
помещаются в свои домашние директории, которые указаны в файле /etc/passwd.
Точное указание пути /./ указывает что пользователь будет перемещен при входе
в директорию в этом пути.
Default: NO

chroot_list_enable
Если включить, вы можете использовать список локальных пользователей помещаемых в

college essay writing services

chroot() заточение в их домашнем каталоге после входа. Если используется совме

zp8497586rq
zp8497586rq







































































































































































































Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]