FTP协议以及vsftpd的使用

内容:数据库

一、ftp协议安全

二、vsftpd的搭建及配置服务器



1、FTP协议网络

    一、FTP协议:ide

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。工做在第七层,并且是基于TCP协议传输数据。spa


        FTP工做原理与其它的应用协议有些不一样。它是用两个端口进行通讯的。一个端口用于命令交互。这个端口在用户链接以后一直保持;而另外一个端口只是在数据传时打开(好比:上传文件,下载文件,获取服务端文件列表),在数据传输时有两种不一样的模式,一是用户开通这个数据端口,这种模式叫作主动模式;二是服务器提供一个接口,这个模式叫被动模式。操作系统


    二、FTP的传输数据:开放源代码

        FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。日志

        (1)、ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,若是在远程机器上运行的不是UNIX,当文件传输时ftp一般会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。可是经常有这样的状况,用户正在传输的文件包含的不是文本文件,它们多是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印符)。在拷贝任何非文本文件以前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。orm


        (2)、二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即便目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。若是你在ASCII方式下传输二进制文件,即便不须要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式通常假设每一字符的第一有效位无心义,由于ASCII字符组合不使用它。若是你传输二进制文件,全部的位都是重要的。)若是你知道这两台机器是一样的,则二进制方式对文本文件和数据文件都是有效的。


    三、FTP的工做方式

        FTP支持两种模式,一种方式叫作Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。

        这两种方式的工做原理:

        Port模式FTP 客户端首先和FTP服务器的TCP 21端口创建链接,经过这个通道发送命令,客户端须要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端经过本身的TCP 20端口链接至客户端的指定端口发送数据。 FTP server必须和客户端创建一个新的链接用来传送数据。

        Passive模式在创建控制通道的时候和Standard模式相似,但创建链接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)而且通知客户端在这个端口上传送数据的请求,客户端链接FTP服务器此端口,而后FTP服务器将经过这个端口进行数据的传送,这个时候FTP server再也不须要创建一个新的和客户端之间的链接。


        注意:不少防火墙在设置的时候都是不容许接受外部发起的链接的,因此许多位于防火墙后或内网的FTP服务器不支持PASV模式,由于客户端没法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登录FTP服务器,由于从服务器的TCP 20没法和内部网络的客户端创建一个新的链接,形成没法工做。



2、vsftpd的搭建及配置

    一、vsftpd简介

        vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特色。vsftpd 是一个 UNIX 类操做系统上运行的服务器的名字,它能够运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个彻底免费的、开放源代码的ftp服务器软件,支持不少其余的 FTP 服务器所不支持的特征。好比:很是高的安全性需求、带宽限制、良好的可伸缩性、可建立虚拟用户、支持IPv六、速率高等。

vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特色是小巧轻快,安全易用。

    二、vsftp的安装以及配置使用

    vsftpd:

    程序环境:

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

    主程序:/usr/sbin/vsftpd

    文件路径映射:/var/ftp 

    用户的家目录的映射:访问ftp必须以某个系统用户的身份,此用户的家目录即文档目录;

    匿名用户:anonymous,要映射为一个系统用户,默认是ftp;

    用户种类:

        匿名用户:

        系统用户:能够登陆系统的用户,/etc/passwd里的用户

        虚拟用户:不是系统的登陆用户

    三、配置vsftpd:

    配置文件:vsftpd.conf

        directive=value

    注意:directive以前不能有任何字符;

    注意:任何配置的权限修改还要结合文件系统的文件权限,好比,就算在配置文件中容许匿名用户下载文件,但假如文件自己的权限不够,也同样不能下载。

    匿名用户:

    anonymous_enable=YES:容许匿名用户登陆

    anon_upload_enable=YES :容许匿名用户上传文件

    anon_mkdir_write_enable=YES :容许匿名用户建立目录

    anon_other_write_enable=YES :容许匿名用户其余的写权限如,删除目录等

    注意:若是容许匿名用户上传,默认上传的权限是600,由于匿名上传文件的umask为077,要修改则要添加:anon_umask=022;

    系统用户:

        local_enable=YES :容许本地用户登陆

        write_enable=YES :容许本地用户写权限

    辅助认证配置文件/etc/vsftpd/ftpusers:

        pam认证的配置文件:/etc/pam.d/vsftpd

        chroot_local_users=YES

    禁锢全部的本地用户于本身的家目录中;但须要事先移除用户对家目录的写权限;

        chroot_list_enable=YES

        chroot_list_file=/etc/vsftpd/chroot_list 

    禁锢指定的文件列表中的用户于本身的家目录中;但须要事先移除用户对家目录的写权限;(这两个指令通常同时启用或不启用)

    数据传输日志:

        xferlog_std_format=YES

        xferlog_enable=YES

        xferlog_file=/var/log/xferlog

    控制可登陆vsftpd服务的用户列表:

    userlist_enable=YES:是否启用/etc/vsftpd/user_list文件来可登陆的用户;

    userlist_deny={YES|NO}

        YES:黑名单

        NO:白名单

    四、FTP数字代码的意义

        110 从新启动标记应答。
        120 服务在多久时间内ready。
        125 数据链路端口开启,准备传送。
        150 文件状态正常,开启数据链接端口。
        200 命令执行成功。
        202 命令执行失败。
        211 系统状态或是系统求助响应。
        212 目录的状态。
        213 文件的状态。
        214 求助的讯息。
        215 名称系统类型。
        220 新的联机服务ready。
        221 服务的控制链接端口关闭,能够注销。
        225 数据连结开启,但无传输动做。
        226 关闭数据链接端口,请求的文件操做成功。
        227 进入passive mode。
        230 使用者登入。
        250 请求的文件操做完成。
        257 显示目前的路径名称。
        331 用户名称正确,须要密码。
        332 登入时须要帐号信息。
        350 请求的操做须要进一部的命令。
        421 没法提供服务,关闭控制连结。
        425 没法开启数据链路。
        426 关闭联机,终止传输。
        450 请求的操做未执行。
        451 命令终止:有本地的错误。
        452 未执行命令:磁盘空间不足。
        500 格式错误,没法识别命令。
        501 参数语法错误。
        502 命令执行失败。
        503 命令顺序错误。
        504 命令所接的参数不正确。
        530 未登入。
        532 储存文件须要帐户登入。
        550 未执行请求的操做。
        551 请求的命令终止,类型未知。
        552 请求的文件终止,储存位溢出。  
        553 未执行请求的的命令,名称不正确。


        OK,更多文章请关注个人博客

相关文章
相关标签/搜索