Настройка Vsftpd для анонимного и пользовательского входа.
Данная система настроена и работает на сервере с операционной системой CentOS release 4.7 (Final), используются пакеты из родного репозитария CentOS, без перекомпиляций. От сервера требовалось: Разрешить анонимный вход для пользователей только на чтение и только к определённому каталогу. Разрешить аутентифицированным пользователям доступ к определённым каталогам за запись. Основной конфигурационный файл находиться в каталоге /etc/vsftpd/ . я использовал следующие директивы:
Разберём каждую
При входе на сервер клиенту будет высвечиваться сообщение указанное в
строке этой директивы:
Разрешаем подключаться анонимным пользователям
Разрешаем подключаться локальным пользователям. В нашем случае это пользователи в базе данных, в более общем случае это пользователи описанные в /etc/passwd
Запрещаем запись файлов для всех (для нужных пользователей запись
откроем в их конфигах)
Запрещаем загрузку файлов на сервер анонимным пользователям.
А также запрещаем создание каталогов и вообще изменение чего-бы то ни было для анонимных пользователей:
Что бы управлять доступами аутентифицированных пользователей создаём каталог в котором будут храниться конфиги для них:
и прописываем данный каталог в конфиг vsftpd
Что бы пользователь вbдел свой каталог как корневую директорию и не мог покинуть указанную директорию, должна быть указана следующая директива:
Указываем что все аутентифицированные пользователи будут иметь права гостя на сервере
Для создания гостевой учётной записи создадим учётную запись virtual со
следующими параметрами
и группу для него
и укажем эту учётную запись для гостевого входа:
указываем серверу как использовать pam аутентификацию, для этого указываем на файл ftp который находиться в каталоге конфигурации /etc/pam.d . О содержимом этого файла будет сказано ниже:
Указываем что демон vsftpd запускался в одиночном режиме:
Далее можно запустить демон для проверки конфига и проверки анонимного соединения
теперь из консоли наберем
В ответ на приглашение типа:
введём логин
на запрос пароля жмем энтер, должно получиться следущее:
Если все правильно то вход выполнен и на команду ls будет выведен список директорий в каталоге /var/ftp (Является домашним для автоматически создаваемого пользователя ftp)
Теперь создадим файл в котором списком будут следовать логины и пароли наших пользователей. После заполнения базы этот файл следует удалить или поставить на него права 0000.
Например файл logins.txt:
и так далее.
Теперь сгенирируем db базу данных из нашего файла со списком, для этого выполним команду:
в результате будет сгенерирована база с хешами из файла logins.txt.
Что бы научить pam работать с этой базой, в файле /etc/pam.d/ftp
сделаем ссылку на нашу базу:
!Обратите внимание что файл с базой прописывается без расширения.
Теперь следует создать конфиги для наших пользователей в папке /etc/vsftpd_user_conf которая указана в директиве user_config_dir в основном конфиге.
Каждому пользователю соответствует свой файл с именем этого пользователя. Например для пользователя vasya следует создать файл vasya в котором описать настройки сервера именно для этого пользователя:
Что означает:
Путь до каталога пользователя. На этом каталоге должны стоять права на чтение и изминение для реального пользователя virtual которого описали выше:
Разрешить пользователю удалять любые файлы в своем каталоге
Разрешить пользователю запись и создание каталогов в своей директории
Обратная маска для файлов создаваемых пользователем в восмеричном
формате.
После создания всех файлов для всех пользователей следует удалить или
закрыть доступ для файла logins.txt.
Рестартуем демон
На этом все настройки закончены.
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
Комментариев нет:
Отправить комментарий