设为首页 收藏本站
查看: 2728|回复: 6

[经验分享] 基于vsftpd+pam+mysql架设ftp并实现虚拟用户登录

[复制链接]

尚未签到

发表于 2013-4-19 09:24:27 | 显示全部楼层 |阅读模式

1、系统环境和所需软件包

     Redhat Enterprise-5.8、vsftpd、mysql、pam-mysql-0.7RC1

2、本文大致内容

①、vsftpd安装

②、vsftpd配置文件的介绍

③、vsftpd服务器的基本实现和一般控制设置

④、虚拟用户vsftpd服务器的搭建、测试等

3、FTP服务器介绍


  • FTP服务器的连接分为两种:
  •    控制连接:客户端向服务器端请求连接,而且一旦建立就不在断开,等到人为断开的时候此连接才会释放,此连接是
  • 利用tcp的21号端口
  •    数据连接:客户端和服务器之间进行数据传输的连接,是一种按需连接,一旦数据传输介绍,此连接就会断开,
  • 此连接利用一种随机的端口。
  • FTP服务器常用的命令
  • get:下载文件
  • mget:下载多个文件
  • put:上传文件
  • mput:上传多个文件
  • lcd:切换本地目录
  • cd、ls等等众多的命令。

4、FTP服务器的安装

  在红帽上面利用红帽自身的rpm包安装即可实现一个简单的ftp服务器架设

  yum install vsftpd

6466723_1366260624lXpE.jpg

此处一个简单的ftp服务器就建成了~~~~~~

6466723_1366260627sD5B.jpg


编辑vsftpd.conf配置文件


  • anonymous_enable=YES  //是否开启匿名用户访问
  • anonymous_enable=YES  //是否开启本地用户既系统用户访问
  • write_enable=YES            //是否开启本地用户的写权限:上传文件的权限
  • local_umask=022            //系统用户上传文件时候的umask默认值
  • anon_upload_enable=YES //是否开启虚拟用户上传文件的权限
  • anon_mkdir_write_enable=YES //是否开启虚拟用户新建文件件的权限
  • chown_uploads=YES           //是否开启上传文件的属主修改  
  • chown_username=whoever  //上传文件后所属主
  • xferlog_file=/var/log/xferlog
  • xferlog_std_format=YES      //日志记录,需要开启上面两项才可以生效
  • idle_session_timeout=600   //连接超时时间
  • data_connection_timeout=120 //数据传输超时时间
  • ascii_upload_enable=YES  
  • ascii_download_enable=YES   //是否开启ascii码的上传、下载
  • chroot_list_enable=YES         //是否锁定用户登录后的目录,配置文件在/etc/vsftpd/chroot_list,
  • 表内定义了锁定的用户列表
  • chroot_list_file=/etc/vsftpd/chroot_list  //用户登录以后把用户锁在那个目录下的定义
  • listen=YES                               //设置ftp服务是否为独立进程
  • pam_service_name=vsftpd       //pam认证服务名称  
  • userlist_enable=YES               // 用户列表限定
  • 用法(定义黑白名单)
  • 定义黑名单:userlist_enable=YES 、userlist_deny=YES
  • 定义白名单:userlist_enable=YES、userlist_deny=NO  
  • max_clients =                           // 单个IP最多发起几个请求的
  • max_per_ip =                           //最多允许几个IP链接FTP服务器
  • 另外的两个vsftpd的配置文件:
  • /etc/vsftpd/ftpusers------------内规定的用户都禁止登陆ftp服务
  • /etc/vsftpd/user_list-----------规定了不能登陆ftp服务器的用户

5、设置环境实现测试:


  • 测试之前需要保证本机的SElinux是关闭的,否则会造成失败的!
  • setenforce 0  立即关闭 SElinux
  • vim /etc/selinux/config  永久关闭 SElinux
  • 新建两个用户:chris和chrislee,然后把chris锁定在家目录内。修改vsftpd.conf
  • vim /etc/vsftpd/vsftpd.conf
  • chroot_list_enable=YES
  • chroot_list_file=/etc/vsftpd/chroot_list
  • 新建chroot_list
  • vim /etc/vsftpd/chroot_list
  • 增加chris

然后重启服务器

service vsftpd restart

