Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 架构 > Linux架构 > 正文

vsftpd+MariaDB+pam搭建认证FTP服务器

时间:2014-10-19 22:03 来源:未知 作者:www.51ou.com 阅读:

vsftpd服务是Linux上应用较常见的FTP服务软件,通过FTP服务共享文件,下载速度快,而且方便,但是,FTP服务是最古老的,却又是最复杂的服务,它是一个应用层协议,闲话不扯,进入讲解。

vsftpd服务器上有着不用等级的用户:分别有系统用户、匿名用户、虚拟用户
   系统用户:FTP服务上的系统用户,操作权限较多,操作较为危险
   匿名用户:不需要验证即可登录FTP服务器的用户,用户名一般为ftpP或anonymous,密码为空
   虚拟用户:虚拟用户会被统一映射为一个特定的系统用户,访问此系统用户共享的资源

 虚拟用户:
       所有的虚拟用户都会被统一映射到系统上的一个指定的用户,当虚拟用户访问时,其访问的共享位置是映射关系的系统用户的家目录,而且,对于不同的虚拟用户,可以被赋予不同的访问权限,是通过匿名用户的权限控制参数进行指定的   

 

响应码:这些信息在下面的实例中,我们能看到的

1
2
3
4
5
1xx: 信息
2xx: 成功类的状态码
3xx: 提示需进一步提供补充类信息的状态码
4xx: 客户端错误
5xx: 服务端错误

    每个服务,最重要的就是它的配置文件,实现某种功能,就得在配置文件中配置,下面就详细介绍一下我们的vsftpd服务的配置文件。
    使用rpm -ql vsftpd,我们可以查看vsftpd生成的文件
    vsftpd的配置文件在/etc/vsftpd/vsftpd.conf

具体选项如下所示:
 

以下是匿名用户的相关选项:

1
2
3
  anonymous_enable=YES       #允许匿名用户登录
  anon_upload_enable=YES     #允许匿名用户上传
  anon_other_write_eable=YES       #允许匿名用户有更多权限,如创建目录,删除目录

以下是系统用户的相关选项:

1
2
3
4
  ocal_enable=YES                #允许系统用户登录
  write_enable=YES               #本地用户是否有写的权限
  local_umask=022                 #用户上传文件后,权限被改为644 
  chroot_local_user=YES        #这里是禁锢所有的系统用户登录ftp时,将其家目录作为根目录

禁锢指定的系统用户于其家目录,并作为根目录

1
2
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd/chroot_list

vsftpd的日志

1
2
3
 xferlog_enable=YES     #启用日志功能
  xferlog_std_format=YES      #日志的格式
  xferlog_file=/var/log/xferlog      #这项最关键,如果开启前两项,这项没有指定,也不会开启日志功能

改变上传文件的属主

1
2
  chown_uploads=YES     #开启此项功能
  chown_username=$USERNAME  #指定改变为哪个用户

  
当vsftpd要完成认证时,就要使用pam,要指定这个配置文件

1
 pam_service_name=vsftpd

在vsftpd服务器上,我们也可以开启控制用户登录的功能

1
2
3
4
  userlist_enable=YES
  userlist_deny=YES|NO
  userlist_deny=YES        #这是启用黑名单
  userlist_deny=YES        #这是启用白名单

 默认文件为/etc/vsftpd/user_list
 
额外的配置选项

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

传输速率:

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

   ftp服务器的用户数据一般情况可以放在文件系统中或是关系型数据库中,下面,我将基于vsftpd和MariaDB数据库还有pam认证,实现vsftpd服务基于关系型数据库的认证。
   
 拓扑如下:
    
    首先,pam要和MariaDB交互,需要一个第三方的软件,pam_mysql,一般情况,使用yum安装,注意的是,这个软件位于epel源中。
[root@51ou.com ~]# yum install -y pam_mysql
   
我们可以看看pam_mysql这个软件生成了哪些文件:

1
2
3
4
5
6
7
[root@51ou.com ~]# rpm -ql pam_mysql/lib64/security/pam_mysql.so
/usr/share/doc/pam_mysql-0.7
/usr/share/doc/pam_mysql-0.7/COPYING
/usr/share/doc/pam_mysql-0.7/CREDITS
/usr/share/doc/pam_mysql-0.7/ChangeLog
/usr/share/doc/pam_mysql-0.7/NEWS
/usr/share/doc/pam_mysql-0.7/README

第一个列出的是pam_mysql的模块,就是通过它实现MariaDB和pam交互的
另外一个重要的就是README文件,在不会安装的情况下,可以查看之
   
由于我们的MariaDB数据库服务器在另外一台主机上,我们要在这台主机上新建可以认证的用户:

1
2
3
4
5
6
7
8
9
10
MariaDB [(none)]> CREATE DATABASE ftpdb;
Query OK, 1 row affected (0.05 sec)
 
MariaDB [(none)]> USE ftpdb;
Database changed
MariaDB [FTPdb]> GRANT SELECT ON ftpdb.* TO ftp@'172.16.30.10' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.01 sec)
 
MariaDB [FTPdb]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《vsftpd+MariaDB+pam搭建认证FTP服务器》技术文章,《vsftpd+MariaDB+pam搭建认证FTP服务器》详细使用和说明,有时《vsftpd+MariaDB+pam搭建认证FTP服务器》可能不完善、敬请谅解!如果《vsftpd+MariaDB+pam搭建认证FTP服务器》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
验证码:点击我更换图片