Σ публикаций: 133
#лучшедома
Любые ответы на любые вопросы!

Настройка vsftpd. FTP-сервер под управлением linux.

Я думаю каждый понимает о необходимости 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 можно найти на https://vsftpd.beasts.org/

 

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