6466723_1366260640M1T1.jpg

另外注意:

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list--这两个配置可以直接被下面一句话所替代:chroot_local_user=YES,这样就可以限制所有的用户登录以后只能停留在自己的家目录里了

6、由于FTP服务的传输都是明文的,在网络上非常不安全,我们可以利用openssh来对ftp服务的传输进行加密,既是sftp服务。

①、建立CA、自签证书、


  • 先生成CA和CA的自签证书
  • cd /etc/pki/CA
  • mkdir certs newcerts crl
  • touch index.txt
  • echo 01 > serial
  • 创建CA的私钥
  • (umask 007;openssl genrsa –out priviate/cakey.pem 2048);
  • 生成自签证书
  • openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365 //-days是指有效期

6466723_1366260647VX2b.jpg

②、为vsftp服务进行CA认证


  • mkdir /etc/vsftpd/ssl
  • cd /etc/vsftpd/ssl
  • 生成私钥和认证的公钥
  • (umask 077;openssl genrsa -out vsftpd.key 2048);
  • openssl req -new -key vsftpd.key -out vsftpd.csr

6466723_1366260659qSbW.jpg

修改CA目录,修改的话必须在特定的目录下才能签署证书

vim /etc/pki/tls/openssl.cnf

6466723_1366260665OEVL.jpg

签署证书

openssl ca -in vsftpd.csr -out vsftpd.crt

③、然后ftp配置使用加密的认证方式


  • vim /etc/vsftpd/vsftpd.conf
  • ssl_enable=YES        //开启ssl功能
  • ssl_tlsv1=YES          //开启支持tlsv1
  • ssl_sslv2=YES
  • ssl_sslv3=YES
  • allow_anon_ssl=NO    //是否开启匿名用户利用ssl
  • force_local_data_ssl=YES      //开启系统用户数据传输利用ssl
  • force_local_logins_ssl=YES   //开启系统用户登录利用ssl
  • rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt   //指定证书位置
  • rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key //指定私钥位置

④重启服务、验证

6466723_1366260673EFZ3.jpg

利用Flashxp软件进行连接测试

6466723_1366260679FAGX.jpg


6466723_13662606890ehN.jpg







ok~~到此我们的sftp服务器就已经建成了,相对来说比原来安全多了~~

7、vsftpd+pam+mysql,实现虚拟用户

环境必须安装相应的开发环境和开发库:Development Libraries和Development Tools

下面用到的软件安装方式采用yum安装,可以自动解决软件的依赖关系,由于实验是在在虚拟机上,所以采用DVD盘作为yum池,配置为下


  • mount /dev/cdrom /media
  • /etc/yum.repos.d/server.repo   //yum服务配置如下
  • # repos on instructor for classroom use
  • # Main rhel5 server  
  • [base]  
  • name=Instructor Server Repository  
  • baseurl=file:///media/Server  
  • gpgcheck=0
  • # This one is needed for xen packages  
  • [VT]  
  • name=Instructor VT Repository  
  • baseurl=file:///media/VT  
  • gpgcheck=0
  • # This one is needed for clustering packages  
  • [Cluster]  
  • name=Instructor Cluster Repository  
  • baseurl=file:///media/Cluster  
  • gpgcheck=0
  • # This one is needed for cluster storage (GFS, iSCSI target, etc...) packages  
  • [ClusterStorage]  
  • name=Instructor ClusterStorage Repository  
  • baseurl=file:///media/ClusterStorage  
  • gpgcheck=0

①、安装数据库和开发环境

检查开发库和开发工具是否安装

6466723_1366260694CCeA.jpg

yum -y install mysql-server mysql-devel  //安装数据库服务器软件和devel,devel包是为了后面编译pam的时候必须的软件包。不安装的话就无法实现其功能了。

启动mysql服务器,然后测试,保证mysql服务器运行正常,service mysqld start,mysql连接进入查看,如下图

6466723_1366260707YIga.jpg

②、手动编译、安装mysql基于pam的认证的驱动文件pam_mysql-0.7RC1.tar.gz。


  • tar xf pam_mysql-0.7RC1.tar.gz
  • cd pam_mysql-0.7RC1
  • ./configure --with-mysql=/usr  //—with-mysql=指定mysql库所在的位置
  • make
  • make install

