VSFTPD使用pam_MySQL作用户验证

Posted liang-yao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VSFTPD使用pam_MySQL作用户验证相关的知识,希望对你有一定的参考价值。

1. 安装Vsftp

yum install -y vsftpd

 

2. 安装MariaDB

yum install -y mariadb mariadb-devel mariadb-server

systemctl restart mariadb

systemctl enable mariadb

netstat -npl|grep 3306

 

3. 为root账户设置密码

mysql_secure_installation          //该命令会执行以下几个设置:

a)为root用户设置密码y

b)删除匿名账号y

c)取消root用户远程登录y

d)删除test库和对test库的访问权限y

e)刷新授权表使修改生效y

 

4. 建立一个数据库并设置相应权限。

[[email protected] ~]# mysql -u root -p

MariaDB [(none)]> create database ftpdb;

MariaDB [(none)]> use ftpdb;

MariaDB [ftpdb]> create table user(name varchar(20),passwd varchar(48));

MariaDB [ftpdb]> insert into user(name,passwd) values ("user123",password("123")),("user456",password("456"));

MariaDB [ftpdb]> select * from user;

+---------+-------------------------------------------+

| name    | password                                  |

+---------+-------------------------------------------+

| user123 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |

| user456 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |

+---------+-------------------------------------------+

 

MariaDB [ftpdb]> grant select on ftpdb.user to [email protected] identified by "123456";

MariaDB [ftpdb]> flush privileges;

 

 

5. 配置PAM认证。

yum install -y automake pam pam-devel openssl-devel

yum groupinstall -y ‘development tools‘

 

6. 编译安装pam_mysql包

wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz

tar -xzvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1/

./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security

make && make install

ls /lib64/security/ | grep mysql

pam_mysql.la

pam_mysql.so

 

7. 建立PAM认证信息

vim /etc/pam.d/vsftpd,注释其他内容,写入如下两行:

 

auth required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=localhost db=ftpdb table=user usercolumn=name passwdcolumn=passwd crypt=2

account required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=localhost db=ftpdb table=user usercolumn=name passwdcolumn=passwd crypt=2

 

crypt=0: 明文密码

crypt=1: 使用crpyt()函数加密

crypt=2: 使用MYSQL中的password()函数加密

crypt=3:使用md5的散列方式

 

8. 建立本地虚拟用户

useradd -s /sbin/nologin ftpuser

 

9. 修改vsftpd.conf文件

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO #不允许匿名用户登录

local_enable=YES #允许本地用户登录

write_enable=YES #写入权限

local_umask=077 #本地用户创建文件的umask

anon_upload_enable=NO #不允许匿名用户上传

anon_mkdir_write_enable=NO #允许匿名用户创建目录

dirmessage_enable=YES #当用户进入某个目录时,会显示该目录需要注意的内容,显示的档案默认是”.message”

xferlog_enable=YES # 表明将记录的上传下载情况写在xferlog_file所指定的文件中

connect_from_port_20=YES #主动模式数据传输接口

chown_uploads=YES #如果启用,所有匿名上传文件的所有权将更改为chown_username中指定的用户

chown_username=ftpuser

xferlog_file=/var/log/xferlog

xferlog_std_format=YES #传输日志文件将以标准 xferlog 的格式书写

idle_session_timeout=600 #空闲会话中断时间

data_connection_timeout=120 #表明数据连接超时时间为120

ftpd_banner=welcome #首次登录提示信息

chroot_local_user=YES #把所有用户限制在主目录

chroot_list_enable=NO #吧所有用户限制在主目录,不允许chroot_list中的例外

#chroot_list_file=/etc/vsftpd/chroot_list

 listen=YES #启用监听模式

listen_ipv6=NO #启用IPv6监听模式,与listen互斥

pam_service_name=vsftpd #PAM模块提供的认证服务所使用的配置文件名

userlist_enable=YES #禁止userlist_file指定的文件中的用户名登录

tcp_wrappers=YES #主机访问控制

 

allow_writeable_chroot=YES

anon_other_write_enable=NO #不允许匿名用户修改

anon_world_readable_only=NO #不允许匿名用户下载

delete_failed_uploads=TRUE #将上传失败的文件删除

dirlist_enable=YES #允许显示目录列表

download_enable=YES #允许下载

local_root=/home/ftpuser #FTP根目录

anon_max_rate=1048576 #匿名用户最大传输速率(字节/)0为无限制

local_max_rate=1048576 #本地用户最大传输速率(字节/)0为无限制

anon_umask=022 #匿名用户创建文件的umask

max_login_fails=3 #3次登录失败终止会话

max_per_ip=10 #限制客户端的并发连接数

pasv_enable=YES #开启被动模式

pasv_min_port=24500 #被动模式最小端口

pasv_max_port=24600 #被动模式最大端口

listen_address=192.168.200.101 #监听地址

 

guest_enable=YES#开启虚拟用户

virtual_use_local_privs=YES

#当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限

 guest_username=ftpuser  #虚拟用户对应系统用户

 

10. 启动vsftpd服务。

systemctl start vsftpd

systemctl enable vsftpd  

以上是关于VSFTPD使用pam_MySQL作用户验证的主要内容,如果未能解决你的问题,请参考以下文章

在Centos7上使用vsftpd+pam_mysql实现虚拟用户认证

mysql数据库结合pam_mysql模块实现vsftpd虚拟用户

vsftpd基于pam_mysql做虚拟用户认证

实现基于MYSQL验证的vsftpd虚拟用户功能

vsftpd虚拟用户认证配置(vsftpd+pam+mysql)

vsftpd+pam+mysql