文件服务及vsftpd的配置

文件服务:

    ftp:应用层,C/S,文件共享;file transfer protocol;

    nfs,cifs:文件系统接口,网络文件系统;

        nfs:network file system

cifs:common internet file system

    samba

网络存储:

    NAS:Network Attached Storage,文件服务器,nfs或cifs,文件级别;

    SAN:Storage Area Network,块级别共享服务,分区–>格式化–>创建文件系统;IPSAN, FCSAN;

ftp:

    file transfer protocol,21/tcp

C/S:

            Client –> ftp–>Server

        Client:Connect 

Server:Listen

    连接:

命令连接:命令传输,连接一直存在;

数据连接:数据传输,按需创建;

    数据连接的建立模式:

主动模式:服务器通过20/tcp主动连接客户端的命令连接端口向后最近一个空闲端口;PORT;

被动模式:客户端发出数据请求后,服务端会响应一个打开的临时使用的随机端口,客户端对此端口进行请求;PASV;

    数据传输模式:

        文本格式:ASCII

二进制格式:BINARY

协议安全:

    明文:数据、认证时传输账号和密码均是明文 ;

安全增强:

            ftp over ssl/tls:ftps

    ftp over ssh:sftp 

虚拟用户账号;

    c/s:

Server:

            Windows:Serv-U, IIS, …

         开源解决方案:

                    wuftpd:Washington University ftp daemon

             vsftpd:Very Secure ftp daemon

                 proftpd, pureftpd, …

        Client:

         GUI:flashfxp, cute, filezilla, gftp, …

    CLI:ftp, lftp, …

    vsftpd:

程序环境:

            主程序:/usr/sbin/vsftpd

        Unit File:/usr/lib/systemd/system/vsftpd.service

    配置文件:/etc/vsftpd/vsftpd.conf

    文档路径映射:

fedora, /home/fedora/pub/a.txt –> ftp://HOST:PORT/pub/a.txt

用户的家目录映射:访问vsftpd服务必须以某个系统用户的身份进行;此用户的家目录即为文档映射的根目录;

匿名用户:anonymous,映射为一个系统用户,此用户为ftp;

    配置:vsftpd.conf

directive VALUE,…

directive:指令之前不能存在任何字符,包括空白;

    匿名用户:

        anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

    本地用户:

local_enable=YES

write_enable=YES

    认证服务:

pam_service_name=vsftpd

/etc/pam.d/vsftpd 

pam: pluggable authencate module

         切换目录时的提示信息:

dirmessage_enable=YES

         .messages

         修改上传文件的属主:

chown_uploads=YES

chown_username=USERNAME

    禁锢用户于自己的家目录:

会引入别的风险,因此,要求用户对自己的家目录不能有写权限;

(1) 禁锢所有用户

    chroot_local_user=YES

(2) 禁锢部分用户

         (a) 白名单:名单中的用户不被禁锢;

        chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

    (b) 黑名单:名单中的用户被禁锢

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

    user_list控制用户访问vsftpd:

(1) 白名单

         userlist_enable=YES

    userlist_deny=NO 

             (2) 黑名单,默认

    userlist_enable=YES

    userlist_deny=YES

虚拟用户账号:

    vsftpd依赖pam完成认证,pam存储支持的认证方式,vsftpd都可调用;

账号密码存储于何处?

        文件、MySQL、ldap、redis、…

    pam_mysql模块

CentOS 6:epel

CentOS 7:编译安装 

    编译:

        (1) 编译环境;

(2) 依赖关系:mariadb-devel, pam-devel

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

# make install 

MySQL设置:

         mysql> CREATE DATABASE vsftpd;

    mysql> GRANT ALL ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'mageedu';

    mysql>  CREATE TABLE vsftpd.users (uid SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE KEY,name VARCHAR(100) NOT NULL PRIMARY KEY,password CHAR(48) NOT NULL);

    mysql> INSERT INTO users (name,password) VALUES ('tom',PASSWORD('mageedu')),('jerry',PASSWORD('mageedu')),('lucy',PASSWORD('mageedu'));

准备要映射成为的系统账号:

# mkdir -pv /ftproot/{pub,upload}

# useradd -d /ftproot vuser

# setfacl -m u:vuser:rwx /ftproot/upload

准备基于mysql认证的pam配置文件:/etc/pam.d/vsftpd.mysql

