Linux中FTP服务器配置

2019-08-29 08:58:28来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Linux中FTP服务器配置

     1、FTP服务器的一些基本概念       (1)FTP连接方式     控制连接:标准端口为21,用于发送FTP命令信息。     数据连接:标准端口为20,用于上传、下载数据。       (2)数据连接的建立类型     主动模式:服务端从20端口主动向客户端发起连接。     被动模式:服务端在指定范围内的某个端口被动等待客户端发起连接。     一般都采用被动模式。主动模式存在安全隐患,客户机很容易发起DdoS攻击。       (3)FTP传输模式     文本模式:ASCII模式,以文本序列传输数据。     二进制模式:Binary模式,以二进制序列(比特流)传输数据。     ASCII模式一般只用于纯文本文件传输,而Binary模式更适合传输程序、图片等文件。尤其是对于可执行文件,如果把可执行文件以文本模式传输,则下载下来的文件将无法正常使用。     在rhel6中默认采用二进制模式,在rhel6以前的版本中默认采用文本模式,为了提高可靠性,rhel6不再支持文本模式。       (4)FTP用户的类型     匿名用户:anonymous或ftp,这两个其实是同一个用户。     本地用户:帐号名称、密码等信息保存在passwd、shadow文件中。但是系统用户在访问时默认只能访问自己的主目录,而不是vsftpd的主目录/var/ftp     虚拟用户:使用独立的帐号/密码数据文件。          2、vdftpd服务        后台进程:vsftpd        启动脚本:/etc/init.d/vsftpd        类型:System V 服务        使用端口:20(ftp-data),21(ftp)        所需RPM包:vsftpd        配置文件:/etc/vsftpd/vsftpd.conf        查看配置文件帮助:man  vsftpd.conf        默认主目录是:/var/ftp   3、配置匿名用户下载和上传 [root@test ~]# cat /etc/redhat-release CentOS release 6.5 (Final)        3.1安装FTP软件包,客户端和服务器端:             tftp-server-0.49-7.el6.i686             ftp-0.17-51.1.el6.i686             tftp-0.49-7.el6.i686             vsftpd-2.2.2-6.el6_0.1.i686             lftp-4.0.9-1.el6.i686             gvfs-obexftp-1.4.3-12.el6.i686          启动服务,并设为开机自动     service  vsftpd  start     chkconfig  vsftpd  on       编辑主配置文件/etc/vsftpd/vsftpd.conf         anonymous_enable=YES  表示允许匿名用户访问。         local_enable=YES  表示允许使用系统用户访问,         write_enable=YES  表示允许允许匿名用户或系统用户具有写入权限             将“/var/ftp/pub”目录的属主改为ftp,即可赋予匿名用户写入权限       [root@test ~]# chown ftp /var/ftp/pub/                  同时在配置文件/etc/vsftpd/vsftpd.conf中增加以下几行:         anon_upload_enable=YES    #表示允许匿名用户上传         anon_mkdir_write_enable=YES  #表示允许匿名用户创建目录         anon_umask=022          #表示设置匿名用户的umask值         anon_max_rate=500000    #表示对匿名用户的传输速率进行限制,单位为字节。       重启服务:service  vsftpd  restart(reload)     3.2、在客户端使用匿名用户访问测试   此时匿名用户可以新建文件夹,可以上传文件,如下图:                  4、配置本地用户上传和下载   (1)vsftpd可以直接使用Linux系统的本地用户作为FTP用户。 使用本地用户登录FTP服务器后,默认将位于用户自己的主目录中,且具有读写权限。 如利用test用户访问ftp,那么默认将进入到的目录是/home/test。                            创建系统用户,并设置密码,并在主目录中放置一个测试文件:         useradd  ftptest            passwd      ftptest         echo ‘ftp test’ > /home/ftptest/ftptest.txt   创建系统用户test,并设置密码:         useradd  test         passwd   test     (2)实现的场景一:允许用户test登录,且登录成功后位于自己的家目录中。不允许ftptest用户登录 配置参数:   anonymous_enable=NO    local_enable=YES     write_enable=YES     chroot_local_user =YES          chroot_list_enable=NO           chroot_list_file=/etc/vsftpd/chroot_list       local_umask=022      userlist_enable=YES  userlist_deny=NO   将test用户加入到 /etc/vsftpd/user_list文件。 [root@test vsftpd]# vi /etc/vsftpd/user_list test   [root@test ~]# cd /home/test/ [root@test test]# ls test.txt       新建文件夹     测试:     (3)实现场景二:允许ftptest用户登录,登录成功后位于/data目录,禁止test用户登录。   anonymous_enable=NO    local_enable=YES     write_enable=YES     chroot_local_user =YES          chroot_list_enable=NO           chroot_list_file=/etc/vsftpd/chroot_list       local_umask=022      userlist_enable=YES  userlist_deny=NO local_root=/data   将ftptest用户加入到 /etc/vsftpd/user_list文件。从此文件中删除test用户。 [root@test vsftpd]# vi /etc/vsftpd/user_list ftptest         配置参数解释:
  • anonymous_enable=NO     //禁止匿名用户登录
  • local_enable=YES                //是否允许本地系统用户访问
  • write_enable=YES               // 表示允许允许匿名用户或系统用户具有写入权限
  • chroot_local_user =YES      // 本地用户在访问时只能访问自己家目录
  • chroot_list_enable=NO       //指定一些用户访问限止在自己的home目录下,就是只能访问自己的家目录
  • chroot_list_file=/etc/vsftpd/chroot_list    //在/etc/vsftpd/chroot_list文件中中列出的是被限制的用户的列表,文件不存在得新建
  • local_umask=022               // 设定本地用户上传文件所用的掩码。
  • local_root=/data           //设置用户登陆时是访问ftp服务的主目录/data
           对于chroot_local_user与chroot_list_enable的组合效果,可以参考下表:
  chroot_local_user=YES chroot_local_user=NO
