阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Vsftpd基于MySQL实现用户认证

170次阅读
没有评论

共计 8801 个字符,预计需要花费 23 分钟才能阅读完成。

ftp 简介

ftp:File Transfer Protocol,文件传输协议;FTP 是应用层协议,使用 C / S 架构,工作于 20/tcp,21/tcp。

FTP 使用交互式访问模式,两个并行 TCP 连接,一个控制连接,一个数据连接,控制连接用于在客户机和服务器之间发送控制信息,比如用户和密码,改变远程目录和命令,上传下载文件等,数据连接用于真正发送数据。ftp 有两种工作模式,主动模式(Active),被动模式(Passive)。

数据

  • 命令连接:文件管理类命令,始终在线的连接
  • 数据连接:数据传输,按需创建及关闭的连接

数据传输格式

  • 文本传输
  • 二进制传输

常用 ftp 工具

  • Server:wu-ftpd,proftpd,pureftod,vsftpd(Very Secure),ServU;
  • Client:ftp,lftp(lftpget),wget,curl,filezilla,gftp(Linux GUI),flashfxp,cuteftp;

相应码

1xx:信息

2xx:成功类的状态吗

3xx:提示需进一步提供补充类信息的状态码

4xx:客户端错误

5xx:服务端错误

两种模式

主动模式:

Vsftpd 基于 MySQL 实现用户认证

1、客户端随机端口 N /tcp 向 ftp 服务器 21/tcp 端口发送连接请求,tcp 三次握手建立控制连接;

2、客户端告知 ftp 服务器 N +1/tcp 端口用于数据传输;

3、ftp 服务器 20/tcp 端口向 N +1/tcp 端口发送请求建立数据连接;

被动模式:

Vsftpd 基于 MySQL 实现用户认证

玩转 vsftpd 服务器的四大高级配置:http://www.linuxidc.com/Linux/2013-09/90565.htm

vsFTPd 配置教程:http://www.linuxidc.com/Linux/2013-09/90562.htm

Ubuntu 实用简单的 FTP 架设 http://www.linuxidc.com/Linux/2012-02/55346.htm

Ubuntu 上架设 FTP 服务器和 Apache 服务器 http://www.linuxidc.com/Linux/2011-04/35295.htm

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

RHEL6 平台下 SeLinux 和 vsftpd 的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm

Linux 系统 vsftpd 源码安装 http://www.linuxidc.com/Linux/2013-03/81475.htm

openSUSE 13.2/13.1 下安装配置 FTP 服务器 vsftpd  http://www.linuxidc.com/Linux/2014-12/110070.htm

1、客户端随机端口 N /tcp 向 ftp 服务器 21/tcp 端口发送连接请求,tcp 三次握手建立控制连接;

2、ftp 服务器告知客户端随机 X /tcp 用于数据传输;

3、客户端通过 N +1/tcp 端口向 ftp 服务器 X /tcp 端口发送请求建立数据连接;

Vsftpd 服务安装配置:

# yum install vsftpd

# rpm -ql vsftpd:安装 vsftpd 生成文件:

# /etc/pam.d/vsftpd:用户认证配置文件;

# /etc/rc.d/init.d/vsftpd:服务脚本;

# /etc/vsftpd:配置文件目录;

# vsftpd.conf:主配置文件;

# /usr/sbin/vsftpd:主应用程序;

ftp 服务的用户有三类

  1. 系统用户:即服务器系统中存在的用户,其默认访问的资源位置为该用户的家目录;
  2. 匿名用户:不需要账号和密码即可登陆的用户,此类用户会被映射为一个系统用户 ftp,默认访问资源为 ftp 用户的家目录:/vat/ftp;
  3. 虚拟用户:此类用户在 ftp 服务器中创建,会映射为一个系统用户;

配置文件详解

# vim /etc/vsftpd/vsftpd.conf

匿名用户配置

> anonymous_enable=YES|NO:是否允许登陆;

> anon_mkdir_write_enable=YES|NO:是否允许上传;

> anon_ohter_write_enable=YES|NO:是否允许删除文件

注意:开启以上选项后,客户端使用匿名用户登陆,对 /var/ftp 目录仍无法上传文件,需要在系统中为 ftp 用户添加对目录的权限;处于安全考虑可在 /var/ftp 创建专门用于上传的目录,并添加权限;

# cd /var/ftp/

# mkdir upload

# setfacl -R -m u:ftp:rwx upload/

