zoukankan      html  css  js  c++  java
  • ftp文件共享服务详解

     ftp

    文件共享服务,文件的上传下载 跨平台,tcp协议 21号(命令端口) 20号(数据端口,主动模式) 默认情况

    ftp服务运行被动模式

    vsftpd:软件 非常安全的
    rpm -qi vsftpd
    vsftpd is a Very Secure FTP daemon. It was written completely from
    scratch.
    主动模式:
    被动模式:
    验证:
    默认是在被动模式下,被动模式和主动模式可以切换

    主动:
    server client
    20 21 n m

    <-------------
    -------------->
    ---------------------------------------->
    <---------------------------------------

    被动:
    server client
    随机端口 21 n m
    3000-3005

    <---------------
    ---------------->
    <--------------------------------------------
    ---------------------------------------------

    客户端工具:
    windows:firefox、ie、fileZilla
    linux:lftp、ftp、sftp

    思路:
    1、关闭防火墙和selinux
    2、配置yum源
    3、软件三步曲(安装|确认是否安装成功|查看软件列表)
    4、了解配置文件
    5、通过需求修改配置文件
    6、测试验证
    步骤:
    1、
    2、
    3、
    rpm -qc vsftpd
    /etc/logrotate.d/vsftpd 日志轮转
    /etc/pam.d/vsftpd 验证
    /etc/vsftpd/ftpusers 用户访问控制列表(黑名单)
    /etc/vsftpd/user_list 用户访问控制列表(可黑可白)
    /etc/vsftpd/vsftpd.conf 主配置文件

    /var/ftp 匿名用户的默认目录
    /var/ftp/pub 匿名用户的扩展目录

    /usr/sbin/vsftpd 二进制命令
    /etc/rc.d/init.d/vsftpd 启动脚本

    4、了解配置文件
    anon:代表匿名用户
    local:代表本地用户
    # cat /etc/vsftpd/vsftpd.conf |grep -v ^#
    anonymous_enable=YES 开启匿名用户
    local_enable=YES 开启本地用户
    write_enable=YES 本地用户可写
    local_umask=022 ——>755 本地用户的默认权限
    dirmessage_enable=YES 开启访问消息
    xferlog_enable=YES 启用日志
    connect_from_port_20=YES 默认开启20号端口(支持主动和被动模式,默认是被动模式)
    xferlog_std_format=YES 日志格式
    listen=YES 独立服务

    pam_service_name=vsftpd 认证模块
    userlist_enable=YES 启用用户列表
    tcp_wrappers=YES 支持tcp_wrappers功能

    5、不修改配置文件
    测试验证
    client:192.168.5.2
    yum -y install lftp ftp
    结果:本地用户可以上传下载文件;匿名用户不可以上传只能下载文件

    demo1:允许匿名用户上传文件、创建目录重命名等

    1、vim /etc/vsftpd/vsftpd.conf
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    2、重启服务
    注意:
    不要把/var/ftp目录的权限修改为777或者o+w,因为会导致报错。
    通常的做法是在/var/ftp目录里创建一个子目录,修改子目录的权限为777就可以,匿名用户上传的文件保存到子目录里就可以。

    2、匿名用户下载其他匿名用户所上传的文件
    vim /etc/vsftpd/vsftpd.conf
    anon_umask=022
    重启服务

    demo2:开启本地用户的消息功能

    useradd user01
    echo “welcome to uplook” >/home/user01/.message

    banner_file=/etc/vsftpd/banner
    vim /etc/vsftpd/banner
    @@@@@@@@@@@@
    @ @
    @ ^ ^ @
    @ _ @

    demo3:将所有本地用户禁锢在自己的家里面

    chroot_local_user=YES 所有用户都禁锢
    需求1:只允许user01用户来回切换,其他用户禁锢
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    echo user01>/etc/vsftpd/chroot_list
    需求2:只禁锢user02用户,其他人都可以切换
    #chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list

    demo4:

    ftp服务自身的用户访问控制
    ftpusers 黑名单
    user_list 可黑可白

    echo user01 >ftpusers
    # ftp 192.168.5.1
    Connected to 192.168.5.1 (192.168.5.1).
    220-@@@@@@@@@@@@
    220-@ @
    220-@ ^ ^ @
    220-@ _ @
    220
    Name (192.168.5.1:root): user01
    331 Please specify the password.
    Password:
    530 Login incorrect. userlist_deny=NO,echo user01>> user_list
    Login failed.
    ftp>

    # ftp 192.168.5.1
    Connected to 192.168.5.1 (192.168.5.1).
    220 (vsFTPd 2.2.2)
    Name (192.168.5.1:root): user01
    530 Permission denied. userlist_deny=YES(default) echo user01>>ftpusers
    Login failed.

    如果ftpusers和user_list文件冲突,拒绝优先。

    demo5:更改匿名用户和本地用户的ftp家目录
    默认:anon的家 /var/ftp
    local的家 /home/$username

    # mkdir /ftp/data -p
    # mkdir /local/data -p
    # vim vsftpd.conf
    anon_root=/ftp/data
    local_root=/local/data

    其他访问控制:
    max_clients:允许多少个链接(最大连接数)默认2000
    max_per_ip:每个IP地址的最大连接数 默认没有限制
    local_max_rate:限制本地用户下载速率,默认没有限制
    tcp_wrappers:访问控制的一个工具,类似防火墙,但是其功能没有防火墙强大;配置简单。
    /etc/hosts.deny
    /etc/hosts.allow

    ./configure --help --enable-libwrap
    rpm

    # ldd /usr/sbin/vsftpd |grep libwrap
    libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f13adcf9000)

    # ldd /usr/sbin/sshd|grep libwrap
    libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f9a0f28e000)
    访问控制机制:先去匹配/etc/hosts.allow,再去匹配/etc/hosts.deny;如果两个文件都没有,全部都允许;如果两个文件都存在hosts.allow优先

    需求:
    vim /etc/hosts.deny
    vsftpd,sshd:all 禁止所有人
    vsftpd:192.168.5.0/255.255.255.0 EXCEPT 192.168.5.254
    vsftpd:all EXCEPT .uplookg.com
    vsftpd:192.168.5.1

    注意:子网掩码不支持/24/8/16这种写法

    练习一:
    搭建一个ftp服务器,要求如下:
    1、匿名用户可以上传下载文件,同时也可以下载其他人所上传的文件,并且所有匿名用户上传的文件的属主都是root,放在/ftp/data目录里。
    mkdir /ftp/data -p
    vim /etc/vsftpd/vsftpd.conf
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_umask=022
    chown_uploads=YES
    chown_username=root
    anon_root=/ftp

    重启服务:service vsftpd restart
    # chmod o+w /ftp/data

    2、创建一个本地用户zhangsan(自己名字),可以访问ftp服务但是不能登录操作系统,并且只能在自己的家里活动。
    useradd zhangsan -s /sbin/nologin
    chroot_local_user=YES 禁锢所有本地用户

    3、zhangsan用户可以上传下载文件,并且所上传的文件都放在/local/data下
    mkdir /local/data -p
    vim vsftpd.conf
    ...
    local_root=/local/data
    4、在你的本地主机/tmp/zhangsan(自己名字)目录下创建5个文件,通过客户端工具以匿名用户身份将整个以你名字命名的目录上传到服务器192.168.5.1上。
    mkdir /tmp/zhangsan
    touch /tmp/zhangsan/file{1..5}

    lftp 192.168.5.1:/> mirror -R /tmp/zhangsan/ data/ 上传本地目录到远端

    5、使用客户端工具(除了浏览器)用本地用户redhat(密码123)下载192.168.5.1上的“2016-04-18”目录到你的本地/tmp/zhangsan(自己名字)里
    lftp redhat@192.168.5.1:~> mirror /ftp/2016-04-18/ /tmp/zhangsan/ 下载远端到本地
    6、不允许192.168.5.2访问你的ftp服务器,但是只允许192.168.5.1访问
    vim /etc/hosts.deny
    vsftpd:192.168.5.2

    vim /etc/hosts.allow
    vsftpd:all EXCEPT 192.168.5.2 不生效,和hosts.deny一起使用

    7、把被动连接的端口范围控制在2000~2050之间
    pasv_enable=YES 可以不写,默认就是被动模式
    pasv_max_port=2050
    pasv_min_port=2000

    练习二:
    将vsftpd服务托管给xinetd服务管理
    # service xinetd status
    xinetd (pid 18628) is running...
    创建子配置文件在/etc/xientd.d/vsftpd
    # cat vsftpd
    # default: off
    # description: The rsync server is a good addition to an ftp server, as it
    # allows crc checksumming etc.
    service ftp
    {
    disable = no
    flags = IPv4
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/vsftpd
    log_on_failure += USERID
    }

    vim /etc/vsftpd/vsftpd.conf
    ...
    linsen=NO

    重启服务xined:
    service xinetd restart

    # netstat -tlnp|grep 21
    tcp 0 0 :::21 :::* LISTEN 18628/xinetd

    测试验证

  • 相关阅读:
    零基础学习接口测试-接口文档
    零基础学习接口测试-HTTP消息结构
    零基础学习接口测试—HTTP协议基础知识
    零基础学习接口测试-接口测试基础知识
    MySQL数据库安装
    软件测试基础-软件测试基本流程
    零基础学习接口测试-HTTPS协议
    软件测试基础-软件测试分类
    BLE5.2 CIS Data Flush Point点SN和NESN变化机制探讨
    使用Jlink给CC2640R2F烧写固件方法
  • 原文地址:https://www.cnblogs.com/yanjieli/p/7468226.html
Copyright © 2011-2022 走看看