网络服务—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

 

 

 

 

 

 

 

 

 

 

posted @ 2019-11-11 15:37  星火撩原  阅读(111)  评论(0编辑  收藏  举报