FTP文件传输协议之vsftpd服务

本文涉及的产品
运维安全中心(堡垒机),企业双擎版|50资产|一周时长
运维安全中心(堡垒机),免费版 6个月
简介:

一、FTP服务概述

   FTP(File Transfer Protocol,文件传输协议)是典型的C/S结构的应用层协议,需要由服务端软件、客户端软件共同实现文件传输功能

   FTP服务器默认使用TCP协议的20、21端口与客户端实现通信。20端口用于建立数据连接,并传输数据文件;21端口用于建立控制连接,并传输FTP控制命令。FTP数据连接分为主动模式和被动模式

  主动模式:服务器主动发起数据连接

  被动模式:服务器被动等待数据连接

   

vsftpd软件

   vsftpd是目前在Linux/Unix领域应用十分广泛的一款FTP服务软件,vsftpd服务的名称来源于“Very Secure FTP Deamon”,该软件针对安全特性方面做出了大量的设计,并且在速度和稳定性方面的表现也相当突出


vsftpd的配置文件

  使用vsftpd服务需要先安装Linux系统中的RPM软件包,安装完后会自动添加名为 vsftpd 的系统服务。vsftpd服务的配置文件位于 /etc/vsftpd 目录下:分为以下三种

   ftpusers文件:此文件中的用户将禁止登陆vsftpd服务。默认包括root、bin、daemon等用于系统运行的特殊用户

   user_list文件:此文件中的用户可能被禁止,也可能被允许登陆,具体取决于vsftpd.conf主配置文件 

   vsftpd.conf主配置文件:下面是最常用的一些配置参数

   wKiom1mEGofi4T-CAAFhvG49xSo352.jpg

   wKioL1mEGp2ReS77AAEToF0smFU022.jpg

   wKioL1mEGr6RzXgkAADeMB7REp0877.jpg


二、基于系统用户的FTP服务

  vsftpd服务可以使用Linux主机中的系统用户账号作为登陆FTP的账号,包括匿名访问和用户验证两种形式

1.匿名访问的FTP访问目录

  FTP匿名访问时,对应的系统用户为ftp,不需要密码验证,任何人都可以访问,宿主目录为 /var/ftp也就是匿名访问时所在的FTP根目录。基于安全考虑,根目录的权限只有读取权限

(1)准备匿名FTP访问目录

  /var/ftp/ 目录下默认设置了一个名为pub的子文件夹,可以给匿名访问FTP时提供上传文件使用

例如:执行下面操作可以使匿名用户对该目录具有写入权限,以便上传文件

   # chown  ftp  /var/ftp/pub          

(2)匿名用户配置并启动vsftpd服务

例如:设置服务器提供匿名访问,允许匿名用户上传、下载,但禁止使用删除、重命名,可修改以下配置

   # vim  /etc/vsftpd/vsftpd.conf         

    anonymous_enable=YES              //允许匿名用户访问   

       local_enable=NO                          //不需要启用本地用户

       write_enable=YES                        //开发服务器的写入权限

       anon_umask=022                         //设置匿名用户上传数据的权限掩码

       anon_upload_enable=YES                  //允许匿名上传文件

       anon_mkdir_write_enable=YES               //允许匿名用户创建目录

       dirmessage_enable=YES                          

   # service  vsftpd  start   

(3)测试匿名FTP服务器

  在Linux中,可使用FTP命令进行测试

   # ftp  192.168.1.1          

最常用的命令有:

   ls             列出远程机的当前目录

   cd               在远程机上改变工作目录

   lcd           在本地机上改变工作目录

   get(mget)             从远程机传送指定文件到本地机

   put(mput)              从本地机传送指定文件到远程机

   quit                       断开与远程机的连接并退出ftp


2.用户验证的ftp服务

   使用Linux主机的系统用户作为FTP账号,提供基于用户名/密码的登陆验证,登陆FTP后,将默认位于自己的宿主目录,且在宿主目录中拥有读写权限

(1)基本的本地用户验证

   # vim  /etc/vsftpd/vsftpd.conf          

     local_enable= YES                 //启用本地用户

        write_enable=YES                    //开发服务器的写入权限

        local_umask=077                    //仅属主拥有权限

        chroot_local_user=YES             //禁锢在宿主目录

   # service  vsftpd                        

(2)使用user_list用户列表文件

例如:只允许yang、shu、fan这三个用户登陆

   # vim  /etc/vsftpd/user_list           

    yang

    shu

    fan

   # vim  /etc/vsftpd/vsftpd.conf         

    userlist_enable=YES      //启用user_list列表中的用户

    userlist_deny=NO      //不禁用user_list列表中的用户


三、基于虚拟用户的FTP服务

  使用虚拟用户的好处在于,可以将ftp登陆账号和系统登陆账号分开,用户名和密码都不相同,进一步提高FTP服务器的安全性

