ftp(文件传输协议)服务

ftp服务
1,ftp的定义
ftp:// ##文件传输协议
2.ftp协议提供的软件
在rhel7中:vsftpd
3.部署ftp服务
ftp(文件传输协议)是Internet上常用的最老的网络协议之一,它的系统提供了通过网络与远程服务器进行传输的简单方法。ftp服务器包的名称为vsftpd,它代表Very Secure File Transfer Protocol Damon,服务器名称也叫做vsftpd。
默认配置文件让anonymous用户(匿名用户)只能下载位于chroot目录中的内容。
/var/ftp/这意味着远程ftp客户端能以anonymous用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录
下载文件(其本地ftp用户可以读取这些文件)
4,/etc/vsdftpd/vsftpd.conf #服务配置文件
5,ftp://id #可在浏览器上访问
6,连接时部分报错的分析;

    id          #解释
    500   #文件系统权限过大
    530   #用户认证失败
    550   #服务本身功能未开放
    553   #本地文件系统权限过小

ftp部署
1,服务端部署:
安装vsftpd
在这里插入图片描述安装 lftp
在这里插入图片描述
开启vsftpd服务,并设置开机自启动
在这里插入图片描述

开启火墙,并添加ftp服务到火墙白名单
方法一:
输入命令

        systemctl    start    firewalld.service   #开启防火墙
        firewall-cmd --permanent  --add-service=ftp   #开启火墙,并添加ftp服务到火墙白名单
        firewall-cmd  --reload      #重新加载
        firewall-cmd   --list-all      #查看ftp服务是否已经添加到火墙白名单中
        lftp   172.25.254.100     #使用ftp访问主机(ls有内容显示,则代表登录成功,否则不成功)

在这里插入图片描述

方法二:

  firewall-config      #用图形更改防火墙设置

在这里插入图片描述注: 在options选项中选择第一个选项,然后关闭窗口。

2,关闭selinux

                    getenforce           #查看selinux状态

显示enforcing,则代表没有关闭
在这里插入图片描述
将selinux的状态改为disabled
在这里插入图片描述重启服务器(因为这个修改是内核级的,所以我们需要重启虚拟机)

查看,修改成功
在这里插入图片描述

3,客户端部署:
安装lftp
在这里插入图片描述
测试:登录服务器成功(服务器ip:172.25.254.100)
在这里插入图片描述

FTP服务的基本信息

1软件安装包:vsftpd
2,默认发布目录:/var/ftp
3,协议接口:21/tcp
4,服务配置文件:/etc/vsftpd/vsftpd.conf
注意:编辑配置文件后,一定要记得重启服务
5,报错id的解析:

          500 文件系统权限过大
          530 用户认证失败
         550 服务本身功能未开启
         553 本地文件系统权限过小

ftp的安全部署
通过编辑服务配置文件:/etc/vsftpd/vsftpd.conf,进行安全部署

为了方便后续的测试,给服务端新建一个用户,并设置密码

在这里插入图片描述
(1)匿名用户登录的设定:

  anonymous_enable=YES|NO    匿名用户是否可以登陆 (YES为可以登录)

在这里插入图片描述
修改成NO,则匿名用户不能登录
在这里插入图片描述
编辑配置文件后,一定要重启服务。
在这里插入图片描述

测试:在这里插入图片描述

匿名用户上传:

   write_enable=YES/NO     #ftp是否对用户可写,即上传,下载,创建等功能
   anon_upload_enable=YES/NO     #  允许匿名用户是否可以上传

在服务端:
在这里插入图片描述

           systemctl restart  vsftpd     ##重启vsftpd服务
          chgrp  ftp   /var/ftp/pub       ##更改该文件的组为ftp
          chmod  775  /var/ftp/pub     ##允许该文件被ftp组可读可写

在这里插入图片描述

在客户端:
注:put为上传文件

在这里插入图片描述

匿名用户建立家目录:

  anon_mkdir_write_enable=YES|NO    #匿名用户是否可以创建家目录

在服务端:

在这里插入图片描述
在这里插入图片描述
在客户端验证:

在这里插入图片描述
匿名用户上传文件的权限修改:

   anon_mask=022       匿名用户新增文件时系统保留的权限为022

在服务端:
在这里插入图片描述
在这里插入图片描述

在客户端:
验证如下:
在这里插入图片描述
注:由于系统对文件保留执行权限,所以文件最后的权限为777-022=644

