快速搭建FTP服务器

  FTP服务器是一种常见的用于文件交换的服务,目前大小公司都有在用。最近公司有需求须要搭建FTP服务,就研究了一下。linux

  本次主要是基于vsftpd的搭建和配置。sql

1、vsftpd简介:vim

vsftpd是一个UNIX类操做系统上运行的FTP服务器,它能够运行在Linux、BSD、Solaris、HP-UNIX等多种操做系统上面,是一个彻底免费的、开发源代码的ftp服务器软件。目前主流的Linux发行版中均可以找到vsftpd的身影。安全

它有以下特色:服务器

  
  
  
  
  1. 程序小巧轻快,安装方便。 
  2. 安全性和稳定性较早期FTP有很大进步。 
  3. 配置简单。 

2、学习安装和配置vsftpd:session

实验环境:Centos 5.8 x86_64 app

测试环境关掉防火墙和selinux。tcp

       
       
       
       
  1. service iptables stop 
  2. setenforce 0 

一、安装vsftpdide

  
  
  
  
  1. yum -y install vsftpd 

二、vsftpd相关的目录及配置文件工具

  
  
  
  
  1. /usr/sbin/vsftpd  vsftpd主程序。 
  2. /etc/init.d/vsftpd  vsftpd服务控制脚本。 
  3. /etc/pam.d/vsftpd  这个是vsftpd使用PAM模块时的相关配置文件,主要用来验证登录FTP用户帐号的身份。 
  4. /etc/vsftpd/  配置文件目录。 
  5. /etc/vsftpd/vsftpd.conf  vsftpd服务主配置文件,使用方法:参数=设定值。 
  6. /etc/vsftpd/ftpusers  与PAM模块的配置文件配合使用,主要填写FTP用户帐号,一行一个。 
  7. /etc/vsftpd/user_list  vsftpd服务本身的用户帐户控制文件,与vsftpd.conf配置文件中的userlist_enable、userlist_deny两个参数有关。 
  8. /var/ftp/  默认匿名用户根目录。 