auth required pam_mysql.so host=127.0.0.1 user=vsftpd passwd=mageedu db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required pam_mysql.so host=127.0.0.1 user=vsftpd passwd=mageedu db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

配置vsftpd启用虚拟用户,并使用指定的pam service:vsftpd.conf

    pam_service_name=vsftpd.mysql

    guest_enable=YES

    guest_username=vuser

配置每虚拟用户拥有不同的权限:vsftpd.conf

    user_config_dir=/etc/vsftpd/vusers_conf

# mkdir /etc/vsftpd/vusers_conf

# touch USERNAME

权限配置指令:

         anon_upload_enable

    anon_mkdir_write_enable

    anon_other_write_enable


在CentOS 7的环境下进行vsftpd服务的配置

    1.准备编译环境

    blob.png

    2.准备依赖环境

    yum install pam-devel mariadb-devel

    3.编译安装pam_mysql

    blob.png

    4.在数据库中创建对应的相关信息

        创建一个数据库,专门存放vsftp服务的相关数据,并对一个用户授权使其拥有管理这个数据库的权限,而不使用root账户进行管理,保证数据库的安全性

    blob.png

    blob.png

        在对应的数据库中创建一个用户表,将可以访问的用户成员信息及密码,添加到该表中

    blob.png

    blob.png

        创建ftp访问目录,并创建虚拟用户,并对目录设置acl权限

    blob.png

    blob.png

        创建基于mysql认证的pam配置文件

    touch /etc/pam.d/vsftpd.mysql

    blob.png

        修改/etc/vsftpd/vsftpd.conf文件中的配置参数

    blob.png

        对每个拥有权限访问vsftpd服务的用户进行权限控制

        touch USERNAME    创建以用户名作为文件名的文件

        进行相应的权限设置

     blob.png   

    

        测试账户的有效性

     blob.png

   

        

    

    

    


    

原创文章,作者:Stupid_L,如若转载,请注明出处:http://www.178linux.com/51701

(0)
上一篇 2016-10-15 13:18
下一篇 2016-10-15 15:23

相关推荐

  • CentOS 7上的性能监控工具

    Linux中基于命令行的性能监控工具:dstat、top、netstat、vmstat、htop、ss、glances 1、dstat – 多类型资源统计工具(需配置epel源)   该命令整合了vmstat,iostat和ifstat三种命令。同时增加了新的特性和功能可以让你能及时看到各种的资源使用情况,从而能够使你对比和整…

    Linux干货 2016-09-07
  • 磁盘管理之文件系统及管理工具

    磁盘管理之文件系统及管理工具    我们在之前的文章中讲到了硬盘的MBR与GPT分区,我们这篇文章来讲一下怎么使用工具对硬盘进行分区,硬盘的分区有什么区别,以及分区的管理。 管理分区   首先我们来看一下分区。那么什么是分区呢?简单的比喻一下,硬盘就像一个大房子,那么在向房间里放东西(比如家具)之前,它需要有一定的结构…

    Linux干货 2016-08-30
  • N27_第六周作业

    请详细总结vim编辑器的使用并完成以下练习题 基本模式:编辑模式(命令模式),输入模式,末行模式 模式转换: 编辑模式–输入模式: i:insert,在光标所在处前方输入 a:append,在光标所在处后方输入 o:在光标所在处的下方新建一行 I:在光标所在行行首输入 A:在光标所在处行尾输入 O:在光标所在处的上方打开一个新行 输入模式&#82…

    Linux干货 2017-10-26
  • 马哥教育网络20期第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; fdisk /dev/sdb ; mke2fs -t ext4 -b 2048 -L MYDATA -m 2 –O acl /dev/sdb1 (2) 挂载至/data/mydata目录,要求挂载…

    Linux干货 2016-08-15
  • 设计模式(八)装饰器模式Decorator(结构型)

    1. 概述        若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。       通过继…

    Linux干货 2015-07-03
  • 学习笔记–权限管理

    文件系统的权限管理 1、Linux系统下每个目录或文件的权限对象主要分为:属主(u)、属组(g)、其他用户(o),针对每类访问对象都定义了三种权限:读(r)、写(w)、执行(x),这三种权限针对目录和文件的作用各不相同,以下将做详细说明: 对于文件来说: 读(r)权限:可以使用文本查看类工具读取文件内容 写(w)权限:可以修改文件内容,但不能删除文件本身 执…

    Linux干货 2016-08-05