Translation(s): Русский

(!) ?Обсуждения


vsftpd >> EXAMPLE

Перевод документации из каталога EXAMPLE

README (вместо введения)

Эти подкаталоги содержат примеры использования vsftpd.

Эти примеры описывают установку для работы в ?RedHat 7.2. Некоторые из них описывают взаимодействие с "xinetd" и/или очень функциональный вариант с PAM.

Примеры служат для иллюстрации того, как vsftpd становится чрезвычайно мощным инструментом при взаимодействии с "xinetd", для обработки соединений, и PAM для аутентификации.

Содержимое

INTERNET_SITE         Как можно настроить vsftpd для сайта.
INTERNET_SITE_NOINETD Как использовать vsftpd без xinetd.
PER_IP_CONFIG         Как использовать различные настройки, в зависимости от подключившегося IP-адреса.
VIRTUAL_HOSTS         Как использовать vsftpd с виртуальным хостингом.
VIRTUAL_USERS         Как использовать виртуальных пользователей в vsftpd.
VIRTUAL_USERS_2       Продвинутые виртуальные пользователи - различные права доступа.

INTERNET_SITE

Этот пример показывает, как можно установить FTP для Internet-сайта (возможно большого).

Акцент будет на безопасность и производительность.

Мы увидим как, интегрируя vsftpd с xinetd, мы получим мощную комбинацию.

Шаг 1) Установка вашего файла настроек для xinetd.

Можно использовать, например, уже предоставленный файл настроек для xinetd - "vsftpd.xinetd".

Установите его:

cp vsftpd.xinetd /etc/xinetd.d/vsftpd

Давайте посмотрим на важное содержимое этого файла и рассмотрим что оно делает:

disable                 = no
socket_type             = stream
wait                    = no

Это говорит о том, что служба является активной, и она использует стандартные сокеты TCP.

user                    = root
server                  = /usr/local/sbin/vsftpd

Программа сервера "/usr/local/sbin/vsftpd" используется для обработок входящих FTP-запросов, программа запущена из под root (vsftpd, будет, конечно, пытаться быстро сбросить такие полномочия настолько, насколько это возможно). ПРИМЕЧАНИЕ! Удостоверьтесь в наличии бинарного файла "vsftpd", установленного в "/usr/local/sbin" (или измените путь к бинарному файлу "vsftpd" в xinetd-файле).

per_source              = 5
instances               = 200

Для безопасности количество максимальных разрешённых подключений от одного IP-адреса - 5.

Всего максимальных параллельных соединений - 200.

no_access               = 192.168.1.3

Пример, как не пустить соединение указанного IP-адреса, 192.168.1.3 будет лишён доступа.

banner_fail             = /etc/vsftpd.busy_banner

Файл, содержимое которого будет выводится пользователям в случае, если соединению отказано по определённой причине (слишком много пользователей, запрещённый IP-адрес).

Пример как это сделать:

echo "421 Server busy, please try later." > /etc/vsftpd.busy_banner

log_on_success          += PID HOST DURATION
log_on_failure          += HOST

Запишет в лог IP-адреса от всех попыток подключения - без разницы, успешных или нет, время запишется тоже. Если FTP-сервер запущен для обработки соединений, то в лог запишутся также ID процесса и продолжительность работы процесса. Если используется ?RedHat то логи будут записываться в "/var/log/secure".

Шаг 2) Установка вашего файла настроек для vsftpd.

Предоставлен файл в качестве примера. Его установка:

cp vsftpd.conf /etc

Рассмотрим содержимое файла:

# Access rights
anonymous_enable=YES
local_enable=NO
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

Это позволит удостоверится, что FTP-сервер находится в только анонимном режиме, и что вся запись и права на загрузку на vsftpd отключены. Заметьте, что большинство значений этих параметров являются значениями по-умолчанию, но, тем не менее, где затронут вопос безопасности - всё-таки будет намного правильнее указать параметры вручную.

# Security
anon_world_readable_only=YES
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000