chroot_list_enable=YES 1、所有用户都被限制在其主目录下; 2、使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制 1、所有用户都不被限制其主目录下; 2、使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制
chroot_list_enable=NO 1、所有用户都被限制在其主目录下; 2、不使用chroot_list_file指定的用户列表,没有任何“例外”用户 1、所有用户都不被限制其主目录下;  2、不使用chroot_list_file指定的用户列表,没有任何“例外”用户
    (4)关于用户访问控制       vsftpd中提供了2个与本地用户相关的配置文件:     /etc/vsftpd/ftpusers     /etc/vsftpd/user_list            /etc/vsftpd/ftpusers,包含的用户账号将被禁止登录vsftpd服务器,不管该用户是否在/etc/vsftpd/user_list文件中出现。                 通常将root、bin、daemon等特殊用户列在该文件中,禁止用于登录FTP服务。          /etc/vsftpd/user_list,该文件中包含的用户账户可能被禁止登录,也可能被允许登录,具体在主配置文件vsftpd.conf中决定。                     当存在“userlist_enable=YES”的配置项时,/etc/vsftpd/user_list文件生效。如果配置“userlist_deny=YES”,则                     仅禁止列表中的用户账户登录,如果配置“userlist_deny=NO”,则仅允许列表中的用户账户登录。          userlist_enable=YES 是系统的默认设置,表示启用userlist用户列表。     userlist_deny=NO  是我们后来添加的,表示只允许列表中的用户登录。               5、配置FTP虚拟用户下载和上传(多个虚拟用户通过本地用户进行登录)     所谓虚拟账户是指:存放于独立数据库文件中的FTP用户账户,可以将他们映射到某个不能登录的系统用户账号上,进一步增强FTP服务器的安全性           (1)、创建虚拟用户数据库文件     使用db_load命令工具创建Berkeley  DB格式的数据库文件。db_load工具由db4-utils软件包提供。安装db4_utils组件。           建立一个文本格式的用户名/密码 列表文件,用于存放虚拟用户账号。文件名可以随意,文件一般保存在/etc/vsftpd目录    [root@test ~]#  vim  /etc/vsftpd/login.txt         harry         123         natasha         123        # 文件中的奇数行表示用户名,偶数行为上一行用户所对用的密码。          以此文件为数据源通过db_load工具创建出Berkeley DB格式的数据库文件:         [root@test ~]#  cd /etc/vsftpd/         [root@test ~]#  db_load      -T  -t  hash  -f   logins.txt  logins.db          db_load命令是一种固定用法,其中的“-T”选项表示允许非Berkeley DB的应用程序使用从文本格式转换的DB数据库文件,“-t   hash”选项指定读取数据文件的基本方法,“-f”选项用于指定数据的源文件。       最后为了提高虚拟用户账号的安全性,最好将这两个存放虚拟用户账号的文件的权限都设为600,即只有root用户具有读取和写入权限。         chmod   600    logins.txt         chmod   600   logins.db         (2)创建虚拟用户的映射账号     vsftpd服务对虚拟用户其实是采用了映射的控制方式,把所有的虚拟用户账号都对应到了同一个系统用户账号上,并将这个系统用户的主目录作为所有虚拟用户登录后共用的FTP根目录。         useradd  -d  /var/ftproot  -s  /sbin/nologin   virtual       chmod    755  /var/ftproot       在useradd命令中,利用-d选项指定了用户的主目录,利用-s选项禁止用户登录。然后再修改目录权限,使得其他用户可以访问。         (3)创建PAM认证文件       对虚拟用户的身份认证是通过PAM机制来实现的,PAM是Linux系统中的一个独立API(应用程序接口),它提供了各种验证模块以供其它程序调用。         当这些程序需要进行用户身份验证的操作时,就可以直接调用PAM的相应模块,而无需由自己来提供验证功能。所以PAM在Linux系统中提供了统一的身份验证机制。              PAM的认证文件都统一存放在/etc/pam.d/目录中,下面我们在这个目录中创建一个FTP虚拟用户的认证文件:         vim    /etc/pam.d/vsftpd.vu【新建文件】         auth         required      pam_userdb.so      db=/etc/vsftpd/logins         account      required     pam_userdb.so     db=/etc/vsftpd/logins       在文件中,通过“db=/etc/vaftpd/logins”参数指定了要使用的虚拟用户数据库文件的位置,注意这里不需要写“.db”     的扩展名。         (4)修改vsftp配置,添加虚拟用户支持         原有配置:         anonymous_enable=NO         local_enable=YES *     #由于需要映射本地用户,所以此项必须启用         write_enable=YES *    #表示允许写入。         local_umask=022         pam_service_name=vdftpd         tcp_wrappers=YES         userlist_enable=YES         anon_umask=022 *  #在vsftpd服务中,虚拟用户被默认作为匿名用户进行处理以降低权限 ,因此对应的配置项通常以anon_开头         anon_max_rate=500000       
                  添加:         guest_enable=YES    #表示启用虚拟用户映射功能         guest_username=virtual        #表示指定所映射的系统用户名称         pam_service_name=vsftpd.vu    #表示指定PAM认证文件         user_config_dir=/etc/vsftpd/vuser    #表示虚拟用户配置文件的存放目录。              (5)创建虚拟用户配置文件          为了对虚拟用户进行精确控制,实现不同用户拥有不同的权限,还需要为每个虚拟用户建立独立的配置文件,在vsftpd.conf配置文件中我们已经指定了虚拟用户配置文件的存放位置/etc/vsftpd/vuser。                  下面我们首先创建虚拟用户配置文件存放目录,然后为harry用户创建配置文件,文件名即是用户名:         mkdir  /etc/vsftpd/vuser         cd   /etc/vsftpd/vuser         vim   harry         然后设置允许harry用户上传,设置方法同匿名用户:             anon_upload_enable=YES         anon_mkdir_write_enable=YES                  再为natasha也创建一个配置文件,如果natasha只允许下载,那么只需要有一个配置文件即可,文件内容保持空白。         touch natasha              重启服务:service  vsftpd  restart           这样虚拟用户便全部设置好了,harry用户具有下载和上传的权限,而natasha只能下载不能上传。                 (6)登录测试                   防火墙的配置:         添加规则:         iptables  -t  filter  -A INPUT  -s  192.168.0.0/16  -p  tcp  --dport  21  -j  ACCEPT           SElinux配置         set  -P  allow_ftpd_anon_write  on         set   -P  allow_ftpd_full_access   on         set   -P  ftp_home_dir   on    

原文链接:https://www.cnblogs.com/liuxing0007/p/11430231.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Linux中哪些工具堪称神器?

下一篇:Linux基础学习5