• ftp协议及vsftpd的基本应用


    1、ftp协议及vsftpd的基本应用
       

    vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

    vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

         

           文件共享服务:
                     工作在应用层:ftp(file transfer protocol)
                              应用层协议:tcp, 
                     工作在内核:nfs
                     跨平台:samba
               ftp工作在221号端口,传输数据:
                      命令连接:文件管理类命令,始终在线的连接
                      数据连接:数据传输,按需创建及关闭连接
       
                主动连接:由服务器创建连接
                        命令连接:
                                client用随机端口发起连接请求到server 21,client会把使用端口告诉服务器端 
                        数据连接:
                                 server用20号端口连接客户端发起端口+1或+2连接客户端
                 被动连接:由客户端创建连接
                         命令连接:
                                   client用随机端口连接server21号端口,并告诉客户端请求数据会用哪个随机端口。
                         数据连接:
                                    clinent用随机+1端口连接服务端已告知的随机端口。
                  ftp server:wu-ftpd、proftpd、puerftp、vsftpd、servu
                  ftp client:ftp、lftp、wget、filezilla、gftp、flashfxp、cuteftp
                   响应码:
                           1xx:信息
                           2xx:成功类状态
                           3xx:需要进一步提供补充类信息
                           4xx:客户端错误信息
                           5xx:服务端错误信息
                  

    220表示链接成功的状态码,

    331表示输入用户名后需要进一步补充信息即密码(密码为空)

    230表示登陆成功

    227表示被动模式

    (192,168,108,160,104,145)表示在被动模式下服务器端要打开一个随机端口和客户端链接,监听在192.168.108.160地址上的104*256+145的随机端口上

    226表示目录显示成功

       

                 用户认证:
                      虚拟用户:仅用于访问某特定服务中的资源
                            nsswitch:network server switch:名称解析框架
                                  配置文件:/etc/nsswitch.conf
                                  模块:/lib64/libnss*,/usr/lib64/libnss
                            pam:pluggable authentication module
                                   配置文件:/etc/pam.conf,/etc/pam.d/*
                                   模块:/lib64/security/
                      支持系统用户:
                      支持匿名用户:

    centos自带的是vsftp

    yum -y install vsftpd
    rpm -ql vsftpd
    用户认证配置文件 /etc/pam.d/vsftpd
    启动服务脚本:/etc/rc.d/init.d/vsftpd
    日志滚动:/etc/logrotate.d/vsftpd
    配置文件目录:/etc/vsftpd

    主配置文件:/etc/vsftpd/vsftpd.conf

    主应用程序:/usr/sbin/vsftpd
    匿名用户共享资源位置:/var/ftp,匿名用户:yum install finger                    
    系统用户登录ftp访问资源位置是用户家目录
    虚拟用户通过ftp访问资源的位置映射为系统用户家目录   

    客户端安装

          yum install ftp或者在浏览其中输入ftp://192.168.146.138
              vim /etc/vsftpd/vsftpd.conf 
                匿名用户配置:      
                   是否支持匿名用户登录:anonymous_enable=YES 
                   是否支持匿名用户创建目录:anon_mkdir_write_enable=YES

                  是否支持匿名用户上传: #anon_upload_enable=YES

                         是否支持匿名用户删除目录:anon_ohter_write_enable=YES
                 

    系统用户配置:
                是否支持本地用户:local_enable=YES
                系统用户写权限:write_enable=YES
                禁锢系统用户只能在自己家目录 :#chroot_local_user=YES         
                禁锢指定用户在其家目录中:#chroot_list_enable=YES、chroot_list_file=/etc/vsftpd/chroot_list                                

     是否支持匿名用户上传: #anon_upload_enable=YES

    在没有开启#anon_upload_enable=YES之前是不支持匿名用户上传的,首先应在/etc/vsftpd/vsftpd.conf 开启这一功能

    frp>lcd /etc 是切换上传目录

    开启匿名用户上传之后,再次上传还是不行,因为/var/ftp都是root权限

    # ls -ld /var/ftp

    # ps aux | grep ftp但是vsftpd程序是以普通用户ftp运行的

    因此可以在/var/ftp目录下创建一个目录,并添加额外权限

    切换到远程主机(另一个IP地址的主机)

    禁锢指定用户在其家目录中:#chroot_list_enable=YES、chroot_list_file=/etc/vsftpd/chroot_list 

    编辑/etc/vsftpd/chroot_list 这个文件后只添加了centos,因此fedora可以看到家目录,而centos不能看到家目录

    2、vsftpd的高级应用
         

    vim /etc/vsftpd/vsftpd.conf        

     

    所有以#开头,后面跟了空格再跟字符的纯粹是注释行

    以#开头,后面直接跟字符的,比如第3行,是可以启用的选项

    直接顶头写的,比如第二行是已经启用的

    比如第1行,顶头有空格的,又启用的属于语法错误

                             

    系统用户配置:    

                   1、在ftp任何目录下创建.message文件,当用户进入该目录时显示.message中内容  dirmessage_enable=YES
                   2、是否启用传输日志:xferlog_enable=YES     
                   3、指定日志文件位置:#xferlog_file=/var/log/xferlog
                   4、修改上传用户属主:#chown_uploads=YES
                   5、指定修改上传用户:#chown_username=whoever      
                   6、设定用户超时时长:#idle_session_timeout=600
                   7、数据连接超时时长:#data_connection_timeout=120         
                   8、登录ftp时显示的信息:#ftpd_banner=Welcome to blah FTP service.
                   9、配置文件在:/etc/pam.d/vsftpd -->   pam_service_name=vsftpd   
                        vsftpd使用pam完成用户认证,启用到的pam配置文件

    pam_service_name=vsftpd  主要功能是:指明在/etc/pam.d/目录下,

    用哪个文件完成基于pam对vsftpd进行用户认证

       这一项启用后,在/etc/pam.d/vsftpd中

    auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

    如果在/etc/vsftpd/ftpusers文件中添加用户的名称,则禁止登陆。

    例如我在这个文件中假如centos

               

    10、 (是否启用用户登录列表文件,默认配置文件/etc/vsftpd/user_list(手动创建):userlist_enable=YES

            是否启用/etc/vsftpd/user_list列表文件:userlist_deny=yes|no )          

    # vim /etc/vsftpd/vsftpd.conf 

    添加user_list_deny=YES此时user_list是黑名单,

    如果user_list_deny=NO就是白名单,只有定义在/etc/vsftpd/user_list文件中的用户才能登陆

    # vim user_list  添加centos,再次登陆时直接拒绝

                                  
    链接限制               

                 11、tcp_wrappers=YES        
                   最大并发连接数(无论多少个IP):max_clients
                   每个IP可同时发起的并发请求数:max_per_ip
                   

    传输速率:

    匿名用户的最大传输速率,单位是“字节/秒”:anon_max_rate

    本地用户最大的传输速率:local_max_rate

    1、在/var/ftp/upload目录下创建一个.message文件,添加内容:

    1 hello guest
    2 how are you?

    在另一个主机访问这个目录:

    虚拟用户配置:
            所有虚拟用户会被统一映射为一个指定系统账号,访问共享位置为此账号家目录。

            各虚拟用户被赋予不同的访问权限;

    通过参数进行指定虚拟用户账号的存储方式:

    1、文件:编辑文件:

            奇数行为用户名,

            偶数行为密码。此文件需要被编译为hash格式:

    2、关系型数据库中的表:

    即时查询数据库完成用户认证:

    mysql库

    pam要依赖于pam_mysql

    #yum install pam_mysql
           
     
                                                               

    lftp:lftp -u username ip
           
     -c:支持断点续传

            axel  下载很快

    lftpget   wget  curl

    ftp协议是明文

  • 相关阅读:
    JMeter使用BeanShell断言
    Django启动时找不到mysqlclient处理 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient?
    Yapi本地搭建及错误解决
    Selenium设置页面超时时间-快速终止页面加载
    Vue全套精品课笔记
    剑指offer 不用加减乘除做加法
    C++标准库函数
    剑指offer 左旋转字符串
    剑指offer 翻转单词顺序列
    剑指offer 扑克牌顺子
  • 原文地址:https://www.cnblogs.com/hanshanxiaoheshang/p/9248320.html
Copyright © 2020-2023  润新知