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
下一篇 2015-07-08

相关推荐

  • vim编辑器

                在Linux的学习中,无论是编写脚本还是修改文件内容,我们最经常用的就是vim编辑器.vim编辑器功能十分强大,如今不仅仅只应用在Linux中.今天就来介绍一下vim编辑器的功能 进入和退出vim     进入:   在终端输入vim 文件名 ,…

    Linux干货 2017-08-05
  • 马哥教育网络班21期+第5周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行(以/boot/grub2/grub.cfg代替); [root@localhost ~]# grep '^[[:space:]]\+' /boot/grub2/grub.cfg    load_e…

    Linux干货 2016-08-08
  • vsftpd

    文件服务: 安装开启服务前先关闭selinux,清空iptables策略。避免不必要的麻烦,服务开启后,配置一切正常有需要再根据情况开启。 ftp:应用层,C/S,跨主机的文件共享服务;file transfer protocol nfs,cifs:文件系统接口,网络文件系统;     nfs:network&nbsp…

    Linux干货 2016-11-01
  • N22-love cat第19周 – 基于Apache + Tomcat +2种模式实现负载均衡以及配置集群seesion服务

      基于Apache+Tomcat实现负载均衡和集群服务 一、概念     从Tomcat权威指南中的测试数据,我们不难发现,对于静态页面的数据,Tomcat的处理速度比Apache要快很多,所以为什么要整合apache虽然在处理静态页面速度上比Apache快,但是Tomcat经不起大的并发量容易死。为此,我们就需要A…

    Linux干货 2016-08-29
  • grep的使用和正则表达式

           grep作为Linux中的文本编辑的三剑客之一,它的功能很强大,并不是虚传,学会了grep在文本中找我们要找的的字符串总是能很轻易地找到,grep不仅仅就这一点功能,它在我们工作上也会对我们有很大的帮助。下面我来介绍一下grep的简单的功能。 grep :文本过滤( 模式:patter…

    Linux干货 2016-08-10
  • 安全与加密、申请CA证书

    本章内容 v  1、安全机制  2、对称加密  3、不对称加密 4、散列算法  5、PKI 和CA v 在互联网数据传输的过程的,数据的安全私密性是及其重要的,所以就有数据的加密和解密的过程。 数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它…

    Linux干货 2016-12-04