linux-vsftp服务器搭建,匿名,本地,虚拟用户访问控制

vsftpd服务器/

1.简介:

  • FTP:文件传输协议,工作模式[客户端/服务器],FTP服务端口号:tcp/21、tcp/20。是一个客户机/服务器系统。使用FTP用户需要经过验证后才能登陆,FTP服务的用户可分位3类。

  • 系统用户:

    • 系统本机用户,linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件系统进行工作。但通常不希望他们通过FTP方式远程访问系统
  • 虚拟用户:

    • 只能采用FTP方式使用系统的用户,不能直接使用shell登录系统,即虚拟用户,访问服务器时需要验证。大多数FTP用户是这类用户。
  • 匿名用户:

    • 对公共性质的服务器可以提供匿名用户访问,用户名anonymous.但在使用匿名用户时,应对其进行尽可能多的限制,权限较低,如:
      • 同时连接的用户数量受限,访问的文件数目受限
      • 不能上传文件,允许操作的指令较少
      • 设置匿名用户同时登入的最大联机数量等
  • FTP主动模式:从服务器主动发送链接tcp21

  • FTP被动模式:从客户端发送链接请求tcp20

2.服务器安装

  • 使用yum安装
    • 安装原理:自动到软件仓库云下载相应软件包进行自动安装
  • 软件存放位置(软件仓库):
    • 网络源:http:// 或 https://
    • FTP源:ftp://
    • 本地:file://
  • yum源文件存放位置(只能再这个位置):cd /etc/yum.repos.d/
  1. yum安装命令:

    • 查看软件是否已经安装:

      # rpm -qa | grep 软件名称
      例:# rpm -qa | grep vsftpd
      
    • 列出仓库的所有软件包:

      # yum list | grep vsftpd
      
    • 安装软件:

      # yum install 软件包名称
      
    • 卸载软件:

      # yum remove 软件包名称
      
    • 清除yum缓存:

      # yum clean all
      
    • 生成缓存:

      # yum makecache
      
  2. 使用默认yum源安装vsftpd软件包:

    # yum install vsftpd ftp
    
  3. 启动服务并设置开机自启:

    # systemctl start vsftpd
    # systemctl enable vsftpd
    
  4. 设置防火墙与selinux机制:

    # firewall-cmd --permanent --zone=public --add-service=ftp
    # firewall-cmd --reload	:重启防火墙
    # setenforce 0 :关闭selinux安全机制
    
    --permanent(永久生效的状态):设置后不会立即启动,需要重启防火墙才会立即生效
    public:防火墙public区域
    
  5. 访问ftp服务器验证:

    • linux中验证:匿名用户anonymous或者ftp,密码直接回车就可以

      [root@localhost ~]# ftp 192.168.88.130
      Connected to 192.168.88.130 (192.168.88.130).
      220 welcome is dog!!!!!!!!!!
      Name (192.168.88.130:root): ftp
      331 Please specify the password.
      Password:
      230 Login successful.
      Remote system type is UNIX.
      Using binary mode to transfer files.
      ftp> 
      
    • windows中验证:

      • ftp软件:
      • 浏览器:ftp://192.168.88.130
      • 电脑文件搜索:ftp://192.168.88.130
    • 默认访问目录为:/var/ftp/

3.匿名用户访问配置

  • 默认ftp用户只有上传权限
  1. 修改配置文件:# vim /etc/vsftpd/vsftpd.conf

  2. 找到并修改为:# anonymous_enable=YES

  3. 修改配置文件:

    no_anon_password=YES :表示匿名用户不输入密码
    ftpd_banner=welcome to our home!!!! :设置的提示信息
    

    anon…开头的:是针对匿名用户的设置

  4. 修改配置文件使win等可以上传文件:

    # vim /etc/vsftpd/vsftpd.conf
    找到:anon_upload_enable=YES :YES允许上传,匿名用户可以上传文件
    找到:anon_makdir_write_enable=YES :匿名用户可以新建,写入文件
    添加:anon_other_write_enable=YES :匿名用户具有删除权限
    添加:anon_root=/var/public :修改匿名用户的默认访问目录为/var/public
    目录不可以设置为其他用户的家目录
    
    # systemctl restart vsftpd
    

    如果权限修改后,任然不能进行相应操作,可能是文件本身没有权限

    • 修改文件权限
    # setfacl -m u:ftp:rwx pub :给文件添加一个acl
    
    • 关闭selinux安全机制
    # setenforce 0
    
  5. 设置匿名用户上传或新建文件夹的默认权限

    • umask值:决定了新建文件或文件夹时的默认权限
    • umask值的表示方法:0022

    如果使用vsftpd的是本地用户,则需要修改配置文件中的local_umask

    如果使用vsftpd的是虚拟用户,则需要修改配置文件中的anon_umask

    umask=022 时,新建的目录权限是755,文件的权限是644

    umask=077时,新建的目录权限是700,文件的权限是600

    umask计算方法:777-022=755 文件夹

    umask计算方法:666-022=644 文件

