Linux——FTP服务器部署,FTP安全部署(匿名,本地,虚拟用户的管理)

版权声明:©2004 Microsoft Corporation. All rights reserved. https://blog.csdn.net/qq_42036824/article/details/83508641

一、FTP的概念

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输

二、FTP的部署

  1. 服务端部署:
  • 安装vsftpd
    在这里插入图片描述
    在这里插入图片描述
  • 安装 lftp
    在这里插入图片描述
    在这里插入图片描述
  • 开启vsftpd服务,并设置开机自启动
    在这里插入图片描述
  • 开启火墙,并添加ftp服务到火墙白名单
    在这里插入图片描述
    重新加载
    在这里插入图片描述
    查看,ftp服务已经添加到火墙白名单中
    在这里插入图片描述
  • 使用ftp访问主机(ls有内容显示,则代表登录成功,否则不成功)
    在这里插入图片描述
  1. 关闭selinux
  • 显示enforcing,则代表没有关闭
    在这里插入图片描述
  • 编辑selinux配置文件
    在这里插入图片描述
    将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,则匿名用户不能登录
    在这里插入图片描述
    编辑配置文件后,一定要重启服务以后就不再赘述
    在这里插入图片描述
  • 测试:
    在这里插入图片描述
  1. 本地用户
    (1) local_enable=YES|NO   本地用户是否可以登陆
    在这里插入图片描述
    在这里插入图片描述
  • 测试:
    在这里插入图片描述
    (2)write_enable=YES|NO   ftp是否对登陆用户可写
    在这里插入图片描述
    在这里插入图片描述
  • 测试:在这里插入图片描述
    若改为write_enable=NO,则不可写
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  1. 匿名用户上传
    默认情况下,匿名用户是不能上传的
    在这里插入图片描述
    实现匿名上传的步骤
    (1)编辑配置文件
    在这里插入图片描述
    在这里插入图片描述
    (2)修改匿名用户目录的所有组并给组添加可写的权限在这里插入图片描述
  • 测试
    在这里插入图片描述
  1. 匿名用户家目录修改
    anon_root=/目录
    新建一个目录/hello,并创建文件,若测试端登录后可以直接看到这些文件,则代表家目录修改成功
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • 测试
    在这里插入图片描述
  1. 匿名用户上传文件默认权限修改
    anon_umask=xxx
    在这里插入图片描述
    在这里插入图片描述
  • 测试
    在这里插入图片描述
  1. 匿名用户建立目录
    anon_mkdir_write_enable=YES|NO
    在这里插入图片描述
    在这里插入图片描述
  • 测试
    在这里插入图片描述
  1. 匿名用户下载
    anon_world_readable_only=YES|NO 参数NO表示匿名用户可以下载
    在这里插入图片描述
    在这里插入图片描述
  • 测试
    在这里插入图片描述
    在这里插入图片描述
  1. 匿名用户删除
    anon_other_write_enable=YES|NO
    在这里插入图片描述
    在这里插入图片描述
  • 测试
    在这里插入图片描述
  1. 匿名用户使用的用户身份和权限修改
    在这里插入图片描述
    在这里插入图片描述
    可以看到westos用户的uid是1001
    在这里插入图片描述
  • 测试
    在这里插入图片描述
  1. 最大上传速率
    anon_max_rate=102400
  • 截取文件,用于测试上传速率
    在这里插入图片描述
  • 不限速情况下上传速率达到很大
    在这里插入图片描述
  • 测试
    在这里插入图片描述
    将最大上传速率改为102400
    在这里插入图片描述
    可以看到上传速率很慢
    在这里插入图片描述
  1. 最大链接数
    max_clients=1 表示最多有1个可以连接
    在这里插入图片描述
    在这里插入图片描述
  • 测试
    在这里插入图片描述
    再重新开启一个shell,进行连接,连接失败
    在这里插入图片描述
  1. 本地用户家目录修改
    local root=/directory
    本地用户登录,默认进入用户的家目录
    在这里插入图片描述
    在这里插入图片描述
  • 测试
    在这里插入图片描述
    修改本地用户家目录
    在这里插入图片描述
    在这里插入图片描述
  1. 本地用户上传文件权限
    local umask=xxx
    在这里插入图片描述
    在这里插入图片描述
  • 测试
    在这里插入图片描述
    14. 限制本地用户登陆 
    (1)vim  /etc/vsftpd/ftpusers   用户永久黑名单
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (2)vim  /etc/vsftpd/user list   用户临时黑名单(userlist deny=YES)
  1. 用户白名单设定
    注意: 修改/etc/vsftpd/vsftpd.conf——>userlist deny=NO时
       /etc/vsftpd/user list 就变成用户白名单(只有存在这个文件里的用户才可以登录)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 限制本地用户浏览根目录
    (1)限制所有用户被锁定在自己的家目录
  • 默认情况下,本地用户可以浏览根目录
    在这里插入图片描述
  • 编辑配置文件
    在这里插入图片描述
    在这里插入图片描述
  • 给本地用户家目录减小权限
    在这里插入图片描述
  • 测试
    在这里插入图片描述
    (2)用户黑名单的建立
  • 编辑配置文件
    在这里插入图片描述
    NO说明没有将所有本地用户锁在自己的家目录,本地用户都可以自由访问根目录
    所以/etc/vsftpd/chroot_list 就变成了黑名单,只有这里边的本地用户不可以浏览目录
    在这里插入图片描述
  • 添加用户到黑名单
    在这里插入图片描述
    在这里插入图片描述
  • 测试
    westos用户(在黑名单中),被限制浏览根目录
    在这里插入图片描述
    student用户可以正常浏览根目录
    在这里插入图片描述
    (3)用户白名单的建立
  • 编辑配置文件
    在这里插入图片描述
    YES说明将所有本地用户锁在自己的家目录,本地用户都不可以自由访问根目录
    所以/etc/vsftpd/chroot_list 就变成了白名单,只有这里边的本地用户可以浏览目录
    在这里插入图片描述
  • 添加用户到白名单
    在这里插入图片描述
    在这里插入图片描述
  • 测试
    westos用户(在白名单中),可以正常访问根目录
    在这里插入图片描述
    student用户不可以正常访问根目录
    在这里插入图片描述

