ITblog.by » Статьи » Установка и настройка vsftpd

Установка и настройка vsftpd


Небольшая заметка как установить и настроить vsftpd демон. Поехали.

 

Поставлена задача: выдать доступ по ftp к определенному каталогу, авторизация по login/password. 

 

Все операции производятся от пользователя root. Устанавливаем стандартным образом:

apt-get install vsftpd

Файл настроек находится /etc/vsftpd.conf Для решения поставленной задачи был написан следующий конфиг:

#config vsftpd
listen=YES
# Вход для зарегистрированных в системе пользователей
local_enable=YES
#chroot_local_user=YES
# включить список пользователей, которым заблокирован выход выше домашнего каталога
chroot_list_enable=YES
# в следующем файле указываются пользователи, которые запиратся в домашнем каталоге
chroot_list_file=/etc/vsftpd.chroot_list
# проверка на наличие шелла пользователя (из /etc/passwd) в файле /etc/shells
check_shell=NO
# разрешить закачку файлов
write_enable=YES
# включение логирования uploads/downloads файлов
xferlog_enable=YES
# использовать порт 20 для передачи данных
connect_from_port_20=YES
# изменение владельца закачанных файлов на указанного нижу
chown_uploads=YES
chown_username=nobody
# закрыть доступ к файлам, подходящим под следующий шаблон
deny_file={mod_order.*,configuration.php}
# и некоторые другие стандартные записи, которые в данном случае не важны
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Для того. чтобы запретить ftp пользователям логиниться по ssh нужно добавить специальный шелл nologin:

# which nologin
/usr/sbin/nologin 
echo '/usr/sbin/nologin' >> /etc/shells

Создаем (если надо) каталог, в котором будут в последующем храниться домашние директории пользователя:

mkdir -p /home/pub/

Далее добавляем нужного нам пользователя:

useradd -s /usr/sbin/nologin -d /home/pub/www.user -m  abc

где /home/pub/www.user - домашний каталог пользователя, abc - имя пользователя

Пароль можно задать командой, -m - создать каталог для пользователя

passwd abc

с последующим его вводом.

Перезагружаем vsftpd:

/etc/init.d/vsftpd restart

и проверяем проверяем работу сервиса.

Приложение: Файл  /etc/vsftpd.chroot_list  содержит список пользователей, которые запираются в домашнем каталоге.

 

p.s.: Исправил одну ошибку, дополнил статью. Будут проблемы в настройке - пишите


Аватар пользователя sotnik
  • sotnik
  • 20 апреля 2013 22:37
  • Группа Гости
  • Новостей: 0
  • Комментариев: 0
а у меня не получается почему-то с паролем...
не могу войти...
ошибка 530
Аватар пользователя greenlogles
  • greenlogles
  • 22 апреля 2013 02:16
  • Группа Администраторы
  • Новостей: 65
  • Комментариев: 22
sotnik, попробуйте посмотреть в логе /var.log/vsftpd.log ошибку, из-за чего возник конфликт
Аватар пользователя sotnik
  • sotnik
  • 22 апреля 2013 23:47
  • Группа Гости
  • Новостей: 0
  • Комментариев: 0
пробовал... /var/log/vsftpd.log
Sat Apr 20 22:36:06 2013 [pid 29665] CONNECT: Client "85.26.183.192"
Sat Apr 20 22:36:12 2013 [pid 29664] [sotnik] FAIL LOGIN: Client "85.26.183.192"

мне ни о чем не говорит...
Аватар пользователя greenlogles
  • greenlogles
  • 4 мая 2013 22:52
  • Группа Администраторы
  • Новостей: 65
  • Комментариев: 22
sotnik, покапался в истории изменений этого ftp сервера.
В общем, был один глюк (вернее фича): если пользователь в chroot, то для безопасности его домашний каталог должен иметь права только чтение. Но об этом как правило в логе информируют.

Еще перепроверьте добавился ли нужный шелл в /etc/shells, из-за этого может не пускать.
Думаю не стоит упоминать про проверку правильности ввода пароля)
Аватар пользователя mich
  • mich
  • 26 июля 2013 13:35
  • Группа Гости
  • Новостей: 0
  • Комментариев: 0
ошибок в инструкции прилично. порт 20 указан в конфиге а работает на 21 порту. я забадался клиент настраивать. мелочь а жопа. и выходит спокой но он во все каталоги. ты бы хоть решетку убрал. смотри что выкладываешь
Аватар пользователя greenlogles
  • greenlogles
  • 26 июля 2013 16:55
  • Группа Администраторы
  • Новостей: 65
  • Комментариев: 22
mich,
Для начала, 21-й порт используется для соединения с сервером, 20-й в активном режиме фтп сервера используется для передачи данных. Подключаться, естественно, нужно на 21-й стандартный порт.

Если надо запереть (chroot) юзверя, то его логин надо добавить в /etc/vsftpd.chroot_list
После этого дальше своего каталога не сможет данный пользователь.
НО. В 2.3.5 разработчики ужесточили политику безопасности для предотвращения эксплуатации потенциальной уязвимости, которая есть в старых версиях библотеки glibc. В итоге они запретили chroot() в каталог, в котором разрешена запись пользователю.

Т.е. в новой версии необходимо запретить запись в сам домашний каталог (но не в его поддирректории). Такие уж разработчики.

К сожелению, статья писалась до появления данной "фичи".

Если же вам необходим полный доступ с chroot'ом, то советую поставить pureftpd. Думаю о нем в ближайшее время напишу
Rating All.BY Анализ сайта ITblog.by