vsFTPd (англ. Very Secure FTP Daemon) — FTP-сервер с поддержкой IPv6 и SSL.
Является FTP-сервером по умолчанию многих операционных систем, и обслуживает официальные репозитории.
Настройка FTP сервера vsFTPd на Debian/Ubuntu
Переходим в режим супер пользователя root:
Для Debian:
Цитата
su
Для Ubuntu:
Цитата
sudo su
Устанавливаем vsFTPd:
Код
apt-get install vsftpd
Нашей основной задачей является блокирование пользователя внутри своей домашней директории, для того, чтобы не допустить его переход в папки «соседей» по серверу. Для этого мы немного подредактируем конфигурационный файл vsftpd.conf:
Код
nano /etc/vsftpd.conf
Находим и редактируем следующие строчки:
Разрешаем запись:
Код
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
Напишем свой баннер для входа, хотя он и не обязателен (на работу он не влияет):
Цитата
ftpd_banner=Welcome to our FTP service
Запираем пользователей в домашних директориях:
Код
chroot_local_user=YES
Разрешаем вход локальным пользователям:
Код
local_enable=YES
Запрещаем анонимный доступ, необходимо найти строку:
Код
#anonymous_enable=YES
И привести ее к виду:
Код
anonymous_enable=NO
Ну и добавим работу в пассивном режиме:
Код
pasv_min_port=50000
pasv_max_port=60000
pasv_max_port=60000
Поддержка IPv6 в vsFTPd
Для того чтобы добавить возможность работы с ip версии 6, то в конфигурационном файле находим строку:
Код
listen=YES
Ее необходимо закомментировать, чтобы она выглядела:
Код
#listen=YES
Также, нам необходимо найти строку:
Код
#listen_ipv6=YES
И снять с нее комментарий.
После этого, наш FTP сервер будет доступен по IPv4 и IPv6
Права доступа на файлы и директории
В любом случае, тот кто закачал файлы является их владельцем и может расширить права доступа к ним.
В общем, находим строку:
Код
local_umask=022
И меняем 022 на 023 или на ту которая необходима в вашей ситуации:
Код
local_umask=023
Авторизация vsftpd и /bin/false
Для обеспечения безопасности сервера, пользователям виртуальных хостов будет отключен шелл, как пишут на просторах интернетов, рекомендуется это делать следующим способом:
Код
useradd username -b /home -m -U -s /bin/false
Создадим для него пароль:
Код
passwd username
Выставим права:
Код
chown -R username /home/username
chmod 755 /home/username
chmod 755 /home/username
Отредактируем файл с шеллами:
Код
nano /etc/shells
Добавим туда строку:
Код
/bin/false
Для того чтобы пользователи с /bin/false могли авторизоваться на нашем ftp, нам необходимо отредактировать файл /etc/pam.d/vsftpd:
Код
nano /etc/pam.d/vsftpd
Найти и закоментировать строку (она самая последняя):
Код
auth required pam_shells.so
Чтобы она выглядела:
Код
#auth required pam_shells.so
И перезапускаем vsftpd:
Код
/etc/init.d/vsftpd restart
И еще немного для общего развития — пользователь с отключенным шеллом, не сможет подключиться по SSH! Это можно считать дополнительным плюсом к безопастности.
Как отключить шелл уже существующему в системе пользователю:
Код
nano /etc/passwd
Там находим нужного пользователя и /bin/bash меняем на /bin/false, после перезагрузки, изменения переменятся.
VSftpd не видит .htaccess
В конфиг /etc/vsftpd.conf добавить строку:
Код
force_dot_files=YES
И перезапустить vsftpd:
Код
/etc/init.d/vsftpd restart
При входе пользователем на FTP-Server версии 2.3.5 выдается сообщение
Код
"500 OOPS: vsftpd: refusing to run with writable root inside chroot()".
Все верно, в 2.3.5 ужесточены правила безопасности. Теперь сервер не делает chroot() в домашний каталог пользователя, если на него стоят права на запись.
Данное ограничение можно обойти путем установки расширенной версии 2.3.5 с заданием в файле настроек опции allow_writable_root, либо установить 3.0.0 и изменить значение опции allow_writeable_chroot конфигурационного файла.
Мини FAQ