1.建立虚拟用户的账号数据库

(1)创建文本格式的用户名、密码列表

  奇数行为用户名,偶数行为上一行用户名的密码

例如:添加yangshufan、51cto这两个用户登陆,密码为123、456

  # vim /etc/vsftpd/vusers.list        

    yangshufan

    123

    51cto

    456

(2)创建Berkeley DB格式的数据库文件

  通过db_load工具创建Berkeley DB格式的数据库文件

  # cd /etc/vsftpd/                                  

   # db_load  -T  -t  hash  -f  vusers.list  vusers.db

(3)添加虚拟用户的映射文件、创建FTP根目录

  vsftpd服务器对虚拟用户的控制采用了映射的控制方法,将所有的虚拟用户对应到同一个系统用户,该用户的宿主目录为所有虚拟用户登陆后公用的FTP根目录

例如:使用FTP根目录设为/var/ftproot,映射账号的名称为virtual

   # useradd  -d  /var/ftproot  -s /sbin/nologin  virtual

   # chmod  755  /var/ftproot                            


2.为vsftpd服务添加虚拟用户支持

(1)为虚拟用户建立PAM认证文件

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

     #%PAM-1.0

     auth    required   pam_userdb.so   db=/etc/vsftpd/vusers

     account    required   pam_userdb.so   db=/etc/vsftpd/vusers

(2)修改vsftpd配置,添加虚拟用户支持

   # vim  /etc/vsftpd/vsftpd.conf   

     local_enable= YES                 //需映射本地用户

         write_enable=YES                        //开发服务器的写入权限

        anon_umask=022                         //设置上传数据的权限掩码

        guest_enable=YES                       //启用用户映射功能

        guest_username=virtual               //指定映射的系统用户名称

        pam_service_name=vsftpd.vu        //指定PAM认证文件

    

3.为不同的虚拟用户建立独立的配置文件

  通过上面的几个步骤,虚拟用户已经可以登录FTP并下载文件了,若要为不同的虚拟用户建立不同的权限,可以为每个虚拟用户建立单独配置文件来实现

例如:使用户yangshufan能够上传文件、创建目录,而用户51cto仍然只有默认的下载权限

   # vim  /etc/vsftpd/vsftpd.conf     

     user_config_dir=/etc/vsftpd/vusers_dir

   # mkdir   /etc/vsftpd/vusers_dir/      //创建用户配置文件

   # cd  /etc/vsftpd/vusers_dir/             

   # vim  yangshufan         //为用户yangshufan创建独立配置文件

    anon_upload_enable=YES  

    anon_mkdir_write_enable=YES  

    # touch  51cto   //为其他用户创建空的配置文件

   //为其他用户创建空配置文件

   # service  vsftpd  reload     










本文转自 杨书凡 51CTO博客,原文链接:http://blog.51cto.com/yangshufan/1953672,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
Linux 网络安全 开发工具
Centos6.5搭建一个简单的vsftpd服务
在CentOS 6.5上配置vsftpd服务器:确保与Win10能互通,更新yum源,安装vsftpd,编辑配置文件禁用匿名访问,重启服务并关闭防火墙。创建新用户和密码,通过FTP在Win10文件管理器中使用实验机IP访问,用创建的用户和密码登录,成功创建远程文件夹,实验机上可见。
106 2
|
7月前
|
Linux 网络安全 数据安全/隐私保护
Linux vsFTPd服务详解——文件加密传输配置
Linux vsFTPd服务详解——文件加密传输配置
247 2
|
7月前
|
Linux 数据安全/隐私保护 Windows
Linux vsFTPd服务详解——本地用户登录实战
Linux vsFTPd服务详解——本地用户登录实战
226 2
|
2月前
|
网络协议 Linux
搭建FTP报错:Job for vsftpd.service failed because the control process exited with error code. See
搭建FTP报错:Job for vsftpd.service failed because the control process exited with error code. See
215 3
|
2月前
|
网络安全 数据安全/隐私保护
FTP服务搭建
FTP服务搭建
34 0
|
2月前
|
弹性计算 关系型数据库 网络安全
阿里云国际版无法连接和访问Windows服务器中的FTP服务
阿里云国际版无法连接和访问Windows服务器中的FTP服务
|
4月前
|
存储
【Azure 应用服务】Azure App Service 自带 FTP服务
【Azure 应用服务】Azure App Service 自带 FTP服务
|
7月前
|
Web App开发 安全 Unix
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
207 1
|
7月前
|
Linux 网络安全 数据安全/隐私保护
FTP 文件传输服务
FTP 文件传输服务
|
7月前
|
Ubuntu 网络安全 数据安全/隐私保护
ubuntu篇-配置FTP服务,本机和docker安装
通过以上步骤,你可以在Ubuntu上配置FTP服务,无论是本机安装还是Docker内安装,都可以提供FTP文件传输服务。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
224 1