6.8.09

Статья по настройке Very Secure FTP для анонимного и пользовательского доступа.

Настройка Vsftpd для анонимного и пользовательского входа.

Данная система настроена и работает на сервере с операционной системой CentOS release 4.7 (Final), используются пакеты из родного репозитария CentOS, без перекомпиляций. От сервера требовалось: Разрешить анонимный вход для пользователей только на чтение и только к определённому каталогу. Разрешить аутентифицированным пользователям доступ к определённым каталогам за запись. Основной конфигурационный файл находиться в каталоге /etc/vsftpd/ . я использовал следующие директивы:

ftpd_banner=Welcome to FTP server!
anonymous_enable=YES
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
user_config_dir=/etc/vsftpd_user_conf
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
chown_username=virtual
pam_service_name=ftp
listen=YES

Разберём каждую

При входе на сервер клиенту будет высвечиваться сообщение указанное в
строке этой директивы:
ftpd_banner=Welcome to FTP server!

Разрешаем подключаться анонимным пользователям
anonymous_enable=YES

Разрешаем подключаться локальным пользователям. В нашем случае это пользователи в базе данных, в более общем случае это пользователи описанные в /etc/passwd
local_enable=YES

Запрещаем запись файлов для всех (для нужных пользователей запись
откроем в их конфигах)
write_enable=NO

Запрещаем загрузку файлов на сервер анонимным пользователям.
anon_upload_enable=NO

А также запрещаем создание каталогов и вообще изменение чего-бы то ни было для анонимных пользователей:
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

Что бы управлять доступами аутентифицированных пользователей создаём каталог в котором будут храниться конфиги для них:
#mkdir /etc/vsftpd_user_conf

и прописываем данный каталог в конфиг vsftpd
user_config_dir=/etc/vsftpd_user_conf

Что бы пользователь вbдел свой каталог как корневую директорию и не мог покинуть указанную директорию, должна быть указана следующая директива:
chroot_local_user=YES

Указываем что все аутентифицированные пользователи будут иметь права гостя на сервере
guest_enable=YES

Для создания гостевой учётной записи создадим учётную запись virtual со
следующими параметрами
virtual:x:32009:32009::/home/ftp:/sbin/nologin

и группу для него
virtual:x:32009:

и укажем эту учётную запись для гостевого входа:
guest_username=virtual
chown_username=virtual

указываем серверу как использовать pam аутентификацию, для этого указываем на файл ftp который находиться в каталоге конфигурации /etc/pam.d . О содержимом этого файла будет сказано ниже:
pam_service_name=ftp


Указываем что демон vsftpd запускался в одиночном режиме:
listen=YES


Далее можно запустить демон для проверки конфига и проверки  анонимного соединения

#/etc/init.d/vsftpd start

теперь из консоли наберем
#ftp our_hostname_or_ip

В ответ на приглашение типа:
Connected to our_hostname_or_ip (10.10.10.10).
220 Welcome to FTP server!
Name (our_hostname_or_ip:username):

введём логин
#anonymous

на запрос пароля жмем энтер, должно получиться следущее:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

Если все правильно то вход выполнен и на команду ls будет выведен список директорий в каталоге /var/ftp (Является домашним для автоматически создаваемого пользователя ftp)

Теперь создадим файл в котором списком будут следовать логины и пароли наших пользователей. После заполнения базы этот файл следует удалить или поставить на него права 0000.

Например файл logins.txt:

vasya
password
tanya
lond_passwod

и так далее.

Теперь сгенирируем db базу данных из нашего файла со списком, для этого выполним команду:

#db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db

в результате будет сгенерирована база с хешами из файла logins.txt.

Что бы научить pam работать с этой базой, в файле /etc/pam.d/ftp
сделаем ссылку на нашу базу:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

!Обратите внимание что файл с базой прописывается без расширения.

Теперь следует создать конфиги для наших пользователей в папке /etc/vsftpd_user_conf которая указана в директиве user_config_dir в основном конфиге.

Каждому пользователю соответствует свой файл с именем этого пользователя. Например для пользователя vasya следует создать файл vasya в котором описать настройки сервера именно для этого пользователя:

anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_root=/home/ftp/vasya
anon_other_write_enable=YES
anon_umask=0002

Что означает:
Путь до каталога пользователя. На этом каталоге должны стоять права на чтение и изминение для реального пользователя virtual которого описали выше:
local_root=/home/ftp/vasya

Разрешить пользователю удалять любые файлы в своем каталоге
anon_world_readable_only=NO

Разрешить пользователю запись и создание каталогов в своей директории
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

Обратная маска для файлов создаваемых пользователем в восмеричном
формате.

После создания всех файлов для всех пользователей следует удалить или
закрыть доступ для файла logins.txt.

Рестартуем демон
/etc/init.d/vsftpd restart
На этом все настройки закончены.

Комментариев нет:

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

Популярные сообщения