设为首页 收藏本站
查看: 1090|回复: 0

[经验分享] 创建vsftpd服务器基于mysql的虚拟用户认证

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-14 08:21:52 | 显示全部楼层 |阅读模式
简单罗列基础命令,只分享我的想法!
一、目的
要求:配置允许虚拟用户访问的vsftpd服务器,虚拟用户存储在另一台MySQL的服务器上面,虚拟用户账号有两个分别是tom和jerry,密码是tom和jerry,要求对这两个账户的权限做一下限制(根据实际的要求,自己调节)。
环境:MySQL服务器(172.16.49.1),CentOS 6.6和MariaDB-5.5.43。另一台是通过yum安装vsftpd(192.168.0.22),OS是CentOS 6.6。
  • MySQL是通用二进制格式安装,前文的博客已经介绍过如何安装。
  • vsftpd。

1、介绍vsftpd
Vsftpd是ftp协议实现的一种方式,在应用层,不依赖于通信子网,也就是不依赖于内核,所以,Windows用户也可以使用。本身基于C/S模式,服务器端始终监听在21端口,因为21端口是命令连接端口,而20端口是数据传输的端口,需要数据传输的时候建立,之后拆除,而不是一致处于监听状态,所以,client和server之前的数据传输的连接又可以分为“主动”和“被动”两个模式。
“主动”:由server端主动创建的连接。就是首先client的随机端口连接server的21端口,当收到下载数据的命令之后,server端主动会开启20端口,连接client的随机+1端口,传输完毕20端口将被“拆除”,一般不用“主动”连接的模式,因为如果client有防火墙的话,一般需要client手动去放行或设置。
“被动”:由client创建的连接。就是首先client的随机端口连接server的21端口,在21端口client和server已经“协商”完毕,server端使用哪个随机端口去连接client的随机+1端口(注意:为什么client不主动连接server的20端口,因为server的20端口不会像21端口那样,vsftpd一直在监听,按需要建立然后关闭)。
ftp的传输格式是看数据,如果数据是文本就文本传输,如果数据是二进制的程序,那就是以二进制传输,这一点不同于http协议,只能是以文本流进行传输。
ftp也有信息码:
1系列:信息码。
2系列:成功。
3系类:需要进一步提示补充的状态码(当你输入账户之后,会有,因为还有密码)。
4系类:客户端错误。
5系列:服务器端错误。
因为vsftpd只有在类unix服务器上实现,所以认证主要是通过OS自己的pam模块认证,OS的系统用户,匿名用户(没有用户和密码),虚拟用户(在数据库或其它文件中存储的账号和密码)认证。
2、yum安装vsftpd之后生成的主要文件。
用户认证(pam)配置文件:/etc/pam.d/vsftpd(注意:主配置文件中的pam_service_name=vsftpd,就是调用这个配置文件)。
主应用程序:/user/sbin/vsftpd
匿名用户共享的资源:/var/ftp(注意:所有的匿名的用户都需要映射到OS中的用户,为了安全起见,最好是系统用户,但是需要创建系统用户的时候建立家目录,因为模式开放的就是家目录,只有映射到OS中的用户你才能够访问文件,因为local file也是需要权限的,但是不能更改/var/ftp的权限,可以新建一个目录,然后修改可写的权限)。
系统用户就是用户的家目录。
配置文件目录:/etc/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
3、对于主配置文件的部分内容进行说明
1
2
3
4
5
6
7
anonymous_enable=YES //是否启用匿名用户
anon_upload_enable=YES //是否开启匿名用户上传
anon_mkdir_write_enable=YES //是否允许匿名用户创建目录
anon_ohter_write_enable=YES //是否允许匿名用户删除文件
local_enable=YES //是否启用本地系统用户
write_enable=YES //是否允许本地系统用户删除、创建
local_umask=022 //限制权限




禁锢所有的ftp本地用户于其家目录中:
1
chroot_local_user=YES



禁锢文件中指定的ftp本地用户于其家目录中:
1
2
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list



日志:
1
2
3
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog



改变上传文件的属主:
1
2
chown_uploads=YES
chown_username=whoever



是否启用控制用户登录的列表文件/etc/vsftpd/user_list
1
2
userlist_enable=YES
userlist_deny=YES|NO



连接限制:
1
2
max_clients:  //最大并发连接数
max_per_ip: //每个IP可同时发起的并发请求数




