FTP服务

    FTP是一个非常古老的协议,其主要的作用是用于文件的传输。FTP采用明文的方式传输,极其不安全,但在局域网等环境中使用还是比较方便的。

一、工作原理

    FTP的工作方式分为主动模式与被动模式。

    1、主动模式

        blob.png

        上图显示了主动模式的连接过程:

            1、客户端与FTP服务器的21端口建立了TCP连接;

            2、客户端将一个随机端口号告知给FTP服务器,此端口用于数据传输;

            3、FTP服务器通过TCP的20端口向已被告知的随机端口号传输数据。

        主动模式存在一个问题:当客户端出口处部署了防火墙时,我们有可能会将客户端开启的随机端口号阻塞掉,而导致FTP的20端口无法连接到客户端。

        为了解决这个问题,可以采用被动模式进行数据传输。

    2、被动模式

        blob.png

        上图显示了被动连接的过程:

            1、客户端与FTP服务大的21端口建立了TCP连接;

            2、客户端向服务器的21端口发起被动连接请求;

            3、服务器告诉客户端用于数据传输的端口号;

            4、客户端使用另一个随机端口去连接服务器的数据传输端口。

二、FTP服务器配置

    在CentOS中,对FTP服务增加了安全相关的改进,称为vsftpd,即“Very Secure FTP Daemon”,下面来详细介绍一下vsftpd的相关配置。

    1、相关的配置文件

        /etc/vsftpd/vsftpd.conf

            主要配置文件,可通过man 5 vsftpd.conf查看详细说明。 

        /etc/pam.d/vsftpd

            用于身份认证。

        /etc/vsftpd/ftpusers

            设置无法登录FTP服务器的用户配置文件。 

        /etc/vsftpd/user_list

            与ftpusers文件的作用相同,只能这个文件的生效与否需要在主配置文件中定义。

        /etc/vsftpd/chroot_list

            限制用户只能在其主目录中进行操作,不可以到其它的目录中。

        /var/ftp

            匿名用户的根目录。

    2、vsftpd.conf配置说明

        connect_from_port_20=YES(NO)

            数据传输的端口号。

        listen_port=21

            连接监听端口。

        dirmessage_enable=YES(NO)

            进入目录时是否显示提示信息。

        message_file=.message

            当dirmessage_enable=YES时,指定提示信息从哪个文件中读取。

        listen=YES(NO)

            vsftpd是否以stand alone的方式启动。

        pasv_enable=YES(NO)

            是否启用被动模式。

        use_localtime=YES(NO)

            是否使用本地时间。

        write_enable=YES(NO)

            是否允许用户上传数据。

        connect_timeout=60

            单位为秒,主动连接模式下,60秒内得不到客户端响应时强制断线。

        accept_timeout=60

            单位为秒,被动连接模式下,60秒内得不到客户端响应时强制断线。

        data_connection_timeout=300

            单位为秒,无论什么模式下,300秒内得不能正常完成数据传输时强制断线。

        idle_session_timeout=300

            单位为秒,用户300秒内没有任何操作时强制断线。

        max_clients=0

            最大客户端连接数,0表示没有限制。

        max_per_ip=0

            同一IP地址同一时间允许的最大连接数。

        pasv_min_port=0

            被动连接时,如果想将随机端口号控制在一定的范围内,使用此选项来设置随机端口号开始值。

        pasv_max_port=0

            被动连接时,如果想将随机端口号控制在一定的范围内,使用此选项来设置随机端口号结束值。

        ftpd_banner=

            用户连接到FTP服务器时显示的提示信息,信息内容直接写在等号后面。

        banner_file=/path/to/somefile

            用户连接到FTP服务器时显示的提示信息,信息内容为文件中的信息。

        guest_enable=YES(NO)

            所有系统用户访问FTP时均被当成guest用户。

        guest_username=ftp

            指定guest用户的用户名。

        local_enable=YES(NO)

            是否允许/etc/passwd内的账号登录FTP服务器。

        local_max_rate=0

            实体用户的传输速度上限。

        chroot_local_user=YES(NO)

            是否限制用户在自己的主目录之内。

        chroot_list_enable=YES(NO)

            是否启用chroot写入列表的功能。

        chroot_list_file=/etc/vsftpd/chroot_list

            如果chroot_list_enable为YES,则/etc/vsftpd/chroot_list中的用户将不受chroot的限制。

        userlist_enable=YES(NO)

            是否阻止某些用户登录。

        userlist_deny=YES(NO)

            user_list_enalbe设置为YES时生效,启用拒绝用户登录的文件,具体文件见下面的配置项。

        userlist_file=/etc/vsftpd/user_list

            此文件中的用户都无法访问FTP服务器。

        anonymous_enable=YES(NO)

            是否允许匿名登录。

        anon_world_readable_only=YES(NO)

            允许匿名用户有下载的权限。

        anon_other_write_enable=YES(NO)

            是否允许anonymous具有除了写入之外的权限,默认为NO。

        tcp_wrappers=YES(NO)

            是否支持tcp_wrappers。

        xferlog_enable=YES(NO)

            是否记录用户上传、上载文件的操作。

        xferlog_file=/var/log/xferlog

            指定日志文件的位置。

    3、安装vsftpd

