最近在机房搭建Linux环境,需要用到了FTP服务,查看了许多的资料,在这里做一下笔记

一、安装

  方法一,使用yum命令安装,需要能够连接外网

# yum install vsftpd

  方法二,使用安装包安装,这里准备的是 vsftpd-2.2.2-11.el6_4.1.x86_64.rpm 版本,版本可以自己选择,也可以选择tar.gz压缩包格式的

# rpm -ivh vsftpd-2.2.2-11.el6_4.1.x86_64.rpm

二、启动

  命令:service vsftpd start/stop/restart

# chkconfig --list vsftpdvsftpd          0:off   1:off   2:off   3:off   4:off   5:off   6:off# chkconfig  vsftpd on# chkconfig --list vsftpd  vsftpd      0:off   1:off   2:on   3:on   4:on   5:on   6:off # service vsftpd restart

这里看到,默认情况下从2到5设置为on了。2到5是多用户级别。 这个对应的是linux不同的运行级别。

我们也可以加level 选项来指定:

  [root@singledb ~]# chkconfig --level 0 vsftpd on

  [root@singledb ~]# chkconfig --list vsftpd

  vsftpd          0:on    1:off   2:on    3:on    4:on    5:on    6:off

  我们看到0已经设置为on了。

  传统的init 定义了7个运行级(run level),每一个级别都代表系统应该补充运行的某些特定服务:

(1)0级是完全关闭系统的级别

(2)1级或者S级代表单用户模式

(3)2-5 级 是多用户级别

(4)6级 是 重新引导的级别