Параметры по порядку - Удостоверимся, что доступные файлы и каталоги - доступны для всех. - Порождает соединения FTP-порта из безопасного порта - так пользователи на FTP-сервере не смогут попытаться фальсифицировать содержимое файлов. - Скрываем идентификаторы пользователей FTP-сервера и выводим вместо этого "ftp" в списке содержимого каталога. Также это усиливает производительность. - Устанавливаем дипозон портов "50000-60000" для пассивных соединений - поможет легче настроить firewall!

# Features
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES

По порядку - Записываем статистику передач в "/var/log/vsftpd.log" - Отключаем "ls-R" для предотвращения использования в качестве DoS атаки. Примечание - сайтам, которые потребуется "зеркалировать", потребуется включение "ls -R". - Отключаем загрузку с vsftpd в режиме "ASCII" для предотвращения использования в качестве DoS атаки (загрузка с vsftpd в режиме ASCII сильно грузит CPU). - Разрешаем старым FTP-клиентам отменять незавершённые передачи файлов.

# Performance
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000

По порядку - Активируем более быструю модель "один процесс на одно соединение". Примечание! Для поддержки безопасности, эта функциональная возможность доступна только на системах с "capabilities" - т.н. ядро Linux 2.4. - Выгружаем неактивных пользователей после 2 минут неактивности. - Выгружаем неактивных загрузок с vsftpd после 5 минут неактивности. - Выгружаем зависшие пассивные подключения после 1 минуты неактивности. - Выгружаем зависшие активные подключения после 1 минуты неактивности. - Ограничим скорость загрузки с vsftpd каждого клиента в ~50кбайт/с.

Шаг 3) Перезапуск xinetd.

(на RedHat)
/etc/rc.d/init.d/xinetd restart

Если вы столкнулись с проблемой, проверьте, что: 1) В вашем "/etc/xinetd.d" каталоге есть только одна FTP-служба.

INTERNET_SITE_NOINETD

Этот пример показывает, как запускать vsftpd в standalone (автономном) режиме - то есть без потребности в запуске "inetd" нескольких видов (inetd, xinetd, tcpserver и т.д.).

vsftpd поддерживает standalone (автономный) режим с версии v1.1.0.

С выпуском версии v1.1.3, список функциональных возможностей standalone (автономного) режима вырос так, что большим сайтам больше не требуется использовать inetd. Ранее, большие сайты были вынуждены использовать xinetd для важной функциональной возможности "предельное число параллельных соединений от одного IP-адреса". К сожалению, кажется, у xinetd имеются проблемы с устойчивостью - различные большие сайты сообщают, что подсчёт сессий xinetd может пойти не так, как надо, и в результате будут неправильно использоваться запреты на подключения от пользователей, потому что xinetd думает, что на FTP уже нет места для авторизации новых пользователей, когда на самом деле это не так.

vsftpd теперь самостоятельно обрабатывает максимальное количество сессий и максимальное количество сессий на количество IP-адресов. Возможно также реализовать самостоятельное управление доступом через интеграцию "tcp_wrappers" и даже настроить отдельно подключение для каждого IP-адреса.

Используйте эту настройку в качестве примера:

1) Скопируйте файл "vsftpd.conf" в этом каталоге, в "/etc/vsftpd.conf".

2) Запустите vsftpd, т.н.

vsftpd &

3) That should be it!

Пример "vsftpd.conf" основан на "vsftpd.conf" от примера "INTERNET_SITE". Посмотрим на различия (сверху):

# Standalone mode
listen=YES

Сообщим vsftpd запускаться в standalone (автономном) режиме. НЕ ПЫТАЙТЕСЬ запускать vsftpd с inetd, когда этот параметр установлен в "YES" - это не будет работать, вы получите сообщение об ошибке 500: could not bind listening socket.

max_clients=200
max_per_ip=4

Максимальное количество сессий - 200 (новые клиенты получат отказ с сообщением "занято") Максимальное количество сессий от одного IP-адреса - 4 (пятое подключение получит отказ с соответствующим сообщением).