系统用户配置

> local_enable=YES|NO:是否允许登陆;
> write_enable=YES|NO:是否允许上传;
> local_umask=022:上传文件默认权限,与系统 umask 无关;
> chroot_local_user=YES|NO:是否禁锢所有的 ftp 本地用户于其家目录中;
> chroot_list_enable=YES|NO:是否禁锢文件中指定的 ftp 本地用户于其家目录中;
> chroot_list_file=/etc/vsftpd/chroot_list:禁锢用户文件路径;
> dirmessage_enable=YES|BO:用户登录服务器看到信息;

注意:由于是系统用户登录,此类用户可访问其他的目录,可以通过禁锢选项将系统用户禁锢在其家目录中。

日志选项:

> xferlog_enable=YES|NO:是否开启;

> xferlog_std_format=YES|NO:标准格式;

> xferlog_file=/var/log/xferlog:日志位置;

改变上传文件的属主:

> chown_uploads=YES|NO:是否改变上传文件的属主;

> chown_username=whoever:上传文件的属主;

控制用户登录:

> userlist_enable=YES|NO:是否启用控制用户登录的列表文件;

> userlist_deny=YES|NO:YES 黑名单,NO 白名单;默认名单文件为:/etc/vsftpd/user_list;

连接限制:

> max_clients=:最大并发连接数;

> max_per_ip=:每个 IP 可同时发起的并发请求数;

传输速率:

> anon_max_rate=:匿名用户的最大传输速率, 单位是“字节 / 秒”;

> local_max_rate=:本地用户的最大传输速率

vsftpd 使用 pam 完成用户认证,其用到 pam

> pam_service_name=vsftpd

虚拟用户:

所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录;各虚拟用户可被赋予不同的访问权限;通过匿名用户的权限控制参数进行指定;

用户认证:

虚拟用户:仅用于访问某特定服务中的资源;

nsswitch:networkserver switch,名称解析框架;

配置文件:/etc/nsswitch.conf

模块:/lib64/libnss*,/usr/lib64/libnss*

pam:pluggableauthentication module,用户认证框架;

模块:/lib64/security/