1.png    4、启动vsftpd

2.png

        在启动vsftpd服务后,不需要任何配置就可以使用匿名的方式访问FTP服务器了,默认的访问路径为/var/ftp。

3.png

三、FTP服务器配置实例

    默认vsftpd的配置并不总是能够满足我们的实际需求,下面通过实例来说明vsftpd的用户认证及权限控制的功能。

    1、禁止匿名用户登录,并且允许root用户登录FTP服务器

        修改主配置文件

3.png

        放开root用户的限制,需要在下面的两个文件中注释掉root用户,以使得root用户可以登录FTP服务器。

4.png

5.png

        重启vsftpd服务

8.png

        验证

6.png

    2、将root用户的权限控制在其主目录中

        修改主配置文件 

7.png

        注意chroot_list文件必须存在。

        重启服务:

8.png

        验证:

9.png

10.png

    2、创建一个普通用户,此用户有上传文件的权限

        修改主配置文件:

10.png

        在系统中创建用户fin,并使用此用户登录到FTP服务器上,上传一个文件。

11.png

    以上两个实例只是FTP的最基本的用法,其它的设置可以根据上文中的选项说明进行配置,也可参考man手册,此处就不在做过多的演示了。

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

(0)
petmasterpetmaster
上一篇 2015-07-08 09:37
下一篇 2015-07-08 16:04

相关推荐

  • FHS文件系统共能介绍

    FHS文件系统共能介绍   FHS,即File Hierarchy Standard,文件层级标准。多数Linux系统下的文件管理采用此种文件组织形式,它定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。   这中组织是一种倒树状结构,所有的文件与目录都是由根目录”/”开始,然后…

    Linux干货 2016-10-18
  • find命令总结

    用途:     find命令用来在文件层级结构中搜索跟条件匹配的文件 语法:     find [OPTIONS] [查找起始路径] [查找条件] [处理动作]     查找起始路径:指定具体搜索起始路径。默认为当前目录  &nb…

    Linux干货 2016-09-19
  • Linux基础学习总结(一)

    一、计算机的组成与功能 二、Linux的版本 三、Linux的哲学思想 四、Linux基础命令(一) 五、Linux帮助信息 六、Linux目录结构

    Linux干货 2016-09-20
  • LAMP编译安装

    所谓的LAMP是指构建在Linux之上经典的一种web架构方式,其中L指的是Linux,A指的是Apache的httpd,M指的是Mysql或MariaDB,P指的是PHP,这种组合方式的基本工作模式是有httpd负责接收和相应用户的请求,然后将需要处理的php页面交由后端的php应用程序处理,而php应用程序处理php页面时的数据存储在Mysql数据库中,…

    Linux干货 2016-12-19
  • 单引号、双引号和反引号使用方法

        首先向马哥和马哥团队敬个礼,谢谢你们带我进入Linux的世界,刚开始接触linux时,经常看到单引号、双引号和反引号特殊符号,经常搞混淆和误用,应该用双引号,有时用到单引号。经过几天的混乱引用,总算搞明白了一些,简单总一下三者的使用和区别。  单引号 ‘’     单引号里的内容全部以普通字符的含义进…

    Linux干货 2015-07-29
  • LVS基本原理

    LVS基本原理 简介 负载调度器、真实服务器群节点一起被称为LVS。LVS负载调度器(有时也称为负载平衡器),接收所服务的所有接入服务集群的请求,并决定集群中的哪个节点应该回复其请求。 1)负载调度器(Director):作为整个集群的前端,主要将用户请求分发至真实服务器中进行处理。 2)真实服务器池:由多个功能相同的真实服务器组成,为用户提供真正的网络服务…

    Linux干货 2016-12-27