匿名用户建立家目录:

   non_mkdir_write_enable=YES/NO       #匿名用户是否可以创建家目录(33行)

在服务端:
vim /etc/vsftpd/vsftpd.conf

在这里插入图片描述
在这里插入图片描述

在客户端:
验证如下:
在没有添加配置文件的参数前
在这里插入图片描述

在添加了配置文件参数之后

在这里插入图片描述

匿名用户下载:

   anon_world_readable_only=YES|NO   #设定参数值为no表示匿名用户可以下载

在服务端:
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd

在这里插入图片描述
在这里插入图片描述

在客户端:
验证如下:
注:下载的命令是get
在这里插入图片描述

匿名用户删除:

   anon_other_write_enable=YES|NO    #匿名用户是否可以删除文件

在服务端:

   vim /etc/vsftpd/vsftpd.conf   ##更改配置
    systemctl restart vsftpd  ##重启服务

匿名用户使用的用户身份修改

  chown_uploads=YES              #所有匿名上传的用户文件的所属用户将会被改成chown_username(默认在48行)
  chown_uesername=westos         #匿名用户身份指定,必须为服务段已有用户(默认在49行)

在客户端:
验证如下:

在这里插入图片描述
匿名用户使用的用户身份修改:

    chown_uploads=YES 	所有匿名上传的用户文件的所属用户将会被改成chown_username(默认在48行)
    
 chown_username=redhat 	匿名用户身份指定,必须为服务端已有用户(默认在49行)

在服务端:

vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务

在这里插入图片描述

在客户端:
验证如下:
在这里插入图片描述

发现上传文件的用户的uid已经变成westos的uid为1001

匿名用户上传文件的最大速率:速度为100k:

      anon_max_rate=102400           #最大上传速率,单位bit

在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在这里插入图片描述
发现上传速率保持在100K左右

匿名用户最大连接设备:

  max_clients=2                  #只允许两个用户登陆该ftp服务器

在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务

在这里插入图片描述

在客户端:
检测如下:
在这里插入图片描述
发现只有一台可以连接到!

(2)本地用户的设定:

本地用户的登陆;

  local_enable=YES|NO        #本地用户是否可以登陆

在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务

在这里插入图片描述
在客户端:
验证如下:
在这里插入图片描述

本地用户家目录的修改:

   local_root=/directory     #家用户权限应没有w
   write_enable=YES          #本地用户写权限限制

在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsgtpd ##重启服务

在这里插入图片描述
在这里插入图片描述
在客户端:
验证如下:
在这里插入图片描述

本地用户上传文件权限:

  local_umask=022          #本地用户新增文件时系统保留的权限

在服务端:
vim /etc/csftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务

在这里插入图片描述
在客户端:
验证如下:
在这里插入图片描述
上传的/etc/fstab文件的权限为777-022=644

限制本地用户浏览根目录:

 chroot_local_user=YES    #将本地用户锁定到自己的家目录中
  重启服务systemctl restart vsftpd

在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务

在这里插入图片描述

在客户端:
验证如下:
在对vsftpd的文件进行配置之前,发现可以浏览家目录
在这里插入图片描述
在对文件进行了参数配置之后,发现浏览不了家目录,该用户被锁定在了自己的家目录中。
在这里插入图片描述

本地用户黑名单的建立:
#黑名单中的用户只能浏览自己的家目录,白名单的用户可以浏览家目录

  chroot_local_user=NO     #NO表示下面的路径为黑名单
  chroot_list_enable=YES    #表示开启黑白名单功能
   chroot_list_file=/etc/vsftpd/chroot_list   #黑名单路径
    重启服务systemctl restart vsftpd

在服务端:

touch /etc/vsftpd/chroot_list ##建立用户黑名单文件
vim /etc/vsftpd/chroot_list ##在里面添加的用户不能进入根目录
在这里插入图片描述
在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务

在这里插入图片描述
在客户端:
验证如下:
当student登录的时候,发现不能切到家目录,被锁定到了自己的家目录中,因为student在黑名单中,但用westos登录后发现可以进入家目录的根

在这里插入图片描述

本定用户白名单的建立;
#黑名单中的用户只能浏览自己的家目录,白名单的用户可以浏览家目录

  chroot_local_user=YES    #YES表示下面的路径为白名单
  chroot_list_enable=YES   #表示开启黑白名单功能
  chroot_list_file=/etc/vsftpd/chroot_list   #白名单路径
   重启服务systemctl restart vsftpd

