Настройка и установка vsftpd на Centos 6.6

baltun

Администратор
Сообщения
10.725
Реакции
2.541
Баллы
2.003
Не буду много писать процесс установки выглядит так:
Установка
Код:
yum install vsftpd

Резервное копирование конфигурационного файла 'vsftpd.conf'
Код:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back

Установим FTP клиент.
Код:
yum install ftp

Файл с настройками переведенный на русский язык.
Настройка vsftpd.

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

Я думаю каждый понимает о необходимости ftp сервера. И меня не
миновало :) Свой выбор я остановил на vsftpd.
Основные фичи
* Виртуальные ip.
* Виртуальные пользователи.
* работает как через [x]inetd так и отдельно.
* мощная система настройки для каждого(!) пользователя.
* увеличение полосы пропускания.
* настройка для каждого ip.
* лимиты для каждого ip.
* поддержка протокола IPv6

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

Далее обычно создаются /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 Пользователя.
Создадим нового пользователя, назовем его 'xsasha' и назначим ему домашнюю директорию '/var/www/xsasha'
Код:
useradd -d '/var/www/xsasha' -s /sbin/nologin xsasha

Дадим пароль пользователю.
Код:
passwd xsasha

Создаем папку xsasha.
Код:
mkdir -p /var/www/xsasha

Для того, чтобы разрешить пользователю читать и писать данные в его домашней директории, изменяем права доступа и владельца :
Код:
chown -R xsasha '/var/www/xsasha'
chmod 775 '/var/www/xsasha'

Добавим пользователя в группу "ftp".
Код:
usermod -G ftp xsasha

Настраиваем фаервол на 21 порт.
Код:
nano /etc/sysconfig/iptables
и добавляем следующие
Код:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
Перезапускаем фаервол.
Код:
service iptables restart

Добавляем vsftpd в автозагрузку.
Код:
chkconfig --levels 235 vsftpd on
стартуем
service vsftpd start

Проверяем работоспособность через браузер, набираем ftp://localhost

Для исправления нужно либо отключить SELinux, либо настроить.
Код:
nano /etc/selinux/config
И установим disabled:
SELINUX=disabled

Настраиваем проход.
Код:
getsebool -a | grep ftp
ftp_home_dir off - по умолчанию
setsebool -P ftp_home_dir on

Каталоги виртуальных пользователей будут в /var/ftp/. А для аутентификации будет требоваться pam_userdb. Поставим:
Код:
yum install db4-utils as necessary

Создание виртуальных пользователей.

Перейдите в директорию /etc/vsftpd с помощью cd, подготовьте файл с логинами и паролями пользователей:
Код:
user1
password1
use2
password2

Лучше даже переместить его в отдельный каталог.
Код:
cd /etc/vsftpd/
mkdir vuser
cd vuser

Теперь создайте сам файл:
Код:
nano vuser_list

Добавляем пользователей и сохраняемся. Выполняем:
Код:
db_load -T -t hash /etc/vsftpd/vuser/vuser_list /etc/vsftpd/vuser/vuser_db.db
Это создаст хэшированный файл базы данных с именем vuser_db.db из vuser_list.

Активация авторизации PAM
Теперь добавим в /etc/pam.d/vsftpdу данные об авторизации.
Код:
cd /etc/pam.d/
nano vsftpd

Вставьте эти две строки в самом начале файла, чуть ниже #%PAM-1.0 и сохранитесь, PAM_Userdb автоматически добавит расширение .db. Таким образом сможете создавать реальных пользователей и виртуальных, используя тот же же демон, а не два процесса Vsftpd.
Код:
auth     sufficient pam_userdb.so db=/etc/vsftpd/vuser/vuser_db
account  sufficient pam_userdb.so db=/etc/vsftpd/vuser/vuser_db

Добавляем опции в vsftpd.conf
Код:
nano /etc/vsftpd/vsftpd.conf

Код:
guest_enable=YES # активировать виртуальных пользователей
virtual_use_local_privs=YES # виртуальные пользователи c правами реальных
user_sub_token=$USER
local_root=/var/ftp/vuser/$USER # домашняя директория для каждого виртуального пользователя
chroot_local_user=YES # ограничение области

Отключить SELinux в /etc/selinux/config, чтобы пользователи имели права на записать в /var/ftp/vuser/$USER.

Создание каталогов виртуальных пользователей
Код:
cd /var/ftp
mkdir vuser
mkdir vuser/user1
mkdir vuser/user2
chown -R ftp:ftp /etc/ftp/vuser/

А Для локальных пользователей в каталоге /var/ftp/vuser/ нужно еще создать ссылку на все директории /home/:
Код:
mkdir yourlocaluser
chown ftp:ftp yourlocaluser
ln -s /var/ftp/vuser/yourlocaluser /home/yourlocaluser/ftphome

Все загружаемые файлы будут принадлежать пользователю ftp:ftp.
Код:
service vsftpd restart
 
Последнее редактирование:
Назад
Верх Низ