三、配置

  1.位置

  /etc/vsftpd/vsftpd.conf——主配置文件

  /etc/vsftpd/ftpusers——指定了哪些用户不能访问FTP服务器

  /etc/vsftpd/user_list——指定哪些用户可以访问FTP服务器

  注意:user_list由vsftpd.conf文件中的userlist_enable,userlist_deny的取值来决定。      

      userlist_enable=YES 
         #此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表.      

       userlist_deny=NO             
         #决定禁止还是允许由userlist_file指定文件中的用户登录FTP服务器.
         #YES默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示,NO只允许在文件中的用户登录FTP服务器。

  2.解析配置项

    1>登录和对匿名用户的设置      

      write_enable=YES               //是否对登录用户开启写权限。属全局性设置。默认NO
      local_enable=YES               //是否允许本地用户登录FTP服务器。默认为NO
      anonymous_enable=YES          //设置是否允许匿名用户登录FTP服务器。默认为YES
      ftp_username=ftp                //定义匿名用户的账户名称,默认值为ftp。
      no_anon_password=YES             //匿名用户登录时是否询问口令。设置为YES,则不询问。默 认NO
      anon_world_readable_only=YES   //匿名用户是否允许下载可阅读的文档,默认为YES。
          anon_upload_enable=YES      //是否允许匿名用户上传文件。只有在write_enable设置为YES时,该配置项才有效。而且匿名用户对相应的目录必须有写权限。默认为NO。
      anon_mkdir_write_enable=YES //是否允许匿名用户创建目录。只有在write_enable设置为    YES时有效。且匿名用户对上层目录有写入的权限。默认为NO。
      anon_other_write_enable=NO    //若设置为YES,则匿名用户会被允许拥有多于
      上传和建立目录的权限,还会拥有删除和更名权限。默认值为NO。

    2>设置欢迎信息                  

      用户登录FTP服务器成功后,服务器可向登录用户输出预设置的欢迎信息。
      ftpd_banner=Welcome to my FTP server.    //该配置项用于设置比较简短的欢迎信息。若欢迎信息较多,则可使用banner_file配置项。
      banner_file=/etc/vsftpd/banner       //设置用户登录时,将要显示输出的文件。该设置项将覆盖ftpd_banner的设置。
      dirmessage_enable=YES         //设置是否显示目录消息。若设置为YES,则当用户进入特定目录(比如/var/ftp/linux)时,将显示该目录中的由message_file配置项指定的文件(.message)中的内容。
      message_file=.message          //设置目录消息文件。可将显示信息存入该文件。该文件需要放在 相应的目录(比如/var/ftp/linux)下

  

    3>设置用户登录后所在的目录

      local_root=/var/ftp         // 设置本地用户登录后所在的目录。默认配置文件中没有设置该项,此时用户登录FTP服务器后,所在的目录为该用户的主目录,对于root用户,则为/root目录。    
      anon_root=/var/ftp            //设置匿名用户登录后所在的目录。若未指定,则默认为/var/ftp目录。

    4>控制用户是否允许切换到上级目录

      在默认配置下,用户可以使用“cd..”命名切换到上级目录。比如,若用户登录后所在的目录为/var/ftp,则在“ftp>”命令行 下,执行“cd..”命令后,用户将切换到其上级目录/var,若继续执行该命令,则可进入Linux系统的根目录,从而可以对整个Linux的文件系统 进行操作。

      若设置了write_enable=YES,则用户还可对根目录下的文件进行改写操作,会给系统带来极大的安全隐患,因此,必须防止用户切换到Linux的根目录,相关的配置项如下:
      chroot_list_enable=YES                    
      // 设置是否启用chroot_list_file配置项指定的用户列表文件。设置为YES则除了列在j/etc/vsftpd/chroot_list文件中的的帐号外,所有登录的用户都可以进入ftp根目录之外的目录。默认NO
      chroot_list_file=/etc/vsftpd/chroot_list         
      // 用于指定用户列表文件,该文件用于控制哪些用户可以切换到FTP站点根目录的上级目录。
      chroot_local_user=YES                    
      // 用于指定用户列表文件中的用户,是否允许切换到上级目录。默认NO
      注意:要对本地用户查看效果,需先设置local_root=/var/ftp

  具体情况有以下几种:
      1)当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到上级目录;未在文件中列出的用户,不能切换到站点根目录的上级目录。
      2)当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到站点根目录的上级目录;未在文件中列出的用户,可以切换到上级目录。
      3)当chroot_list_enable=NO,chroot_local_user=YES时,所有用户均不能切换到上级目录。
      4)当chroot_list_enable=NO,chroot_local_user=NO时,所有用户均可以切换到上级目录。
      5)当用户不允许切换到上级目录时,登录后FTP站点的根目录“/”是该FTP账户的主目录,即文件的系统的/var/ftp目录。

    

    5>设置访问控制

    (1)设置允许或不允许访问的主机(见TBP14)
      tcp_wrappers=YES用来设置vsftpd服务器是否与tcp wrapper相结合,进行主机的访问控制。默认设置为YES,vsftpd服务器会检查/etc/hosts.allow和/etc /hosts.deny中的设置,以决定请求连接的主机是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。
      比如,若要仅允许192.168.168.1~192.168.168.254的用户,可以访问连接vsftpd服务器,则可在/etc/hosts.allow文件中添加以下内容:
        vsftpd:192.168.168.0/255.255.255.0 :allow
        all:all:deny

    (2)设置允许或不允许访问的用户
      对用户的访问控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件来控制实现。相关配置命令如下:
      userlist_enable=YES     
      // 决定/etc/vsftpd/user_list文件是否启用生效。YES则生效,NO不生效。
      userlist_deny=YES       
      // 决定/etc/vsftpd/user_list文件中的用户是允许访问还是不允许访问。若设置为YES,则/etc/vsftpd/user_list 文件中的用户将不允许访问FTP服务器;若设置为NO,则只有vsftpd.user_list文件中的用户,才能访问FTP服务器。

    6>设置访问速度

    anon_max_rate=0       
    //设置匿名用户所能使用的最大传输速度,单位为b/s。若设置为0,则不受速度限制,此为默认值。
    local_max_rate=0       
    // 设置本地用户所能使用的最大传输速度。默认为0,不受限制。

    

    7>定义用户配置文件

    在vsftpd服务器中,不同用户还可使用不同的配置,这要通过用户配置文件来实现。
    user_config_dir=/etc/vsftpd/userconf //用于设置用户配置文件所在的目录。
    设置了该配置项后,当用户登录FTP服务器时,系统就会到/etc/vsftpd/userconf目录下读取与当前用户名相同的文件,并根据文件中的配 置命令,对当前用户进行更进一步的配置。比如,利用用户配置文件,可实现对不同用户进行访问的速度进行控制,在各用户配置文件中,定义 local_max_rate配置,以决定该用户允许的访问速度。

    8>与连接相关的设置

    listen=YES        
    //设置vsftpd服务器是否以standalone模式运行。以standalone模式运行是一种较好的方式,此时listen必须设置为YES, 此为默认值,建议不要更改。很多与服务器运行相关的配置命令,需要此运行模式才有效。若设置为NO,则vsftpd不是以独立的服务运行,要受 xinetd服务的管理控制,功能上会受限制。

    max_clients=0
    //设置vsftpd允许的最大连接数,默认为0,表示不受限制。若设置为150时,则同时允许有150个连接,超出的将拒绝建立连接。只有在以standalone模式运行时才有效。

    max_per_ip=0
    // 设置每个IP地址允许与FTP服务器同时建立连接的数目。默认为0,不受限制。通常可对此配置进行设置,防止同一个用户建立太多的连接。只有在以standalone模式运行时才有效。

    listen_address=IP地址        
    //设置在指定的IP地址上侦听用户的FTP请求。若不设置,则对服务器所绑定的所有IP地址进行侦听。只有在以standalone模式运行时才有效。 对于只绑定了一个IP地址的服务器,不需要配置该项,默认情况下,配置文件中没有该配置项。若服务器同时绑定了多个IP地址,则应通过该配置项,指定在哪 个IP地址上提供FTP服务,即指定FTP服务器所使用的IP地址。