传输速率:
1
2
anon_max_rate:  //匿名用户的最大传输速率, 单位是“字节/秒”
local_max_rate:  //本地用户的最大传输速率, 单位是“字节/秒”




强制启动文本流传输,有可能客户端打开的文件是乱码
1
2
ascii_upload_enable=YES
ascii_download_enable=YES



4、配置
A、安装所需要的程序
1、安装vsftpd、pam_mysql和mysql_server
注意:pam_mysql是由epel源提供

B、创建虚拟用户账号
1、准备数据库及相关的表格
1
2
3
4
5
6
7
mysql>CREATE DATABASE vsftpd;
//mysql>GRANT SELECT ON vsftpd.* TO vsftp@localhost IDENTIFIED BY'mima'; 数据库在本机的时候可以使用
mysql>GRANT SELECT ON vsftpd.* TO vsftp@d'172.16.%.%' IDENTIFIEDBY 'mima';
mysql>FLUSH PRIVILEGES;
  
mysql>use vsftp;                                                                                                                     
mysql>CREATE TABLE users (id INT UNSIGNED AUTO_INCREMENT NOT NULLPRIMARY KEY,name CHAR(20) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL);




2、添加测试的虚拟账户
为了密码的安全使用mysql内部的函数进行加密,之后密码的位数是48位。
1
mysql>INSERT INTO users (name,password) VALUES(’tom',password('tom')),(’jerry',password('jerry')



1





C、配置vsftpd
1、建立pam认证所需的文件
1
2
3
4
vim /etc/pam.d/vsftpd.mysql //为了不与原来的vsftpd的认证文件冲突,所以进行重新命名
添加如下两行(可以直接写pam_mysql.so,会自动去/lib64/security这个目录下面去找):
auth required /lib64/security/pam_mysql.so user=vsftp passwd=mima host=MYSQL那台机器的IP db=vsftpd table=users usercolumn=name passwdcolumn=passwordcrypt=2  //认证账号,为什么是crypt=2,rpm-ql pam_mysql中的README解决
account required /lib64/security/pam_mysql.so user=vsftp passwd=mima host=MYSQL那台机器的IP db=vsftpd table=users usercolumn=name passwdcolumn=passwordcrypt=2  //检查账号是否在有效期之内





2、修改vsftpd的配置文件,使其适应mysql的认证
建立虚拟用户映射的系统用户及对应的家目录
1
2
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod go+rx /var/ftproot




确保主配置文件/etc/vsftpd/vsftpd.conf中有,可以根据需要临时修改
1
2
3
4
5
6
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES




而后添加以下选项
1
2
guest_enable=YES
guest_username=vuser




确保pam_service_name的值
1
pam_service_name=vsftpd.mysql //只能通过mysql认证登陆





D、启动vsftpd服务
1
2
/etc/init.d/vsftpd start
chkconfig vsftpd on




使用虚拟用户登陆,验证配置结果,你可以通过win的IE或者cmd等

E、配置虚拟用户具有不同的访问权限
vsftpd可以在配置文件目录中为每个用户提供单独的配置文件已定义其ftp服务访问权限,每个虚拟用户的配置文件名桐虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定路径及名称即可。
1、配置vsftpd为虚拟用户使用配置文件目录
1
vim /etc/vsftpd/vsftpd.conf



添加如下
1
user_config_dir=/etc/vsftpd/vusers_config




2、创建所需要的目录,并为虚拟用户提供配置文件
1
2
mkdir /etc/vsftpd/vusers_config
touch /etc/vsftpd/vusers_config/{tom,jerry}




3、配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传下载的权限,可以修改/etc/vsftpd/vuser_config/tom文件,在里面添加
1
2
3
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}



四、截图如下
wKiom1VTPVPicnRkAALL_GjMNY0011.jpg
图1、数据库的创建
wKioL1VTPwHiH84FAANNQKbCny4686.jpg
图2、虚拟用户tom登陆
wKioL1VTP5qw1ArsAAHCS30FI9c371.jpg
图3、tom用户上传和创建目录
注意:图3中227 EnteringPassive Mode (192,168,0,22,28,236)告诉你是被动模式下载的数据,其实服务器的端口号就是28*256+236。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-66722-1-1.html 上篇帖子: vsftpd程序实现ftp 下篇帖子: Linux中如何搭建一个ftp服务服务器-超详细 服务器 mysql 认证 用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表