在服务端:
touch /etc/vsftpd/chroot_list ##建立用户白名单文件
vim /etc/vsftpd/chroot_list ##编辑白名单文件

在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务

在这里插入图片描述
在客户端:
验证如下:
student用户在白名单中,可以浏览家目录

在这里插入图片描述
westos不是白名单上的用户,被锁定在了自己的家目录中

在这里插入图片描述

(3)限制本地用户登陆:

用户永久黑名单的建立:
在服务端设置:
编辑文件,添加用户在该文件中即可。

  vim  /etc/vsftpd/ftpusers  ##用户永久黑名单,只要出现在该名单上的用户不能登录ftp服务器

在这里插入图片描述
在客户端:
验证如下
在这里插入图片描述

用户临时黑白名单的建立:
更改配置文件:vim /etc/vsftpd/vsftpd.conf 中添加参数:userlist_deny=YES|NO #当为YES时,为黑名单,NO时为白名单
编辑文件vim /etc/vsftpd/user_list
添加用户即可。
重启服务systemctl restart vsftpd

在服务端:
在这里插入图片描述

   vim /etc/vsftpd/vsftpd.conf    ##更改配置
   systemctl restart vsftpd       ##重启服务

在这里插入图片描述

在客户端:
验证如下:

在这里插入图片描述
(5)虚拟用户的设定:

1)创建虚拟用户身份:
vim /etc/vsftpd/viruser #新建虚拟用户文件名单
内容:westos1
123
westos2
123
westos3
123
在这里插入图片描述
虚拟用户文件的加密

     db_load -T -t hash -f /etc/vsftpd/viruser /etc/vsftpd/viruser.db   #虚拟用户文件的加密(hash加密)

在这里插入图片描述

建立虚拟文件与/etc/vsftpd/vsftpd.conf的联系;

     vim  /etc/pam.d/virt       #指定文件名称为任意名称
    内容:account     required    pam_userdb.so  db=/etc/vsftpd/viruser
               auth        required    pam_userdb.so  db=/etc/vsftpd/viruser

解析: 用户或密码: account,auth
判定方式: required
指向插件: pam_user.so
帐号文件: db=/etc/vsftpd/viruser

在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf ##更改配置文件
systemctl restart vsftpd ##重启服务

更该配置文件:/etc/vsftpd/vsftpd.conf

   内容:pam_service_name=virt   #关联/etc/pam.d目录下的virt文件
    guest_enable=YES       #虚拟用户可以登陆
    guest_username=ftp     #虚拟用户登陆时用的身份

验证:
在这里插入图片描述

2)虚拟用户帐号独立家目录设置;

   mkdir  -p /var/ftpuserdir/westos{1..3}     #家目录的名字必须与虚拟帐号的名相同
   vim  /etc/vsftpd/vsftpd.conf        ##更改配置文件
   systemctl   restart   vsftpd         ##重启服务

在这里插入图片描述

更改配置文件:vim /etc/vsftpd/vsftpd.conf

   内容:local_root=/var/ftpuserdir/$USER  #设置用户进入的家目录为/var/ftpuserdir/$USER,表示当前用户的名字
     user_sub_token=$USER              #设置该配置文件识别,(user符号时使用shell里面的user)

在这里插入图片描述
在服务端:
在这里插入图片描述

在客户端:

   lftp 172.25.254.123 -u westos1
     ls

在这里插入图片描述

3)虚拟帐号独立配置:

   user_config_dir=/etc/vsftpd/user_conf 	设置虚拟用户独立配置路径

准备工作:
在这里插入图片描述
mkdir -p /etc/vsftpd/user_conf ##创建独立配置路径
vim /etc/vsftpd/user_conf ##编辑该文件
在这里插入图片描述
在这里插入图片描述
vim /etc/vsftpd/vsftpd.conf ##更改配置文件
systemctl restart vsftpd ##重启服务

   内容:anon_upload_enable=YES  
  更改配置文件:vim  /etc/vsftpd/vsftpd.conf   
 内容:user_config_dir=/etc/vsftpd/user_conf   #设置虚拟用户独立配置路径

验证:
在客户端:

   lftp 172.25.254.123 -u westos1
   cd  /pub
   put  /etc/fstab

在这里插入图片描述

在这里插入图片描述

发现可以上传.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值