③、进入数据库准备所需的数据库和表等


  • mysql    //进入数据库
  • mysql> create database vsftpd;  
  • mysql>  use vsftpd;  
  • mysql> create table users(  
  •     -> id int AUTO_INCREMENT NOT NULL,  
  •     -> name char(20) binary NOT NULL,  
  •     -> password char(48) binary NOT NULL,  
  •     -> primary key(id)  
  •     -> );

6466723_13662607134FVt.jpg

授权定义


  • GRANT SELECT ON vsftpd.* to vsftpd@localhost identified by 'work';
  • GRANT SELECT ON vsftpd.* to vsftpd@127.0.0.1 identified by 'work';

6466723_1366260720gB9h.jpg





④、在数据库内增加两个虚拟用户,然后用其测试


  • mysql> insert into users(name,password) values('chris','work');  
  • mysql> insert into users(name,password) values('chrislee','work');

6466723_1366260725odq2.jpg

⑤、配置vsftpd

建立pam认证所需的文件


  • vi /etc/pam.d/vsftpd.mysql--这个文件默认是不存在的,需要新建
  • 添加如下两行
  • auth required /lib/security/pam_mysql.so user=vsftpd passwd=work host=localhost db=vsftpd
  • table=users usercolumn=name passwdcolumn=password crypt=0  
  • account required /lib/security/pam_mysql.so user=vsftpd passwd=work host=localhost
  • db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

建立虚拟用户映射的系统用户及对应的目录


  • #useradd -s /sbin/nologin -d /var/ftproot vuser  //新建虚拟用户  
  • #chmod go+rx /var/ftproot   //为其他用户增加读和执行权限。
  • 请确保/etc/vsftpd.conf中已经启用了以下选项
  • anonymous_enable=YES  
  • local_enable=YES  
  • write_enable=YES  
  • anon_upload_enable=NO  
  • anon_mkdir_write_enable=NO  
  • chroot_local_user=YES
  • 而后添加以下选项  
  • guest_enable=YES      //是否允许来宾账户访问  
  • guest_username=vuser  //来宾账户访问映射为那个用户
  • 并确保pam_service_name选项的值如下所示  
  • pam_service_name=vsftpd.mysql

然后配置完后重启服务器

6466723_1366260732RL1c.jpg

service vsftpd restart

测试登录

6466723_1366260743HNOZ.jpg



6466723_1366260746X2sP.jpg

6466723_1366260750c9BE.jpg

备注:

配置vsftpd.conf为虚拟用户的默认权限为匿名用户的权限,若想单独定义每个用户的权限,则可以利用


  • # vim vsftpd.conf  
  • 添加如下选项  
  • user_config_dir=/etc/vsftpd/vusers_dir
  • 然后创建所需要目录,并为虚拟用户提供配置文件
  • mkdir /etc/vsftpd/vusers_dir/
  • cd /etc/vsftpd/vusers_dir/
  • touch chris
  • 虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,
  • 可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。
  • fg:vim chris增加配置
  •     anon_upload_enable=YES  //是否开启数据上传
  • 从而可以实现单独用户的权限控制,



运维网声明 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-5299-1-1.html 上篇帖子: linux vsftpd-3.0.2 安装及系统功能实现 下篇帖子: ftp文件传输协议的匿名用户、系统用户的实现详解过程

尚未签到

发表于 2013-4-19 09:27:05 | 显示全部楼层

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

尚未签到

发表于 2013-5-16 03:07:47 | 显示全部楼层
勿以坑小而不灌,勿以坑大而灌之。

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

尚未签到

发表于 2013-5-16 15:53:07 | 显示全部楼层
男人与女人,终究也只是欲望的动物吧!真的可以因为爱而结合吗?对不起,我也不知道。。

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

尚未签到

发表于 2013-5-17 05:05:07 | 显示全部楼层
我妈常说,我们家要是没有电话就不会这么穷。

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

尚未签到

发表于 2013-5-17 13:56:30 | 显示全部楼层
生,容易。活,容易。生活,不容易。

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

尚未签到

发表于 2013-5-18 00:56:58 | 显示全部楼层
我在马路边丢了一分钱

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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