Использование виртуальных пользователей хранимых в MySQL базе данных в VSFTPD
Рассмотрим как настроить vsftpd на авторизацию виртуальных пользователей, хранимых в MySQL базе данных.
Использование виртуальных пользователей повышает безопасность FTP-сервера, т. к. при авторизации не будут использоваться реальные учетные записи пользователей указанные в системных файлах /etc/passwd
и /etc/shadow
.
# Все ниже действия производились на Debian 8 Jessie.
Устанавливаем необходимые пакеты:
apt-get install libpam-mysql mysql-server mysql-client -y
Входим в mysql:
mysql -uroot -p
Создаем базу данных пользователей:
CREATE DATABASE vsftpd; GRANT ALL ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; USE vsftpd; CREATE TABLE users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, user VARCHAR(50) NOT NULL, passwd VARCHAR(50) NOT NULL, UNIQUE (user)); QUIT;
Создаем нового пользователя:
USE vsftpd; INSERT INTO users SET user='user1', passwd='passwd'; QUIT;
Смена пароля для пользователя:
USE vsftpd; UPDATE users SET passwd='passwd' WHERE user='user1'; QUIT;
Удалить пользователя:
USE vsftpd; DELETE FROM users WHERE user='user1'; QUIT;
Посмотреть имеющихся пользователей в базе:
USE vsftpd; SELECT * FROM users; +----+-------+---------+ | id | user | passwd | +----+-------+---------+ | 1 | user1 | 1234 | +----+-------+---------+
Создаем файл политики PAM
:
cat << EOF > /etc/pam.d/vsftpd.virtual auth required pam_mysql.so user=vsftpd passwd=password host=localhost db=vsftpd table=users usercolumn=user passwdcolumn=passwd crypt=0 account required pam_mysql.so user=vsftpd passwd=password host=localhost db=vsftpd table=users usercolumn=user passwdcolumn=passwd crypt=0 EOF
Создаем каталог для каталогов ftp виртуальных пользователей:
mkdir /srv/vftp_users
Создаем симлинк на необходимую для доступа папку в папку /srv/vftp_users
с именем пользователя, например для виртуального пользователя user1
доступ к /srv/ftp
:
ln -s /srv/ftp /srv/vftp_users/user1
[stextbox id=’info’]ИНФОРМАЦИЯ. Для закрытия доступа пользователю можно просто удалить его текущий симлинк, а для смены рабочей папки на другую удаляем текущий симлинк и создаем новый уже на другую папку.[/stextbox]
Выставим права для пользователя ftp
на папку к которой указали симлинк, т.к. виртуальные пользователи будут представляться от имени пользователя ftp
:
chown -R ftp:nogroup /srv/ftp
В конфигурационный файл /etc/vsftpd.conf добавляем параметры:
local_enable=YES chroot_local_user=YES user_sub_token=$USER local_root=/srv/vftp_users/$USER virtual_use_local_privs=YES guest_enable=YES guest_username=ftp write_enable=YES hide_ids=YES pam_service_name=vsftpd.virtual
Небольшое пояснение по некоторым пунктам настройки:
user_sub_token |
Опция для автоматического создания домашней директории каждому виртуальному пользователю, основана на шаблоне. |
local_root |
Перенаправление подключившихся пользователей вместо домашнего каталога, в иной каталог. |
virtual_use_local_privs |
Виртуальные пользователи пользуются такими же привилегиями, что и локальные. |
guest_enable |
Если опция установлена, все не анонимные логины классифицируются как «guest» логины. |
guest_username |
Задается имя пользователя гостевого логина. |
write_enable |
Разрешить пользователям загружать файлы на сервер. |
hide_ids |
Если опция установлена, вся пользовательская и групповая информация в списке директорий, выводится как «ftp». |
pam_service_name |
Строка содержит имя сервиса PAM, который будет использоваться vsftp. |
Перезапускаем службу vsftpd:
service vsftpd restart
Проверяем работу, пробуем зайти на FTP-сервер используя логин и пароль виртуального пользователя.
Обсуждение
Нет комментариев.