三、主配置文件vsftpd.conf详解

  
  
  
  
  1. 与服务器环境较相关的设定值 
  2.  
  3. connect_from_port_20=YES (NO
  4.  
  5. 主动式链接时使用FTP服务器的端口号,就是FTP-date的端口号。 
  6.  
  7. listen_port=21 
  8.  
  9. vsftpd控制端口。 
  10.  
  11. dirmessage_enable=YES (NO
  12.  
  13. 当用户进入某个目录时,是否显示该目录须要注意的内容,显示信息的文件默认是 .message 。 
  14.  
  15. message_file=.message 
  16.  
  17. 当 dirmessage_enable=YES 时,能够修改默认显示信息文件的文件名。 
  18.  
  19. listen=YES (NO
  20.  
  21. 设置为YES表示以stand alone方式启动服务器,设置为NO则表示以super deamon的方式启动服务器。 
  22.  
  23. pasv_enable=YES (NO
  24.  
  25. 启动被动模式(passive mode),必定要设置为YES。 
  26.  
  27. use_localtime=YES (NO
  28.  
  29. 启用本地时间,通常须要设置为YES。由于vsFTPd默认使用GMT格林威治时间,这比东八区的时间早了8个小时,会使得服务器上的文件时间属性出现混乱。 
  30.  
  31. write_enable=YES (NO
  32.  
  33. 是否容许用户上传数据。 
  34.  
  35. connect_timeout=60 
  36.  
  37. 在数据链接主动模式下,发出的链接信号在60秒内没有获得客户端的响应,则强制断线。 
  38.  
  39. accept_timeout=60 
  40.  
  41. 在用户以PASV被动模式进行数据传输时,若是主机启动passive port并等待客户端超过60秒无回应,就强制断线。 
  42.  
  43. data_connection_timeout=300 
  44.  
  45. 在客户端和服务器的数据链接已经创建的状况下,若是在300秒内仍是没法顺利完成数据传输,则客户端的连线会被vsFTPd强制断开。 
  46.  
  47. idle_session_timeout=300 
  48.  
  49. 若是用户在300秒内没有命令操做,则断线。 
  50.  
  51. max_clients=0 
  52.  
  53. 当vsFTPd以stand alone模式运行时,这个参数决定同一个IP、同一时间内被服务器容许的链接数。 
  54.  
  55. max_per_ip=0 
  56.  
  57. 与上面 max_clients 相似,这里是同一个 IP 同一时间可容许多少联机? 
  58.  
  59. pasv_min_port=0, pasv_max_port=0 
  60.  
  61. 这两个参数指定pasv模式使用的端口号的范围,0表示不限制。 
  62.  
  63. ftpd_banner=一些文字说明 
  64.  
  65. 用登入FTP时,显示的欢迎信息,可设定显示的信息内容较少。 
  66.  
  67. banner_file=/path/file 
  68.  
  69. 这个参数能够弥补FTPd_banner参数的不足,特别是当须要在服务器端展现较多的文字信息时(如站点说明,欢迎文字等等)。 
  70.  
  71. 与实体用户较相关的设定值 
  72.  
  73. guest_enable=YES (NO
  74.  
  75. 开启访客用户,若是开启则全部的非匿名用户的均会被假设成访客身份。访客默认状况下使用FTP这个帐户相关的权限设置,可是能够经过参数guest_username来修改。 
  76.  
  77. guest_username=ftp 
  78.  
  79. 在开启了guest_enable=YES以后才会生效,用来指定访客的身份。 
  80.  
  81. local_enable=YES (NO
  82.  
  83. 是否容许/etc/passwd中存在的实体用户账号登录vsFTPd服务器。 
  84.  
  85. local_max_rate=0 
  86.  
  87. 实体用户的传输速度限制,单位为bytes/second,0表示不限制。 
  88.  
  89. chroot_local_user=YES (NO
  90.  
  91. 将实体用户限制在本身的家目录以内,默认值为NO。 
  92.  
  93. chroot_list_enable=YES (NO)、chroot_list_file=/etc/vsftpd.chroot_list 
  94.  
  95. 这两个参数须要配合使用,用以将chroot_list文件中列出的用户限制在本身的默认目录中。 
  96.  
  97. userlist_enable=YES (NO)、userlist_deny=YES (NO)、userlist_file=/etc/vsftpd/user_list 
  98.  
  99. 参数userlist_enable=YES表示借助vsFTPd的阻止机制来处理user_list文件中列出的某些不受欢迎的账号;当userlist_deny=YES时user_list文件中的账号将被拒绝,当userlist_deny=NO时则表示容许user_list中的账号登录服务器; 
  100.  
  101. 匿名者登入的设定值 
  102.  
  103. anonymous_enable=YES (NO
  104.  
  105. 是否容许匿名帐户anonymous登陆,如下参数均在容许状况下生效。 
  106.  
  107. anon_world_readable_only=YES (NO
  108.  
  109. 是否容许匿名用户具备只读权限。 
  110.  
  111. anon_other_write_enable=YES (NO
  112.  
  113. 是否容许匿名帐户具备可写权限。 
  114.  
  115. anon_mkdir_write_enable=YES (NO
  116.  
  117. 是否容许匿名用户具备建立目录的权限。 
  118.  
  119. anon_upload_enable=YES (NO
  120.  
  121. 是否容许匿名用户具备上传文件的权限。 
  122.  
  123. deny_email_enable=YES (NO
  124.  
  125. 如果启动这项功能,则必须提供一个档案/etc/vsftpd/banner_emails,内容为email address。如果使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不容许进入。默认值为NO。 
  126.  
  127. banned_email_file=/etc/vsftpd/banned_emails 
  128.  
  129. 若是 deny_email_enable=YES 时,能够利用这个设定项目来规定哪一个 email address 不可登入咱们的 vsftpd 喔!在上面设定的档案内,一行输入一个 email address 便可! 
  130.  
  131. no_anon_password=YES (NO
  132.  
  133. 此文件用来输入email address,只有在deny_email_enable=YES时,才会使用到此档案。如果使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不容许进入。 
  134.  
  135. anon_max_rate=0 
  136.  
  137. 设置匿名登入者使用的最大传输速度,单位为B/s,0 表示不限制速度。默认值为0。 
  138.  
  139. anon_umask=077 
  140.  
  141. 设置匿名登入者新增或上传档案时的umask 值。默认值为077,则新建档案的对应权限为700。 
  142.  
  143. 关于系统安全方面的一些设定值 
  144.  
  145. ascii_download_enable=YES (NO
  146.  
  147. 设置是否启用ASCII 模式下载数据。默认值为NO。 
  148.  
  149. ascii_upload_enable=YES (NO
  150.  
  151. 设置是否启用ASCII 模式上传数据。默认值为NO 
  152.  
  153. one_process_model=YES (NO
  154.  
  155. 是否使用单进程模式 
  156.  
  157. tcp_wrappers=YES (NO
  158.  
  159. 设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制。默认值为YES。若是启用,则vsftpd服务器会检查/etc/hosts.allow 和/etc/hosts.deny 中的设置,来决定请求链接的主机,是否容许访问该FTP服务器。这两个文件能够起到简易的防火墙功能。 
  160.  
  161. xferlog_enable=YES (NO
  162.  
  163. 是否启用上传/下载日志记录。若是启用,则上传与下载的信息将被完整纪录在xferlog_file 所定义的档案中。预设为开启。 
  164.  
  165. xferlog_file=/var/log/xferlog 
  166.  
  167. 设置日志文件名和路径,默认值为/var/log/vsftpd.log。 
  168.  
  169. xferlog_std_format=YES (NO
  170.  
  171. 若是启用,则日志文件将会写成xferlog的标准格式,如同wu-ftpd 通常。默认值为关闭。 
  172.  
  173. dual_log_enable=YES, vsftpd_log_file=/var/log/vsftpd.log 
  174.  
  175. 若是启用该选项,将生成两个类似的日志文件,默认在 /var/log/xferlog 和 /var/log/vsftpd.log 目录下。前者是 wu-ftpd 类型的传输日志,能够利用标准日志工具对其进行分析;后者是Vsftpd类型的日志。 
  176.  
  177. nopriv_user=nobody 
  178.  
  179. 预设vsftpd服务的运行帐户。 
  180.  
  181. pam_service_name=vsftpd 
  182.  
  183. 设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。 

四、配置实例

基于匿名用户的配置:

  
  
  
  
  1. cd /etc/vsftpd/ 
  2. vim vsftpd.conf 

      
      
      
      
  1. write_enable=YES 
  2. anonymous_enable=YES 
  3. no_anon_password=YES 
  4. anon_upload_enable=YES 
  5. anon_mkdir_write_enable=YES 
  6. anon_other_write_enable=YES 
  7. anon_root=/data/vsftpd 
  8. anon_world_readable_only=NO 
  9. syslog_enable=YES 
  10. connect_from_port_20=YES 
  11. pam_service_name=vsftpd 
  12. listen=YES 

  
  
  
  
  1. mkdir -p /data/vsftpd/upload 
  2. chmod 777 /data/vsftpd/upload 

基于本地用户的配置:

  
  
  
  
  1. cd /etc/vsftpd/ 
  2. vim vsftpd.conf 

      
      
      
      
  1. anonymous_enable=NO 
  2. local_enable=YES 
  3. write_enable=YES 
  4. local_umask=022 
  5. dirmessage_enable=YES 
  6. xferlog_enable=YES 
  7. connect_from_port_20=YES 
  8. xferlog_std_format=YES 
  9. pam_service_name=vsftpd 
  10. userlist_enable=YES 
  11. listen=YES 
  12. tcp_wrappers=YES 
  13. userlist_deny=NO 

  
  
  
  
  1. useradd test 
  2. echo test | passwd --stdin test 
  3. echo "test" >> user_list 

基于虚拟用户的配置:

  
  
  
  
  1. yum -y install db4-utils 
  2. cd /etc/vsftpd/ 
  3. vim virtual_userlist.txt 

      
      
      
      
  1. test1 
  2. 123456 
  3. test2 
  4. 123456 

  
  
  
  
  1. db_load -T -t hash -f /etc/vsftpd/virtual_userlist.txt /etc/vsftpd/virtual_userlist.db 
  2. chmod 600 /etc/vsftpd/virtual_userlist.db 
  3. vim /etc/pam.d/vsftpd.vu 

      
      
      
      
  1. auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_userlist 
  2. account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_userlist 

  
  
  
  
  1. useradd virtual_user -d /data/vsftpd 
  2. chmod 700 /home/ftpsite 
  3. chown virtual_user.virtual_user /data/vsftpd/ 
  4. vim /etc/vsftpd/vsftpd.conf 

      
      
      
      
  1. anonymous_enable=NO 
  2. local_enable=YES 
  3. xferlog_enable=YES 
  4. connect_from_port_20=YES 
  5. xferlog_std_format=YES 
  6. listen=YES 
  7. listen_port=21 
  8. userlist_enable=YES 
  9. guest_enable=YES 
  10. guest_username=virtual_user 
  11. pam_service_name=vsftpd.vu 
  12. virtual_use_local_privs=YES 
  13. ftpd_banner=Welcome to opendoc FTP service. 
  14. write_enable=YES 
  15. anonymous_enable=NO 
  16. anon_world_readable_only=NO 
  17. anon_upload_enable=YES 
  18. anon_mkdir_write_enable=YES 
  19. anon_other_write_enable=YES 
  20. local_umask=022 
  21. download_enable=Yes 
  22. local_root=/data/vsftpd 

关于服务器控制:

  
  
  
  
  1. service vsftpd {start|stop|restart|condrestart|status} 

客户端操做:

clip_p_w_picpath002

到此,vsftpd的安装配置算是告一段落了,若有问题请和我联系。。

相关文章
相关标签/搜索