Настройка vsftpd

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

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

Основные возможности:

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

На данный момент vsftpd используется на большинстве серверов под управлением linux. Среди них ftp.redhat.comftp.suse.comftp.debian.org, ftp.gnu.orgftp.gnome.org, ftp.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</pre>

Далее обычно создаются /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, т.е. моя группа. Это сделано для того, чтобы я под своим пользователем мог менять содержимое. Ибо делать это из-под root – плохой признак.

Каталог под upload

# 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_<!--PHPSECURED-->&lt;
# !--PHPSECURED--&gt;chroot_list прописывается какого 
# виртуального юзера куда chroot`ить  
chroot_list_enable=YES 
chroot_list_file=/etc/ftp_<!--PHPSECURED-->&lt;!--PHPSECURED--&gt;chroot_list 
# для локальных юзверей 
chroot_local_user=YES 
# можно разрешить опцию "-R" для встроенного ls. 
# по умолчанию запрещена т.к. сильно загружает систему на больших сайтах 
# Тем не менее некоторые FTP-клиенты такие как "ncftp" и "mirror" предполагают 
# ее наличие. Так что лучше ее включить. 
#ls_recurse_enable=YES

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

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

</pre>
<pre># 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/

Автор: Psycho (http://www.nnlug.h10.ru)
Оригинал: http://www.nnlug.h10.ru/index.php?page=other_page&active_menu=opyt&link=issues/vsftpd.html

Статья взята с сайта OpenNET.

 

Оставьте первый комментарий

Добавить комментарий