注意:设置此值前后,可以通过netstat -tnl对比端口的监听情况

    accept_timeout=60            
    //设置建立被动(PASV)数据连接的超时时间,单位为秒,默认值为60。
    connect_timeout=60    
    // PORT方式下建立数据连接的超时时间,单位为秒。
    data_connection_timeout=300   
    //设置建立FTP数据连接的超时时间,默认为300秒。

    idle_session_timeout=600      
    //设置多长时间不对FTP服务器进行任何操作,则断开该FTP连接,单位为秒,默认为600秒。即设置发呆的逾时时间,在这个时间内,若没有数据传送或指令的输入,则会强行断开连接。
    pam_service_name=vsftpd     
    //设置在PAM所使用的名称,默认值为vsftpd。

    setproctitle_enable=NO|YES   
    //设置每个与FTP服务器的连接,是否以不同的进程表现出来,默认值为NO,此时只有一个名为vsftpd的进程。若设置为YES,则每个连接都会有一个vsftpd进程,使用“ps -ef|grep ftp”命令可查看到详细的FTP连接信息。安全起见,建议关闭。

    9>FTP工作方式与端口设置

    (1)FTP工作方式简介
        FTP的工作方式有两种,一种是PORT FTP,另一种是PASV FTP。下面介绍其工作方式。
