• 网络服务—VSFTP


    VSFTP连接类型

    控制连接(持续连接)-->  TCP21(命令信道)--> 用户收发FTP命令

     数据连接(按需连接)-->TCP20(数据信道)-->  用于上传下载数据

    工作模式

    Port模式

    FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。

    Passive模式

    建立控制通道和Standard模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。

    注意:很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口

    而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

    安装vsftp

    [root@localhost ~]# yum -y install vsftpd

    [root@localhost ~]# yum -y install ftp      #安装ftp命令

    匿名用户验证:

                       a.      用户账号名称:ftp或anonymous

                       b.      用户账号密码:空或任意字符

                       c.      服务器目录:/var/ftp

                       d.      权限:可下载不可上传,上传权限由两部分组成(主配置文件和文件系统)

                       e.      匿名权限控制:

                                anonymous_enable=YES             启用匿名访问

                                anon_umask=022                         匿名用户所上传文件的权限掩码

                                anon_root=/var/ftp                      匿名用户的FTP根目录

                                anon_upload_enable=YES           允许上传文件

                                anon_mkdir_write_enable=YES   允许创建目录

                                anon_other_write_enable=YES   开放其他写入权(删除、覆盖、重命名)

                                anon_max_rate=0                         限制最大传输速率

                          特点:配置简单,所有登录者使用相同的用户登录

    本地用户验证

    a.      用户账号名称:本地用户(/etc/passwd)

                       b.      用户账号密码:用户密码(/etc/shadow)

                       c.      工作目录为:登录用户的宿主目录

                       d.      权限:最大权限(drwx------)

                       e.      本地用户权限控制:

                                local_enable=YES                是否启用本地系统用户

                                local_umask=022                 本地用户所上传文件的权限掩码

                                local_root=/var/ftp             设置本地用户的FTP根目录

                                chroot_local_user=YES       是否将用户禁锢在主目录

                                local_max_rate=0                限制最大传输速率

            dirmessage_enable=YES    打印目录显示信息,通常用于用户第一次访问目录时,信息提示。

            xferlog_enable=YES      启用上传/下载日志记录。

            connect_from_port_20=YES    使用20端口进行数据传输。

            xferlog_std_format=YES   日志文件将根据xferlog的标准格式写入。   

                                ftpd_banner=Welcome to blah FTP service          用户登录时显示的欢迎信息

                                banner_file=/目录                弹出一个说明,可以做哪些操作

                                userlist_enable=YES & userlist_deny=YES

            listen=YES    vsftpd不以独立的服务启动,通过xinetd服务管理,建改成YES

            listen_ipv6=YES    启用ipv6监听。

            pam_service_name=vsftpd    登录ftp服务器,依据/etc/pas.d/vsftpd中内容进行认证。
            userlist_enable=YES       vsftpd.user_list和ftpusers配置文件里用户禁止访问ftp
            tcp_wrappers=YES        设置vsftpd与tcp wrapper结合进行主机的访问控制。vsftpd服务器检查站/etc/hosts.allow和/etc/hosts.deny中的设置来决定请求连接的主机是否允许访问该FTP服务器。

                                禁止/etc/vsftpd/user_list文件中出现的用户名登录FTP

                                userlist_enable=YES & userlist_deny=NO

                                仅允许/etc/vsftpd/user_list文件中出现的用户名登录FTP

                                ftpusers

                                禁止/etc/vsftpd/ftpusers文件中出现的用户名登录FTP,权限比user_list更高,即时生效

                       f.       特点:配置相对复杂,可以设置严格的权限,有安全隐患

    主动模式改为被动模式

        pasv_enable=YES

        pasv_min_port=60000

        pasv_max_port=60100

     虚拟用户验证实验

    [root@localhost ~]# vi /etc/vsftpd/vsftpd.user

    zhangsan
    123456
    lisi
    123456

    [root@localhost ~]# cd /etc/vsftpd/

    [root@localhost vsftpd]# db_load -T -t hash -f vsftpd.user vsftpd.db

     [root@localhost vsftpd]# chmod 600 vsftpd.db

    [root@localhost vsftpd]# useradd  -d  /var/ftproot  -s  /sbin/nologin  virtual

    [root@localhost vsftpd]# cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam

    [root@localhost vsftpd]# vi /etc/pam.d/vsftpd.pam

    #%PAM-1.0
    auth required pam_userdb.so db=/etc/vsftpd/vsftpd
    account required pam_userdb.so db=/etc/vsftpd/vsftpd

    [root@localhost ~]# useradd -s /sbin/nologin ftpuser

    [root@localhost ~]# vi /etc/vsftpd/vsftpd.conf  

    pam_service_name=vsftpd.pam

    guest_enable=YES
    guest_username=ftpuser
    user_config_dir=/etc/vsftpd/dir

     [root@localhost ~]# mkdir /etc/vsftpd/dir

     分别为虚拟用户zhangsan和lisi创建配置文件

    允许上传文件

    [root@localhost vsftpd]# vi /etc/vsftpd/dir/zhagnsan

    anon_upload_enable=YES

    允许创建目录

    [root@localhost vsftpd]# vi /etc/vsftpd/dir/lisi

    anon_mkdir_write_enable=YES

  • 相关阅读:
    CENTOS安装部署zabbix
    分解XML方法
    Git使用摘要
    POJ 1274 The Perfect Stall 水二分匹配
    [leetcode]Pascal's Triangle II
    swift学习笔记(六)析关闭过程和使用分配给属性的默认值
    Qt学习一门:直接使用QT具
    mybatis13 resultMap
    mybatis12 Usermapper.xml
    mybatis11 sqlMapConfig.xml文件说明
  • 原文地址:https://www.cnblogs.com/liujunjun/p/11835444.html
Copyright © 2020-2023  润新知