Σ публикаций: 128
Любые ответы на любые вопросы!

Настройка vsftpd

Я думаю каждый понимает о необходимости ftp сервера. И меня не миновало :) Свой выбор я остановил на vsftpd.

Основные фичи

  • Виртуальные ip.
  • Виртуальные пользователи.
  • работает как через [x]inetd так и отдельно.
  • мощная система настройки для каждого(!) пользователя.
  • увеличение полосы пропускания.
  • настройка для каждого ip.
  • лимиты для каждого ip.
  • поддержка протокола IPv6

На данный момент vsftpd используется на большинстве серверов под управлением linux. Среди них ftp.redhat.comftp.suse.comftp.debian.orgftp.gnu.org,ftp.gnome.orgftp.kde.org. Думаю, тут комментарии излишни :)

Я ставил vsftpd из пакета, из сырцов было лень, но сложностей там не должно быть.

# apt-get install vsftpd

Если вы собираете vsftpd из сырцов , перед установкой надо выполнить несколько обязательных действий.

Для дефолтной конфигурации:

# useradd nobody

# mkdir /usr/share/empty

# mkdir /var/ftp

# useradd -d /var/ftp ftp

# chown root.root /var/ftp

# chmod og-w /var/ftp

Далее обычно создаются /var/ftp/pub и /var/ftp/icoming

# mkdir /var/ftp/pub

# chmod 2775 /var/ftp/pub

# chown root.psycho /var/ftp/pub

Объясню последнюю строчку. Владельцем каталога является root а группа к которой принадлежит каталог /var/ftp/pub это psycho т.е моя группа, это сделано для того чтоб я под своим юзером мог менять содержимое. Ибо, делать это под рутом плохой признак :)

Каталог под аплоад.

# mkdir /var/ftp/incoming

# chmod 3773 /var/ftp/incoming

# chown psycho.psycho /var/ftp/incoming

Ну с владельцами я думаю все ясно а права я выставил чтоб анонимные пользователи могли писать но не могли просматривать содержимое :)

После выполнения этих действий можно начинать инсталляцию.

Если вы используете стандартный "inetd" вам надо отредактировать /etc/inetd.conf и добавить такую строку

ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd

Если у вас не установлены tcp_wrappers и вы не собираетесь их использовать то уберите из строчки /usr/sbin/tcpd

Ну и соответственно рестартнуть inetd.

Если вы используете не inetd а xinetd то в каталоге ../vsftpd/EXAMPLE/INTERNET_SITE/ лежит пример файла конфигурации.

Если у вас на машине запущен PAM то вам необходимо создать файл /etc/pam.d/ftp Пример можно взять в ../vsftpd/RedHat/vsftpd.pam Если вы этого не сделаете то локальные юзеры не смогут залогиниться.

Настройка vsftpd.conf

Пример файла конфигурации с комментариями

# Примерный конфиг /etc/vsftpd.conf

#

#

# разрешить вход дядюшке anonymous'у?

anonymous_enable=YES

#Не запускать через inetd

#listen=YES

# разрешать вход локальным пользователям.

local_enable=YES

#

# Разрешить любую форму команды записи FTP.

write_enable=YES

#

# umask по умолчанию для локальных юзеров 077. Возможно хочется

# изменить на 022, (022 используется в большинстве ftpd's)

#local_umask=022

#

# Разрешить аплоад для  анонимусов.

# Имеет смысл когда разрешена запись (write_enable=YES)

# кроме того каталог должен быть доступен для записи FTP юзером.

anon_upload_enable=NO

#

# Разрешить анонимусу создавать каталоги

#anon_mkdir_write_enable=YES

#

# Разрешить мессаги каталогов - сообщения которые выдаются при

# входе в определенную директорию.

dirmessage_enable=YES

#

# логить аплоад/даунлоад

xferlog_enable=YES

#

# убедиться что PORT коннекты вылазят из порта 20 (ftp-data).

connect_from_port_20=YES

#

# Можно изменять автоматически владельца на аплоадных файлах

# естественно использовать тут root'а я не советую

chown_uploads=YES

chown_username=psycho

#

# в какой файл пишем логи

xferlog_file=/var/log/vsftpd.log

#

# можно увидеть лог и в формате xferlog

#xferlog_std_format=YES

#