二者的区别在于PORT FTP的数据传输端口是由FTP服务器指定的,而PASV FTP则是由FTP客户端指定的,而且每次数据连接所使用的端口号都不同。正因为如此,所以在CuteFTP等FTP客户端软件中,其连接类型设置项中有PORT和PASV两种选择。

  当FTP服务器设置为PASV工作模式时,客户端也必须设置为PASV连接类型。若客户端连接类型设置为PORT,则能建立FTP连接,但在执行ls或get等需要数据请求的命令时,将会出现无响应并最终报告无法建立数据连接。

    (2)与端口相关的配置
    listen_port=21               
    // 设置FTP服务器建立连接所侦听的端口,默认值为21。
    连接非标准端口示例:ftp www.sunflower.org 7000
    connect_from_port_20=YES   
    // 默认值为YES,指定FTP数据传输连接使用20端口。若设置为NO,则进行数据连接时,所使用的端口由ftp_data_port指定。

    ftp_data_port=20            
    //设置PORT方式下FTP数据连接所使用的端口,默认值为20。
    pasv_enable=YES|NO        
    //若设置为YES,则使用PASV工作模式;若设置为NO,使用PORT模式。默认为YES,即使用PASV模式。
    pasv_max_port=0            
    //设置在PASV工作方式下,数据连接可以使用的端口范围的上界。默认值为0,表示任意端口。
    pasv_mim_port=0            
    //设置在PASV工作方式下,数据连接可以使用的端口范围的下界。默认值为0,表示任意端口。  

    10>设置传输模式

      FTP在传输数据时,可使用二进制(Binary)方式,也可使用ASCII模式来上传或下载数据。
      ascii_download_enable=YES //设置是否启用ASCII模式下载数据。默认为NO。
      ascii_upload_enable=YES    //设置是否启用ASCII模式上传数据。默认为NO。

    11>设置上传文档的所属关系和权限

      (1)设置匿名上传文档的属主
      chown_uploads=YES           
      //用于设置是否改变匿名用户上传的文档的属主。默认为NO。若设置为YES,则匿名用户上传的文档的属主将被设置为chown_username配置项所设置的用户名。
      chown_username=whoever     
      //设置匿名用户上传的文档的属主名。只有chown_uploads=YES时才有效。建议不要设置为root用户。 但系统默root

      (2)新增文档的权限设定
      local_umask=022            
      //设置本地用户新增文档的umask,默认为022,对应的权限为755。umask为022,对应的二进制数为000 010 010,将其取反为111 101 101,转换成十进制数,即为权限值755,代表文档的所有者(属主)有读写执行权,所属组有读和执行权,其他用户有读和执行权。022适合于大多数情 况,一般不需要更改。若设置为077,则对应的权限为700。
      anon_umask=022               //设置匿名用户新增文档的umask。默认077
      file_open_mode=0755          //设置上传文档的权限。权限采用数字格式。 默认0666

    12>日志文件

      xferlog_enable=YES             //是否启用上传/下载日志记录。默认为NO
      xferlog_file=var/log/vsftpd.log //设置日志文件名及路径。需启用xferlog_enable选项
      xferlog_std_format=YES           //日志文件是否使用标准的xferlog日志文件格式(与wu-ftpd使用的格式相同) 。默认为NO

四、FTP管理

     1)默认情况下,ftp根目录是/var/ftp。 如果要修改这个目录位置,可以更改/etc/passwd 文件:   

[root@singledb ftp]# cat /etc/passwd | grep ftpftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

     2)创建一个可以登录FTP但是不能登录系统的用户  userft

[root@singledb]# useradd -d /var/ftp/userft -g ftp -s /sbin/nologin userft

    //-d是指定目录(必须为相对根的根路径),-g指定分组为ftp组,-s指定该用户不能返回上一级。

[root@singledb]# passwd userft

    3)设置

#设置匿名用户禁止登录
anonymous_enable=NO

  

转载于:https://www.cnblogs.com/jinxiblog/p/6756267.html