五、虚拟用户的管理

(1) 创建虚拟用户认证

  • 建立虚拟用户的原因: 因为系统用户登陆ftp服务,同时也可以登陆系统,这样很不安全,所以我们要建立ftp虚拟用户,使这些用户只能登陆ftp
  • 建立方式:
  1. vim /etc/vsftpd/loginusers   名字任意
    在这里插入图片描述
    编辑内容:一行用户名一行密码,注意编辑的时候不要有空格出现
    在这里插入图片描述
  2. 加密文件:因为文件是明文的,很不安全,所以我们要对其加密
    在这里插入图片描述
    这里查看文件类型,看到使用的是hash加密
    在这里插入图片描述
  3. 编辑策略文件(验证密码与用户是否一致的文件) 文件名称任意
    在这里插入图片描述
    在这里插入图片描述
    注意:
    required表示用户名认证必须正确,否者直接pass
    db=/etc/vsftpd/loginusers,后面文件名不能是loginusers.db
    如果写成db=/etc/vsftpd/loginusers.db 则实际会将文件识别成loginusers.db.db

    4. 编辑配置文件
    在这里插入图片描述
    指定策略文件到配置文件中
    在这里插入图片描述
    编辑配置文件一定要重启服务,后面就不再赘述截图
    在这里插入图片描述
  • 测试 可以看到虚拟用户创建成功,可以登录
    在这里插入图片描述
    注意:创建虚拟用户后,本地用户就不能正常登陆了,但是仍然可以指定本地用户身份登陆
    (2) 如何指定虚拟用户登录身份
  • 编辑配置文件在这里插入图片描述
    将虚拟用户指定身份设置为westos (这里的westos必须是服务端已经存在的用户)
    在这里插入图片描述
  • 查看westos用户家目录下的东西,如果虚拟用户登录时可以看到以下文件,则证明虚拟用户登录身份修改成功
    在这里插入图片描述
  • 修改权限
    此时登录会有权限过大的报错显示
    在这里插入图片描述
    在这里插入图片描述
  • 测试 ——>成功
    在这里插入图片描述
    (3)虚拟用户家目录的设置
  • 在这三个家目录中分别添加文件(为了验证用户进入的是否是自己的家目录
    在这里插入图片描述
  • 权限加满,方便后续测试
    在这里插入图片描述
  • 编辑配置文件
    在这里插入图片描述
    在这里插入图片描述
    注意:
    (1) $ USER 相当于c语言中的变量,给不同的值,输出不同的值
    (2)user_sub_token=$ USER (将shell中$USER的用法挪到ftp服务中来用)
    在这里插入图片描述
    (4)虚拟账号配置独立设定
  1. 原理: 虚拟用户使用的是匿名用户的参数控制,如果我们想让不同的虚拟用户有不同的权利,就必须给每个虚拟用户设置自己的次配置文件。
  2. 配置过程如下:
  • 建立虚拟用户的次配置目录及次配置文件
    在这里插入图片描述
  • 编辑配置文件
    在这里插入图片描述
    将匿名用户的上传功能注释掉
    在这里插入图片描述在这里插入图片描述
  • 编辑次配置文件,在里面写上允许虚拟用户执行的动作
    在这里插入图片描述
    让虚拟用户可以实现上传功能
    在这里插入图片描述
  • 测试:虚拟用户westos1可以实现上传功能,而westos2不行
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42036824/article/details/83508641