配置文件:/etc/pam.conf,/etc/pam.d/*

虚拟用户账号的存储方式:

文件:编辑文件

奇数行为用户名

偶数行为密码

此文件需要被编码为 hash 格式;

关系型数据库中的表中:即时查询数据库完成用户认证;

MySQL 库:pam 要依赖于 pam_mysql

# yum install pam_mysql

注意:pam_mysql 来自于 epel 源;

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2015-08/122117p2.htm

实例:Vsftpd 基于 MySQL 实现用户认证;

工作原理:

Vsftpd 基于 MySQL 实现用户认证

实验环境:

ftp 服务器,IP:192.168.1.10,操作系统:CentOS6.7 x86_64

MySQL 服务器,IP:192.168.1.11,操作系统:CentOS6.7 x86_64

客户端,IP:192.168.1.12,操作系统:CentOS6.7x86_64

实验过程:

MySQL 服务器安装配置:

# yum install mysql mysql-server mysql-devel

新建逻辑卷;

# pvcreate /dev/sdb

# vgcreate -s 8M data /dev/sdb

# lvcreate -L 49G -n mydata data

# mke2fs -text4 –b 4096 /dev/data/mydata

# mkdir /data

# vim /etc/fstab

> /dev/data/mydata    /data    ext4    defaults    0 0

# mount –a

# mkdir -p /data/mydata

# chown -R mysql:mysql /data/mydata/

# chmod -R o-rx /data/mydata/

编辑配置文件:

# vim /etc/my.cnf

> [mysqld]

> datadir=/data/mydata

启动服务:

# chkconfig mysqld on

# service mysqld start

创建虚拟用户:

# mysql

mysql> CREATE DATABASE ftpdb;

mysql> GRANT SELECT ON ftpdb.* TO ftpuser@’192.168.1.10′ IDENTIFIED BY ‘ftppass’;

mysql> FLUSHPRIVILEGES;

mysql> USE ftpdb;

mysql> CREATE TABLE users (

-> id INT AUTO_INCREMENT NOT NULL,

-> name CHAR(50) BINARY NOT NULL,

-> password VARCHAR(48) BINARY NOT NULL,

-> PRIMARY KEY(id) );

mysql> INSERT INTO users(name,password) VALUES(‘tom’,password(‘tomtom’));

mysql> INSERT INTO users(name,password) VALUES(‘jim’,password(‘jimjim’));

vsftpd 服务器配置:

# yum install vsftpd pam_mysql

创建虚拟用户映射的本地用户:

# mkdir /data

# useradd -s /sbin/nologin -d /data/ftpdir ftpuser

# chmod -R go+rx /data/ftpdir

编辑配置文件:

# vim /etc/vsftpd/vsftpd.conf

> anonymous_enable=YES

> local_enable=YES

> write_enable=YES

> chroot_local_user=YES

>

> pam_service_name=vsftpd.mysql:指定 pam 认证文件;

添加以下选项:

> guest_enable=YES:允许来宾账户;

> guest_username=ftpuser:映射为系统用户;

创建 pam 认证文件:

# vim /etc/pam.d/vsftpd.mysql

> auth required /lib64/security/pam_mysql.so user=ftpuser passwd=ftppass host=192.168.1.11 db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2

> account required /lib64/security/pam_mysql.so user=ftpuser passwd=ftppass host=192.168.1.11 db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2

为虚拟用户创建单独的配置文件;

# vim /etc/vsftpd/vsftpd.conf

> user_config_dir=/etc/vsftpd/users_config

为虚拟用户提供配置文件:

# mkdir /etc/vsftpd/vusers_config

# touch /etc/vsftpd/vusers_config/{tom,jim}

# vim /etc/vsftpd/vusers_config/tom

> anon_upload_enable=YES

> anon_mkdir_write_enable=YES

> anon_other_write_enable=YES

# vim /etc/vsftpd/vusers_config/jim

> anon_upload_enable=YES

> anon_mkdir_write_enable=YES

> anon_other_write_enable=YES

启动服务:

# chkconfig vsftpd on

# service vsftpd start

客户端测试:

安装客户端:

# yum install lftp

登陆测试:

Vsftpd 基于 MySQL 实现用户认证

结语:

Vsftpd 的服务就介绍到这里,试验中如有遗漏和失误,欢迎各路大神指正,谢谢。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/122117.htm

ftp 简介

ftp:File Transfer Protocol,文件传输协议;FTP 是应用层协议,使用 C / S 架构,工作于 20/tcp,21/tcp。

FTP 使用交互式访问模式,两个并行 TCP 连接,一个控制连接,一个数据连接,控制连接用于在客户机和服务器之间发送控制信息,比如用户和密码,改变远程目录和命令,上传下载文件等,数据连接用于真正发送数据。ftp 有两种工作模式,主动模式(Active),被动模式(Passive)。

数据

  • 命令连接:文件管理类命令,始终在线的连接
  • 数据连接:数据传输,按需创建及关闭的连接

数据传输格式

  • 文本传输
  • 二进制传输

常用 ftp 工具

  • Server:wu-ftpd,proftpd,pureftod,vsftpd(Very Secure),ServU;
  • Client:ftp,lftp(lftpget),wget,curl,filezilla,gftp(Linux GUI),flashfxp,cuteftp;

相应码

1xx:信息

2xx:成功类的状态吗

3xx:提示需进一步提供补充类信息的状态码

4xx:客户端错误

5xx:服务端错误

两种模式

主动模式:

Vsftpd 基于 MySQL 实现用户认证

1、客户端随机端口 N /tcp 向 ftp 服务器 21/tcp 端口发送连接请求,tcp 三次握手建立控制连接;

2、客户端告知 ftp 服务器 N +1/tcp 端口用于数据传输;

3、ftp 服务器 20/tcp 端口向 N +1/tcp 端口发送请求建立数据连接;

被动模式:

Vsftpd 基于 MySQL 实现用户认证

玩转 vsftpd 服务器的四大高级配置:http://www.linuxidc.com/Linux/2013-09/90565.htm

vsFTPd 配置教程:http://www.linuxidc.com/Linux/2013-09/90562.htm

Ubuntu 实用简单的 FTP 架设 http://www.linuxidc.com/Linux/2012-02/55346.htm

Ubuntu 上架设 FTP 服务器和 Apache 服务器 http://www.linuxidc.com/Linux/2011-04/35295.htm

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

RHEL6 平台下 SeLinux 和 vsftpd 的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm

Linux 系统 vsftpd 源码安装 http://www.linuxidc.com/Linux/2013-03/81475.htm

openSUSE 13.2/13.1 下安装配置 FTP 服务器 vsftpd  http://www.linuxidc.com/Linux/2014-12/110070.htm

1、客户端随机端口 N /tcp 向 ftp 服务器 21/tcp 端口发送连接请求,tcp 三次握手建立控制连接;

2、ftp 服务器告知客户端随机 X /tcp 用于数据传输;

3、客户端通过 N +1/tcp 端口向 ftp 服务器 X /tcp 端口发送请求建立数据连接;

Vsftpd 服务安装配置:

# yum install vsftpd

# rpm -ql vsftpd:安装 vsftpd 生成文件:

# /etc/pam.d/vsftpd:用户认证配置文件;

# /etc/rc.d/init.d/vsftpd:服务脚本;

# /etc/vsftpd:配置文件目录;

# vsftpd.conf:主配置文件;

# /usr/sbin/vsftpd:主应用程序;

ftp 服务的用户有三类

  1. 系统用户:即服务器系统中存在的用户,其默认访问的资源位置为该用户的家目录;
  2. 匿名用户:不需要账号和密码即可登陆的用户,此类用户会被映射为一个系统用户 ftp,默认访问资源为 ftp 用户的家目录:/vat/ftp;
  3. 虚拟用户:此类用户在 ftp 服务器中创建,会映射为一个系统用户;

配置文件详解

# vim /etc/vsftpd/vsftpd.conf

匿名用户配置

> anonymous_enable=YES|NO:是否允许登陆;

> anon_mkdir_write_enable=YES|NO:是否允许上传;

> anon_ohter_write_enable=YES|NO:是否允许删除文件

注意:开启以上选项后,客户端使用匿名用户登陆,对 /var/ftp 目录仍无法上传文件,需要在系统中为 ftp 用户添加对目录的权限;处于安全考虑可在 /var/ftp 创建专门用于上传的目录,并添加权限;

# cd /var/ftp/

# mkdir upload

# setfacl -R -m u:ftp:rwx upload/

系统用户配置

> local_enable=YES|NO:是否允许登陆;
> write_enable=YES|NO:是否允许上传;
> local_umask=022:上传文件默认权限,与系统 umask 无关;
> chroot_local_user=YES|NO:是否禁锢所有的 ftp 本地用户于其家目录中;
> chroot_list_enable=YES|NO:是否禁锢文件中指定的 ftp 本地用户于其家目录中;
> chroot_list_file=/etc/vsftpd/chroot_list:禁锢用户文件路径;
> dirmessage_enable=YES|BO:用户登录服务器看到信息;

注意:由于是系统用户登录,此类用户可访问其他的目录,可以通过禁锢选项将系统用户禁锢在其家目录中。

日志选项:

> xferlog_enable=YES|NO:是否开启;

> xferlog_std_format=YES|NO:标准格式;

> xferlog_file=/var/log/xferlog:日志位置;

改变上传文件的属主:

> chown_uploads=YES|NO:是否改变上传文件的属主;

> chown_username=whoever:上传文件的属主;

控制用户登录:

> userlist_enable=YES|NO:是否启用控制用户登录的列表文件;

> userlist_deny=YES|NO:YES 黑名单,NO 白名单;默认名单文件为:/etc/vsftpd/user_list;

连接限制:

> max_clients=:最大并发连接数;

> max_per_ip=:每个 IP 可同时发起的并发请求数;

传输速率:

> anon_max_rate=:匿名用户的最大传输速率, 单位是“字节 / 秒”;

> local_max_rate=:本地用户的最大传输速率

vsftpd 使用 pam 完成用户认证,其用到 pam

> pam_service_name=vsftpd

虚拟用户:

所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录;各虚拟用户可被赋予不同的访问权限;通过匿名用户的权限控制参数进行指定;

用户认证:

虚拟用户:仅用于访问某特定服务中的资源;

nsswitch:networkserver switch,名称解析框架;

配置文件:/etc/nsswitch.conf

模块:/lib64/libnss*,/usr/lib64/libnss*

pam:pluggableauthentication module,用户认证框架;

模块:/lib64/security/

配置文件:/etc/pam.conf,/etc/pam.d/*

虚拟用户账号的存储方式:

文件:编辑文件

奇数行为用户名

偶数行为密码

此文件需要被编码为 hash 格式;

关系型数据库中的表中:即时查询数据库完成用户认证;

MySQL 库:pam 要依赖于 pam_mysql

# yum install pam_mysql

注意:pam_mysql 来自于 epel 源;

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2015-08/122117p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8801字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中