利用vsftpd在Linux构建安全的FTP服务相关推荐

  1. 如何借助vsftpd在Linux上构建安全的FTP服务?

    FTP(文件传输协议)是互联网上广泛使用的服务之一,主要用于将文件从一个主机传输到另一个主机.FTP本身当初不是作为一种安全协议而设计的;正因为如此,典型的FTP服务很容易遭受诸如中间人***和蛮力* ...

  2. linux系统如何启用ftp服务

    在linux操作系统中,ftp功能是最常用的服务之一,平常写代码都是在windows下完成再通过ftp传到linux下.由此ftp服务必不可少. 但在刚安装的linux操作系统中,ftp服务一般是不启 ...

  3. Linux系统下安装FTP服务

    Linux系统下安装FTP服务 1. 简介 2. 工作原理 3. FTP的安装与配置 1. 下载vsftp安装包 2. 检查是否已经安装了vsftp,后面会介绍怎样卸载 3. 安装vsftpd 4. ...

  4. suse linux 12 sp5 开启FTP服务方法

    suse linux 12 sp5 开启FTP服务方法 小白一个,最近在搞linux服务器的项目,刚购买了华为H22H-05服务器,安装linux系统,启动FTP服务时百度了很多攻略,但是好多都失败了 ...

  5. Linux安装和使用FTP服务Serv-U

    Linux安装和使用FTP服务Serv-U 下载Serv-U的linux 64bit的安装文件 官网下载http://www.serv-u.com.cn/xiazai.html 解压安装文件 如果是服 ...

  6. linux挂载光盘装ftp服务,linux ftp安装和配置

    各位仁兄: 小弟在虚拟机中装的radhat ,记得在装系统的时候,我选择了ftp,但是发觉,我要使用的时候,执行这个 service vsftpd start 结果却是 unrecognized se ...

  7. Linux中如何搭建FTP服务

    文章目录 如何搭建FTP服务,并设置匿名用户访问FTP服务的最大权限 设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认登录的根目录为本地用户的家目录) 修改匿名用户,本地用户登录的默认根 ...

  8. Linux系统中的FTP服务配置与管理

    目录 一.FTP协议 1.介绍 2.用处 3.FTP原理 4.FTP工作模式 (1)主动模式 (2)被动模式 5.FTP实现 (1)wuftpd (2)proftpd (3)vsftpd 二.FTP服 ...

  9. linux启动服务器ftp监听,Linux redhat6.5开启ftp服务

    概述 由于工程的需要,要在redhat6.5的服务器上开启ftp服务,供用户上传和下载相关信息. 操作系统:redhat6.5-x86-64 ftp服务器:vsftpd 版本:vsftpd-2.2.2 ...

  10. Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

    2019独角兽企业重金招聘Python工程师标准>>> Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell ...

最新文章

  1. 陆奇新动向:将担任拼多多独立董事
  2. 在数据库创建表的时候,时间设置为什么类型,会随着每次提交的时间发生变化
  3. div居中与div内容居中,不一样
  4. mysql stragg_如何在MySQL中將子查詢行的結果顯示為一列?
  5. ROS与navigation教程——概述
  6. 借助Redis完成延时任务
  7. MySQL 5.7 update误操作后数据恢复详解
  8. 企业中常见的推荐系统架构(附交流视频和PPT下载链接)
  9. 7-1 查找整数 (10 分)
  10. java虚拟机工作原理_Java虚拟机工作原理具体解释
  11. [HDU1003]最长子序列和
  12. BGP路径属性分类与实验(华为设备)
  13. 基于VHDL的vivado2017.4使用教程
  14. Windows Server 2019 Datacenter x64 安装 SHARP AR-2048N 打印机驱动
  15. python怎么读单词_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...
  16. HTML里css画蝴蝶,纯css3制作煽动翅膀的蝴蝶的示例
  17. word树状分支图_在word中做树状图的方法步骤详解
  18. xp此计算机无法连接到,WinXP打印机共享无法连接如何解决?
  19. 硬盘克隆带linux系统,使用Linux dd命令作硬盘克隆
  20. 天津web前端培训,BAT会去哪里招好前端?

热门文章

  1. 什么年代了,买硬盘不论T?
  2. 区块链大有前途,数字货币不会消失
  3. android shell强制删除文件夹_手机文件夹都是英文,看不懂、又不敢删?教你如何辨别、释放内存...
  4. python保留小数不四舍五入_Python常用知识小结
  5. mysql 抓包工具_好用的MySQL抓包工具:sniffer-agent
  6. python绘制好几个子图_求助,python使用matplotlib画子图颜色,修改多个颜色报错...
  7. malloc 初始化_C++核心准则NR.5:不要使用两阶段初始化
  8. java 静态库和动态库_Android下Java的静态库和动态库
  9. Kafka之与Spring集成
  10. TOJ1017: Tour Guide