Одно замечание на будущее по standalone (автономному) режиму, относительно виртуальных IP-адресов. Это очень легко - запускаете только одну копию vsftpd на каждый виртуальный IP-адрес отдельно (не забывая указывать в командной строке каждой запущенной копии vsftpd отдельный файл настроек). Для каждой копии vsftpd, запущенной на каждом отдельном IP-адресе, поменяйте в файле настроек параметр, который отвечает за прослушивание IP-адреса:

listen_address=192.168.1.2

И запустите vsftpd, указав ему файл настроек, например: vsftpd /etc/vsftpd.conf.site1 &

PER_IP_CONFIG

VIRTUAL_HOSTS

VIRTUAL_USERS

Так как содержимое главы для более наглядного понимания попутно сопровождалось подробными комментариями большого размера, то получившаяся в результате глава имеет очень большой объём, поэтому вынесена отдельно, и доступна здесь

VIRTUAL_USERS_2

Этот пример является дополнением к примеру "VIRTUAL_USERS", и описывает чуть более сложную настройку.

Предположим, что нам нужно два типа виртуальных пользователей. Первый тип - это виртуальные пользователи, которые могут только просматривать и скачивать с vsftpd содержимое, а второй тип - это те виртуальные пользователи, которые помимо закачки с vsftpd существующего содержимого, могут загружать на vsftpd новое содержимое.

Для того, чтобы содержать несколько типов виртуальных пользователей, потребуется использовать возможность гибкой настройки vsftpd для каждого пользователя отдельно (добавлено в v1.1.0).

В предыдущем примере виртуальных пользователей было создано два пользователя - "tom" и "fred".

Предположим, что нам нужно, чтобы "fred" имел доступ на запись, чтобы загружать на vsftpd новые файлы, в то время как "tom" может только качать с vsftpd.

Шаг 1) Включение настроек vsftpd для каждого пользователя отдельно

Для включения в vsftpd этой гибкой функциональной возможности, добавьте следующее в файл "/etc/vsftpd.conf":

user_config_dir=/etc/vsftpd_user_conf

И затем создайте этот каталог:

mkdir /etc/vsftpd_user_conf

Шаг 2) Дать пользователю "tom" возможность читать все файлы / каталоги.

At the end of the last example, we noted that the virtual users can only see world-readable files and directories. We could make the /home/ftpsite directory world readable, and upload files with world-read permission. But another way of doing this is giving tom the ability to download files which are not world-readable.

В конце последнего примера мы заметили, что виртуальные пользователи могут ТОЛЬКО ВИДЕТЬ общедоступные для чтения файлы и каталоги. Мы могли сделать каталог "/home/ftpsite" не только общедоступным для чтения, но и общедоступным для загрузки файлов на vsftpd. Но другой способ сделать это дает "tom" разрешение скачивать с vsftpd файлы, которые не общедоступны для чтения.

Для пользователя "tom", укажите "NO" в значении параметра настройки "anon_world_readable_only":

echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/tom

Проверим - войдите в систему как tom, и теперь "ls" возвратит список содержимого каталога! Войдите в систему как "fred", и этого не будет. ПРИМЕЧАНИЕ - перезапустите vsftpd, после редактирования файла "/etc/vsftpd.conf", для того чтобы изменённые настройки вступили в силу. (Продвинутые пользователи могут отправить сигнал "SIGHUP" на процесс vsftpd, который слушает входящие соединения).

Шаг 3) Даём пользователю "fred" разрешение на чтение всех файлов / каталогов и создавать новые, но не вмешиваться в существующие файлы.

echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/fred
echo "write_enable=YES" >> /etc/vsftpd_user_conf/fred
echo "anon_upload_enable=YES" >> /etc/vsftpd_user_conf/fred

Проверим - войдите в систему как "tom", и вы не сможете загружать на vsftpd файлы. Войдите в систему как "fred", и вы можете! Попытайтесь удалить файл и как "tom" и как "fred" - вы не сможете.

Ссылки