4.系统用户访问配置

  • 系统用户FTP相关知识:
    • 系统用户默认访问主目录具有上传,下载,新建,删除的权限,还可以切换到系统的其他目录。
  1. 关闭匿名用户访问,只允许系统用户访问:

    修改:anonymous_enable=no 	:关闭匿名用户访问
    默认:local_enable=YES 	:允许系统用户访问
    默认:local_umask=022		:默认系统用户新建文件的权限
    
  2. 设置系统用户的权限:

    修改或添加:chroot_local_user=YES	  :控制用户访问路径访问自己的主目录,不能切换到其他目录
    修改或添加:allow_writeable_chroot=YES :允许写入
    修改或添加:max_clients=30 :设置最大连接数为30
    修改或添加:idle_session_timeout=600 :设置超时时间
    
  3. 设置系统用户访问指定目录不允许切换到系统的其他目录,并且上传、下载、新建、删除权限。

    修改或添加:local_root=/mnt/public/ :设置系统用户访问ftp默认目录
    修改或添加:write_enable=YES :允许写入
    修改或添加:chroot_local_user=YES :控制用户访问路径访问指定目录,不能切换到其他目录
    修改或添加:allow_writeable_chroot=YES :允许写入
    

    修改了系统用户默认访问目录后,要给用户添加目录的acl访问控制权限

  4. 基于本地用户的访问控制:

    • 默认情况下,ftp服务器中所有系统用户都可以访问ftp,如果来限定只有指定的系统用户可以访问,vsftpd中提供了两个系统用户相关的配置文件:

      • /etc/vsftpd/ftpusers:提供了一份用于禁止登录的ftp用户列表(黑名单),此文件中包含的用户被禁止登录vsftpd服务器,不管该用户是否在/etc/vsftpd/user_list中出现。
      • /etc/vsftpd/user_list:提供提供了一份用于允许登录的ftp用户列表(白名单) 此文件中包含的用户可能被禁止登录,可能被允许登录
    • 具体在主配置文件vsftpd.conf中决定:

      • 当存在userlist_enable=YES时,user_list文件生效。

        当存在userlist_deny=YES时,则仅禁止列表中的帐户登录。

        当存在userlist_deny=NO时,则允许列表中用户登录。

        其中:ftpusers文件的优先级要高于user_list文件,即如果一个用户同时存在

        于两个文件中,则被拒绝访问ftp。

    • 例:只允许ftpuser用户访问ftp:

      # vim /etc/vsftpd/vsftpd.conf
      
      userlist_enable=YES		启用userlist用户列表(系统默认设置)
      userlist_deny=NO		只允许列表中的用户登录
      
    • 修改文件:/etc/vsftpd/user_list

      # vim /etc/vsftpd/user_list
      添加:
      stu1
      
    • 重启服务,登录验证

      # systemctl restart vsftpd
      

5.虚拟用户访问

  1. 安装vsftpd虚拟用户需要用到的软件及认证模块

    #yum install pam* libdb-utils libdb* --skip-broken -y
    
  2. 创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,用户名密码格式如下:

    # vim /etc/vsftpd/ftpusers.txt
    Techftp  用户名
    123456   密码
    netftp
    123456
    admftp
    123456
    markftp
    123456
    
  3. 生成Vsftpd虚拟用户数据库认证文件,设置权限为600

    #db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db
    #chmod 600 /etc/vsftpd/vsftp_login.db 
    
  4. 配置PAM认证文件:vim /etc/pam.d/vsftpd.vu

    # vim /etc/pam.d/vsftpd.vu
    auth   required   pam_userdb.so   db=/etc/vsftpd/vsftp_login
    account  required  pam_userdb.so  db=/etc/vsftpd/vsftp_login
    
  5. 创建一个系统用户,用于虚拟用户映射

    #useradd -s /sbin/nologin ftpuser
    
  6. 修改配置文件: /etc/vsftpd/vsftpd.conf

    # vim /etc/vsftpd/vsftpd.conf
    注释掉原来的
    # pam_service_name=vsftpd
    添加:
    pam_service_name=vsftpd.vu 
    guest_enable=YES :开启系统虚拟用户访问
    guest_username=ftpuser :指定系统虚拟用户
    user_config_dir=/etc/vsftpd/vsftpd_user_conf   指定虚拟用户的配置文件目录
    virtual_use_local_privs=YES   允许虚拟用户访问
    
  7. 分别为虚拟用户创建私有的虚拟目录与独立的配置文件:

    #mkdir /home/ftpuser/techftp
    #mkdir /etc/vsftpd/vsftpd_user_conf
    #vim techftp
    写入如下内容:
    
    local_root=/home/ftpuser/techftp   默认访问的目录
    write_enable=YES   允许写入
    anon_world_readable_only=YES   允许浏览
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    
    #mkdir /home/ftpuser/netftp
    #vim netftp
    local_root=/home/ftpuser/netftp
    write_enable=YES
    virtual_use_local_privs=NO      #不具有可登录用户的权限     
    anon_world_readable_only=YES             #可浏览目录
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    
  8. 登录验证:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值