• ftp服务的部署及优化



    一、实验环境的配置及ftp的介绍

    实验环境的配置:
    两台主机之间能通信,并且服务端必须关闭selinux
    只要客户端网络没有问题,出现功能错误都是服务端的问题
    ftp的介绍:
    互联网最老牌的文件传输协议
    网站发布比较少用,企业内部比较常用

    二、vsftpd服务

    2.1vsftd服务的基本信息

    vsftd服务的基本信息
    服务名称:vsftpd.service
    配置目录:/etc/vsftpd
    主配置文件:/etc/vsftpd/vsftpd.conf
    默认发布目录:/var/ftp
    报错信息:
    550程序本身拒绝
    553文件系统权限限制
    500权限过大
    530认证失败

    2.2vsftpd服务的安装与启用

    服务端安装vsftp这款软件

    dnf install vsftpd -y
    systemctl enable --now vsftpd
    firewall-cmd --permanent --add-service=ftp
    firewall-cmd --reload
    
    • 1
    • 2
    • 3
    • 4

    客户端安装lftp

    dnf install lftp -y
    lftp 172.25.254.100(服务器ip) 匿名用户登录
    ls 显示的是530报错
    lftp 172.25.254.100 -u westos 用的是服务器的用户westos
    Password:输入密码后
    ls就能看到westos用户家目录里面的所有文件了
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这个时候ftp已经启动了,但是它目前只能本地用户登录,客户端登录不了
    默认情况下ftp是不允许匿名用户登录

    允许匿名用户登录

    rpm-qc vsftpd 查询它的主配置文件
    vim /etc/vsftpd/vsftpd.conf
    systemctl restart vsftpd
    
    • 1
    • 2
    • 3

    原先是匿名用户不能登录改成YES
    在这里插入图片描述

    lftp 172.25.254.100
    ls 可以看到文件了,匿名用户默认登录位置是/var/ftp/这个目录(默认发布目录)
    
    • 1
    • 2
    lftp 172.25.254.100(服务器ip) 匿名用户登录
    
    • 1

    这个时候你如果写的时候,你用的是ftp自带的系统用户身份ftp,这个身份在安装vsftp的时候自动建立
    你在/var/ftp/底下建立文件,删掉该文件

    lftp 172.25.254.100(服务器ip) 匿名用户登录
    ls就能看见刚才建立的文件,看不见该文件了
    
    • 1
    • 2

    三、ftp匿名访问控制

    man 5 vsftpd.conf 查看所有功能具体参数
    
    • 1

    3.1匿名用户默认发布目录的指定

    服务端

    mkdir -p /mnt/yan
    vim /etc/vsftpd/vsftpd.conf
    systemctl restart vsftpd
    
    • 1
    • 2
    • 3

    在主配置文件下空白处写

    anon_root=/mnt
    
    • 1
    lftp 172.25.254.100(服务器ip) 匿名用户登录
    ls
    可以看见底下yan文件
    quit退出登录
    
    • 1
    • 2
    • 3
    • 4

    3.2匿名用户上传功能的设定

    客户端上传某个文件到ftp服务器

    lftp 172.25.254.100(服务器ip) 匿名用户登录
    cd pub
    put /mnt/yan
    报错550,没有权限
    
    • 1
    • 2
    • 3
    • 4

    服务端开启它的上传功能,该功能默认是关闭的

    vim /etc/vsftpd/vsftpd.conf
    systemctl restart vsftpd
    
    • 1
    • 2

    在这里插入图片描述
    客户端,因为pub目录对于其它用户没有写权限

    lftp 172.25.254.100(服务器ip) 匿名用户登录
    cd pub
    put /mnt/yan
    报错553
    
    • 1
    • 2
    • 3
    • 4

    服务端不能修改发布目录/var/ftp权限,如果修改过大777,客户端访问直接后ls,直接报错500
    所以修改的发布目录里面的子目录

    chmod 775 /var/ftp/pub/
    chgrp ftp /var/ftp/pub/
    
    • 1
    • 2

    这个时候客户端上传就能上传成功

    lftp 172.25.254.100(服务器ip) 匿名用户登录
    cd pub
    put /mnt/yan
    
    • 1
    • 2
    • 3

    3.3匿名用户建立与删除目录的设定

    默认情况下匿名用户不能自建目录,会报错550

    vim /etc/vsftpd/vsftpd.conf
    systemctl restart vsftpd
    
    • 1
    • 2

    开启该功能
    在这里插入图片描述

    同理服务器ftp修改主配置文件,开启删除功能
    在这里插入图片描述

    anon_other_write_enable=YES
    
    • 1
    rm -r 删掉
    
    • 1

    3.3匿名用户下载目录里文件功能

    ftp服务器修改主配置文件,默认情况下,只有匿名有读权利的文件
    在这里插入图片描述

    anon_world_readable_only=NO
    
    • 1
    get filename 就能下载出来,下载在你在那个目录下进入的ftp你就下载在那个目录里面了
    
    • 1

    3.4匿名用户上传文件后文件的权限

    默认情况下是600 -rw-------
    修改主配置文件

    anon-umask=022 保留权限只有02权限
    
    • 1

    777-022=755
    755-111(文件)=644
    所以上传文件后文件的权限为-rw-r–r–
    所以建立文件是755 drwxr-xr-x

    3.4匿名用户上传文件的身份和指定连接ftp服务器最大个数

    用户上传文件的身份的更改
    上传文件默认是ftp身份,我这块显示文件是1 40 50

    id ftp查到的就是14 50
    
    • 1

    更改上传身份,修改主配置文件,在主配置文件的52和53行
    将whoever改成你的用户,查询你的用户grep bash /etc/passwd

    chown_uploads=YES
    chown_username=whoever
    
    • 1
    • 2

    指定连接ftp服务器最大个数
    避免ddos攻击,和压力过大(正常防止压力过大用集群)
    修改主配置文件,找个空行写max_clients=3只允许最大连接为3个

    3.5最大上传速率

    dd if=/dev/zero of=/mnt/yan bs=1M count=1000
    lftp 172.25.254.100
    put /mnt/yan 可以看出每s百M速度
    
    • 1
    • 2
    • 3

    修改主配置文件,找个空行

    anon_max_rate=102400 限制速度是100kb/s
    
    • 1

    四、本地用户的访问

    4.1控制本地用户能否登陆和上传文件的权限

    控制本地用户能否登陆
    修改主配置文件,大概在17行

    local_enable=YES 你改成NO,本地用户就登陆不了
    lftp 172.25.254.100 -u westos 就登陆530报错了
    
    • 1
    • 2

    本地用户上传文件的权限
    本地用户上传的权限默认是644 -rw-r–r–
    修改主配置文件,25行

    local_umask=077 改成
    
    • 1

    这样文件权限是600,目录权限是700
    -rw------ drwx------

    4.2本地用户默认发布目录的指定和写权利的控制

    默认本地用户登录是在自己的家目录里面
    修改主配置文件,找个空行写

    local_root=你指定的目录
    
    • 1

    本地用户写(上传,删除)权利的控制
    修改主配置文件,21行,这个关闭后本地用户和匿名用户都写不了

    write_enable=YES 改成NO
    
    • 1

    4.3本地用户登录限制和浏览限制

    本地用户登录限制
    默认情况下,本地有的用户都能用
    cd /etc/vsftpd 底下有ftpusers和user_list 这两个默认情况下是黑名单(名字出现在这两个文件任意一个,都不能访问ftp服务器)
    即改即生效,修改该文件ftpusers和user_list其中一个,里面加入westos就相当于westos用户登录不了

    但是默认用户不能登录的情况下(在主配置文件找个空行写入)userlist_deny=NO,只有指定名单user_list下的用户可以登录(白名单)
    默认情况下userlist_deny=YES
    在主配置文件134行
    userlist_enable=YES表示userlist名单功能时开启状态

    本地用户浏览限制
    你本地用户登录以后除了可以浏览自己的家目录还浏览我服务器的/(任何的任何目录),这样不安全
    修改主配置文件,在108行修改成YES,默认情况#(相当于NO)所有用户都能浏览/

    chroot_local_user=YES 
    
    • 1

    这个时候ftp安全性加强了,这个时候用户在自己家目录可写的权利会影响登录,所以
    在服务端,去掉本地用户的写权限

    chmod u-w /home/*
    
    • 1

    指定部分用户可以浏览/
    在主配置文件111行

    chroot_list_file=/etc/vsftpd/chroot_list列表里面的人不能访问/
    
    • 1

    如果想把chroot_list_file改成白名单,需要修改主配置文件108行NO变YES

    chroot_local_user=YES
    
    • 1

    五、虚拟用户的认证部署

    5.1认证程序与认证文件

    现在的用户都是真实在服务器上面存在的用户,一般系统用户权利大,能登录ftp也可以登录其他服务,所以需要匿名用户,只能用于ftp认证,在系统中不存在
    在这里插入图片描述

    5.2认证文件的创建与加密

    认证名单的制作:在/etc/vsftpd

    vim ftpauth
    user1 
    123
    user2 
    123
    user3 
    123
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    对认证名单加密:

    db_load -T -t hash -f ftpauth ftpauth.db
    
    • 1

    5.3认证程序介绍

    rpm -ql vsftpd 在安装的时候系统生成
    里面有个文件 /etc/pam.d/vsftpd 认证策略
    whatis pam
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    vim /etc/pam.d/vsftpd
    account 是账号读取账号的时候会读取password-auth文件
    auth 是认证,读取认证的时候也会读取password-auth这个文件
    /etc/vsftpd/ftpusers 一直都是黑名单是因为它始终都是deny状态
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    vim /etc/pam.d/password-auth
    
    • 1

    auth 用途(密码认证) required功能(必须通过,否则拒绝) pam_faildelay.so delay=2000000使用的程序插件

    在这里插入图片描述

    find / -name pam_userdb.so
    /usr/lib64/security/pam_userdb.so 系统的认证插件,可以直接调用
    
    • 1
    • 2

    5.3认证策略(程序)的创立

    输入账号,用pam_userdb.so程序看db=/etc/vsftpd/ftpauth文件对比,对比成功通行,不成功就拒绝
    输入密码,用pam_userdb.so程序看db=/etc/vsftpd/ftpauth文件对比,对比成功通行,不成功就拒绝

    vim /etc/pam.d/ftpauth
    account  required   pam_userdb.so db=/etc/vsftpd/ftpauth(看这个文件,后面会自动加.so后缀)
    auth     required   pam_userdb.so db=/etc/vsftpd/ftpauth
    
    • 1
    • 2
    • 3

    如果是db=/etc/vsftpd/ftpauth.so 会自动变成db=/etc/vsftpd/ftpauth.so.so

    5.4认证程序添加到ftp服务中

    修改主配置文件133行
    修改原先参数

    pam_service_name=vsftpd 原先的
    pam_service_name=ftpauth
    添加
    guest_enable=YES 虚拟用户功能开启
    guest_username=ftp 虚拟用户所使用到的真实服务器用户身份是ftp
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在服务器上面

    id user1 user2 user3都没有
    
    • 1

    在客户端

    lftp 172.25.254.100 -u user1 可以使用
    同理user2 user3 密码都是123
    
    • 1
    • 2

    这三个用户只有ftp服务承认,其它服务不承认

    六、虚拟用户的配置优化

    6.1虚拟用户默认发布目录的指定

    这三个用户进去都是在pub里面

    lftp 172.25.254.100 -u user1 可以使用
    同理user2 user3 密码都是123
    
    • 1
    • 2

    让三个用户家目录独立

    mkdir -p /ftphome/user{1..3}/pub
    touch /ftphome/user1/user1file
    touch /ftphome/user2/user2file
    touch /ftphome/user3/user3file
    
    • 1
    • 2
    • 3
    • 4

    修改主配置文件,找个空白处写

    local_root=/ftphome/$USER
    user_sub_token=$USER 变量声明参数
    
    • 1
    • 2

    6.2虚拟用户的上传功能

    所有用户上传
    服务器,由于之前主配置文件设定参数可以上传,所有修改下权限即可,但是无法指定某些用户可以上传某些不可以

    chmod 775 /ftphome/user{1..3}/pub
    chgrp ftp /ftphome/user{1..3}/pub
    
    • 1
    • 2
    man 5 vsftpd.conf
    查/conf
    
    • 1
    • 2

    添加主配置文件参数

    user_config_dir=/etc/vsftpd/confdir 在此目录中与用户名字相同的文件为用户配置文件
    mkdir /etc/vsftpd/confdir
    
    • 1
    • 2

    此时user1 2 3都不能上传

    此时user1可以上传user2 3不能上传

    vim /etc/vsftpd/confdir/user1
    anon_upload_enable=YES 允许上传
    
    • 1
    • 2
  • 相关阅读:
    Unity3D之简单溶解特效制作
    “威胁”员工全来上班后,马斯克“尴尬”了:车没地停、工位不够坐、Wi-Fi 还太差
    【测试工具】UnixBench 测试
    6种MySQL数据库平滑扩容方案剖析
    Dubbo API 笔记——Dubbo协议&最佳实践
    微信小程序中如何使用fontawesome6的免费图标
    nn.LayerNorm解释
    中国传统节日春节网页HTML代码 春节大学生网页设计制作成品下载 学生网页课程设计期末作业下载 DW春节节日网页作业代码下载
    --JVM调优参数设置 --jvm垃圾回收器
    I2C驱动框架分析(2):I2C框架源码分析
  • 原文地址:https://blog.csdn.net/westos_yanzheng/article/details/125465500