Настройка Авторизации Пользователей в MySQL Средствами pam_mysql

В статье детально описан процесс настройки авторизации пользователей в MySQL средствами pam_mysql. На ее основе вы сможете настроить любое приложение, использующее PAM, для авторизации пользователей в базе данных MySQL. Для примера я приведу полную настройку связки vsftp с модулем pam_mysql.

Установка PAM-модуля pam_mysql

При помощи yum установите пакет pam_mysql. Для Fedora данный пакет доступен в стандартных репозиториях, для RHEL и CentOS – в EPEL:

# yum install pam_mysql

Настройка базы данных MySQL

1. Запустите MySQL:

# service mysqld start

2. Войдите в интерфейс MySQL:

# mysql

3. Создайте базу данных для работы с модулем pam_mysql:

mysql> create database pam_db;
Query OK, 1 row affected (0.05 sec)

4. Подключитель к данной базе данных:

mysql> use pam_db;
Database changed

5. Создайте таблицу пользователей:

mysql> create table pam_table(id int not null auto_increment primary key, user varchar(50), passwd varchar(50));
Query OK, 0 rows affected (0.00 sec)

6. Создайте таблицу для журналирования:

mysql> create table pam_log(id int not null auto_increment primary key, user varchar(255), message  varchar(255), process int, host varchar(255), time varchar(255));
Query OK, 0 rows affected (0.01 sec)

7. Создайте пользователя pam_user, которому разрешено работать c базой данных:

mysql> grant all on pam_db.* to pam_user@localhost identified by 'pam_pass';
Query OK, 0 rows affected (0.00 sec)

8. Создайте тестового пользователя test с паролем test (для примера пароли в базе данных будут храниться в открытом виде):

mysql> insert into pam_table set user='test', passwd='test';
Query OK, 1 row affected (0.00 sec)

Настройка FTP-сервера vsftpd

1. Перейдите в каталог /etc/pam.d/ и отредактируйте файл vsftpd следующим образом (должны остаться только эти 2 строки):

 auth       optional     pam_mysql.so user=pam_user passwd=pam_pass db=pam_db table=pam_table \
  usercolumn=user passwdcolumn=passwd crypt=0 verbose=1 sqllog=yes \
  logtable=pam_log logusercolumn=user logmsgcolumn=message \
  logpidcolumn=process loghostcolumn=host logtimecolumn=time

 account    required     pam_mysql.so user=pam_user passwd=pam_pass db=pam_db table=pam_table \
  usercolumn=user passwdcolumn=passwd crypt=0 verbose=1 sqllog=yes \
  logtable=pam_log logusercolumn=user logmsgcolumn=message \
  logpidcolumn=process loghostcolumn=host logtimecolumn=time

Внимание! Выставлена опция отладки verbose=1. После того, как Вы проверите, что все работает, отключите ее (verbose=0). Отладочная информация хранится в файле /var/log/secure.

2. Измените конфигурационный файл /etc/vsftpd/vsftpd.conf:

max_clients=200
max_per_ip=4
listen_address=10.0.0.1
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=222
dirmessage_enable=YES
connect_from_port_20=YES
chown_uploads=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner=Welcome to FTP service.
chroot_list_enable=NO
pam_service_name=vsftpd
listen=YES
tcp_wrappers=YES
virtual_use_local_privs=YES
guest_enable=YES
guest_username=virtual
chroot_local_user=YES
local_root=/home/virtual

3. Создайте локального пользователя virtual с домашним каталогом в /home/virtual/ – именно к этому каталогу и будут обращаться пользователи после авторизации.

# useradd -g nobody -d /home/virtual -s /sbin/nologin virtual

4. Запустите службу vsftpd:

# service vsftpd start

Тестирование авторизации пользователей средствами pam_mysql

Проверьте, что авторизация работает:

# ftp 10.0.0.1
Connected to 10.0.0.1.
220 Welcome to FTP service.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (10.0.0.1:user): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
quit

Авторизация прошла успешно.

Теперь убедитесь, что в таблицу pam_log базы данных pam_db сохраняется информация о авторизации.

# mysql
mysql> use pam_db;
mysql> select * from pam_log;
+----+------+------------------------+---------+---------------+---------------------+
| id | user | message                | process | host          | time                |
+----+------+------------------------+---------+---------------+---------------------+
|  1 | test | AUTHENTICATION SUCCESS |    8256 | 10.0.0.2      | 2006-12-20 10:56:04 |
|  2 | test | QUERYING SUCCESS       |    8256 | 10.0.0.2      | 2006-12-20 10:56:04 |
+----+------+------------------------+---------+---------------+---------------------+

На этом настройка авторизации пользователей в MySQL закончена.

Автор: Денис Фролов

Статьи по Теме

Другие Статьи

Категории
Поиск