# таймаут на открытую && неиспользующуюся сессию.

idle_session_timeout=600

#

# таймаут на коннект по порту data.

#data_connection_timeout=120

#

# рекомендуется создать в системе пользователя, которого

# ftp стервер будет использовать как конкретно униженного в своих

# правах юзверя.

#nopriv_user=ftpsecure

#

# Это для распознования асинхронных ABOR запросов.

# не рекомендуется по соображениям безопасности (этот код довольно

# сложный (и проверять его разработчикам видимо влом Demige)).

# А если его не включить то возможно старые FTP клиенты вас не поймут.

#async_abor_enable=YES

#

# По-умолчанию сервер будет разрешать ASCII режим, но фактически

# игнорировать реквест. Здесь можно разрешить использовать ASCII.

# Есть ппасность при вкл. ascii_download_enable что некоторые нехорошие

# юзеры будут тормозить вашу машину командой "SIZE /большой/файл" в

# ASCII режиме.

# Эти ASCII опции разбиты на аплоад и даунлоад т.к. вы можете возжелать

# разрешить ASCII-аплоады (для работы аплоад скриптов), без

# разрешения даунлоада из-за DoS риска по командам SIZE и ASCII.

# Поддержка ASCII на стороне клиента должна быть.

#ascii_upload_enable=YES

#ascii_download_enable=YES

#

# Баннер при входе

ftpd_banner=Welcome to Psycho FTP.

#

# файл неразрешенных email адресов.

# юзабельно для защиты от DoS атак.

deny_email_enable=YES

# (умолчальный файл)

banned_email_file=/etc/vsftpd.banned_emails

#

# можно разрешить некоторым юзерам chroot()ится в их домашний каталог

# если chroot_local_user=YES, тогда это будет листинг юзеров, которые

# не могут chroot()ится.

# если chroot_local_user=NO то в ftp_chroot_list прописывается какого

# виртуального юзера куда chroot`ить

 

chroot_list_enable=YES

chroot_list_file=/etc/ftp_chroot_list

# для локальных юзверей

chroot_local_user=YES

# можно разрешить опцию "-R" для встроенного ls.

# по умолчанию запрещена т.к. сильно загружает систему на больших сайтах

# Тем не менее некоторые FTP-клиенты такие как "ncftp" и "mirror" предпологают

# ее наличие. Так что лучше ее включить.

#ls_recurse_enable=YES

Вобщем это мой рабочий конфиг, ничего сложного в настройке нет.

Проверим работоспособность

# ftp 192.168.5.13

Connected to 192.168.5.13.

220 Welcome to Psycho FTP.

Name (192.168.5.13:psycho):

331 Please specify the password.

Password:

230 Login successful. Have fun.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> bye

221 Goodbye.

В ../vsftpd/EXAMPLE лежат разнообразные примеры файла конфигурации уже заточенные под конкретные цели, можно выбрать из готового.

При написании этой статьи использовалось официальное руководство и собственный опыт :) Документацию и последнюю версию vsftpd можно найти на http://vsftpd.beasts.org/

 

Настройка NAT
11 августа 2012
Настройка NAT (natd) на примере предоставления доступа к ресурсам внешней сети (интернет) из внутренней локальной сети
Настройка роутера на базе FreeBSD
11 августа 2012
Настройка роутера на базе FreeBSD
Настройка шлюза на FreeBSD
11 августа 2012
Пошаговое руководство по настройка интернет-шлюза на операционной системе FreeBSD
Построение шлюза с трансляцией адресов на двух интерфейсах во FreeBSD
11 августа 2012
Построение шлюза с трансляцией адресов на двух интерфейсах во FreeBSD
FreeBSD в качестве сервера доступа. Часть 3. Настройка FireWall
11 августа 2012
FreeBSD в качестве сервера доступа. Часть 3. Настройка FireWall
FreeBSD в качестве сервера доступа. Часть 2. Немного о безопасности
11 августа 2012
FreeBSD в качестве сервера доступа. Часть 2. Немного о безопасности
FreeBSD в качестве сервера доступа. Часть 1. Простой сервер доступа с NAT
11 августа 2012
FreeBSD в качестве сервера доступа. Часть 1. Простой сервер доступа с NAT
Страница сгенерирована за 0,0287 s
Наверх