网络服务–VSFTP

网络服务–VSFTPFTP 是 FileTransfer 文件传输协议 的英文简称 用于 Internet 上的文件的双向传输

大家好,欢迎来到IT知识分享网。

目录

一、概述

二、VSFTP 连接类型

三、工作模式

1.Port模式(主动)

2.Passive模式(被动)

四、VSFTP传输模式

五、VSFTP软件信息

六、登录验证方式

1.匿名用户验证:

2.本地用户验证:

3.虚拟(virtual)用户验证:

 七、VSFTP实验部署

1.匿名用户验证实验

2.本地用户验证实验

3.虚拟用户验证实验

4.openssl+vsftpd 加密验证方式


一、概述

       FTP 是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上的文件的双向传输。使用 FTP 来传输时,是具有一定程度的危险性, 因为数据在因特网上面是完全没有受到保护的明文传输方式!

       VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP,从名称定义上基本可以看出,这是为了解决ftp传输安全性问题的。

安全特性:

(1)vsftp程序的运行者一般是普通用户,降低了相对应进程的权限,提高了安全性

(2)任何需要执行较高权限的指令都需要上层程序许可

(3)ftp所需要使用的绝大多数命令都被整合到了vsftp中,基本不需要系统额外提供命令

(4)拥有chroot功能,可以改变用户的根目录,限制用户只能在自己的家目录

二、VSFTP 连接类型

    控制连接(持续连接)  —>   TCP 21(命令信道)     —>   用户收发FTP命令

    数据连接(按需连接)   —>   TCP 20(数据信道)     —>   用于上传下载数据

    数据连接(按需连接)   —>   TCP 随机(数据信道)   —>   用于上传下载数据

三、工作模式

       FTP的两种模式主动模式所使用的端口是20和21端口,而被动模式中,默认开放的是大于1023的端口和21端口,相比而言被动模式更加安全,但是如果只是简单的文件共享,不考虑安全性则可以直接选用主动模式。其次被动模式还有一个非常麻烦的地方,由于需要开放大量的端口,在使用防火墙进行端口过滤及保护时就异常麻烦,一般使用被动模式时都会选定一个端口范围作为被动模式所需端口。

       注意:VSFTP默认两种模式都支持,最终决定使用哪种模式很多时候取决于所使用的的FTP客户端工具,当然也可以在服务器端的配置文件禁止掉某一种模式,强行使用另外一种。

1.Port模式(主动)

网络服务--VSFTP

Port模式

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

2.Passive模式(被动)

网络服务--VSFTP

Passive模式

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

注意:由于VSFTP的被动模式是随机端口进行数据传输,所以在设置防火墙时需要刻意放行。

四、VSFTP传输模式

Binary模式:不对数据进行任何处理,适合进行可执行文件、压缩文件、图片等

ASCII模式:进行文本传输时,自动适应目标操作系统的结束符,如回车符等

Linux的红帽发行版中VSFTP默认采用的是Binary模式,这样能保证绝大多数文件传输后能正常使用

切换方式:在ftp>提示符下输入ascii即转换到ASCII方式,输入bin,即转换到Binary方式。

五、VSFTP软件信息

服务端软件名:vsftpd

客户端软件名:ftp

服务名:vsftpd

端口号:20、21、指定范围内随机端口

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

服务端启动:systemctl start vsftpd

Windows端登录:ftp://192.168.222.83

六、登录验证方式

1.匿名用户验证:

       用户账号名称:ftp或anonymous

       用户账号密码:无密码

       工作目录:/var/ftp

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

       服务端:创建zhangsan用户并修改密码。

       客户端:文件管理器使用zhangsan用户身份登录

网络服务--VSFTP

2.本地用户验证:

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

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

       工作目录:登录用户的宿主目录

       权限:最大权限(drwx——)

3.虚拟(virtual)用户验证:

       (1)创建虚拟用户用来代替本地用户,减少本地用户曝光率

       (2)使用本地用户作为虚拟用户的映射用户,为虚拟用户提供工作目录和权限控制

       (3)能够设置严格的权限(为每一个用户生成单独的配置文件)

 七、VSFTP实验部署

1.匿名用户验证实验

匿名权限控制:

       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                                  #限制最大传输速率(0为不限速,单位:bytes/秒)

实验需求与流程: 注意:在客户端登录后,默认情况下是可以下载的,但不能上传 规划 (1)实现可以上传 a. anon_upload_enable=YES b. 在/var/ftp/下创建上传目录 c. 修改上传目录的权限或所有者,让匿名用户有写入权限 (2)实现创建目录和文件其他操作 anon_mkdir_write_enable=YES #允许创建目录 anon_other_write_enable=YES #删除文件、文件改名、文件覆盖 (3)用户进入某个文件夹时,弹出相应的说明 a. 在对应目录下创建 .message 文件,并写入相应内容 b. 确认dirmessage_enable=YES是否启用 c. 尝试却换目录查看效果(同一次登录仅提示一次) (4)实现上传的文件可下载 默认情况下开放上传权限后,上传的文件是无法被下载的,因为文件的其他人位置没有r权限 设置anon_umask=022,可以让上传的文件其他人位置拥有r权限,然后才能被其他人下载 

 总结:

        对于匿名登录用户的上传需求分析

        1.需要对上传的目录具有w写权限,才能在对应目录内创建文件

        2.需要软件的上传选项开启上传功能才能上传文件

        #两个开关需要同时开启,匿名用户才能成功上传文件!!!!

网络服务--VSFTP

2.本地用户验证实验

本地用户权限控制:

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

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

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

    allow_writeable_chroot=YES  #忽略安全性警告{centos7中需要添加此选项}

    local_max_rate=0               #限制最大传输速率

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

    userlist_enable=YES & userlist_deny=YES

    #禁止/etc/vsftpd/user_list文件中出现的用户名登录FTP(黑名单)

    userlist_enable=YES & userlist_deny=NO

    #仅允许/etc/vsftpd/user_list文件中出现的用户名登录FTP(白名单)

    配置文件:ftpusers

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

实验需求与流程:

(1)服务端需要创建用户并设置密码(所创建的用户,不需要登录操作系统,仅用来登录VSFTP)

useradd -s /sbin/nologin username  #创建后再C7版本里面无法登录,还需要更改配置文件 ftp 192.168.222.76 #发现使用新创建的用户无法登录ftp客户端,原因如下:

网络服务--VSFTP网络服务--VSFTP

C7比C6少/sbin/nologin文件

在7版本中,vim /etc/shells(打开shells配置文件),加入/sbin/nologin

网络服务--VSFTP

或者使用 echo /sbin/nologin >> /etc/shells

网络服务--VSFTP

(2)将所有用户禁锢在自己的家目录下

注:默认没有禁锢用户时,客户端登录后可以随意切换目录,查看文件所在位置和文件名 chroot_local_user=YES #开启用户家目录限制,限制所有用户不能随便切换目录 #还需要给家目录加入可读可执行权限,才可以看到目录下的信息。

网络服务--VSFTP

(3)将部分用户禁锢在自己的家目录下

#开启白名单功能,允许白名单中的用户随意切换目录 chroot_list_enable=YES #白名单文件所在位置(需自己创建) chroot_list_file=/etc/vsftpd/chroot_list 

网络服务--VSFTP

(4)配置文件:/etc/vsftpd/ftpusers

所有写入此文件内的用户名都不允许登录ftp,立刻生效。

(5)修改被动模式数据传输使用端口

pasv_enable=YES pasv_min_port=30000 pasv_max_port=35000

3.虚拟用户验证实验

网络服务--VSFTP

网络服务--VSFTP

#虚拟用户一旦开启,匿名用户和本地登录就会失效,二者不能同时存在。 

(1)建立FTP的虚拟用户的用户数据库文件(在/etc/vsftpd)  

#用数据库对登录用户身份进行验证 mkdir ./vir_user cd ./vir_user vim ./user 注:该文件名可以随便定义,文件内容格式:奇数行用户,偶数行密码 

 网络服务--VSFTP

db_load -T -t hash -f user user.db #将用户密码的存放文本转化为数据库类型,并使用hash加密

网络服务--VSFTP

网络服务--VSFTP

chmod 600 user.db #修改文件权限为600,保证其安全性

(2)创建FTP虚拟用户的映射用户,并指定其用户家目录 

useradd -d /var/vir_home -s /sbin/nologin virtual #创建virtual 用户作为ftp的虚拟用户的映射用户 

网络服务--VSFTP

(3)建立支持虚拟用户的PAM认证文件,添加虚拟用户支持

cp –a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak #使用模板生成自己的认证配置文件,方便一会调用 编辑文件vsftpd (清空原来内容,添加下列两行) auth required pam_userdb.so db=/etc/vsftpd/vir_user/user account required pam_userdb.so db=/etc/vsftpd/vir_user/user 

网络服务--VSFTP

在/etc/vsftpd.conf文件中添加支持配置 修改: pam_service_name=vsftpd #指定要调用的文件名。 添加: allow_writeable_chroot=YES #C7里忽略警告信息 guest_enable=YES #是否开启服务 guest_username=virtual #虚拟用户的映射用户 user_config_dir=/etc/vsftpd/vir_user/

网络服务--VSFTP

(4)为虚拟用户建立独立的配置文件,启动服务并测试 

cd /etc/vsftpd/vir_user ls vim ./zhangsan #在张三文件夹中写入想要赋予的权限

网络服务--VSFTP

注:做虚拟用户配置文件设置时,将主配置文件中自定义的匿名用户相关设置注释掉。

网络服务--VSFTP

anonymous_enable=YES  #虚拟用户一开,本地和匿名用户就无法登录了。

用户可以上传: anon_upload_enable=YES #允许上传文件 用户可以创建目录或文件: anon_mkdir_write_enable=YES #允许创建目录 用户可以修改文件名: anon_upload_enable=YES #允许上传文件(为了覆盖开启的) anon_other_write_enable=YES #允许重名和删除文件、覆盖 local_root=/var/vir_home/zhangsan #固定在家目录下 用户可以下载: anon_umask=022 #添加此选项可以使上传的文件可以被其他人下载 注:给映射用户的家目录 设置 o+r 让虚拟用户有读权限。

网络服务--VSFTP

给虚拟用户在/var/vir_home/目录下,创建家目录时,要考虑到virtual用户是否有权限进行调用。

网络服务--VSFTP

#如果以后在增加虚拟用户的话,在/etc/vsftpd/vir_user/user文件中直接添加用户和密码

然后删除旧的加密后的db文件,在生成新的,更改权限,就可以了。

网络服务--VSFTP

4.openssl+vsftpd 加密验证方式

(1)查看是否安装了openssl

rpm -q openssl

(2)查看vsftpd 是否支持openssl

#检查某软件是否可以用简易版防火墙防护,也用的ldd。 ldd /usr/sbin/vsftpd  |  grep libssl

(3)生成加密信息的秘钥和证书文件

位置:/etc/vsftpd/ cd /etc/vsftpd/   mkdir ssl     cd ssl #建立服务器私钥,生成RSA密钥 openssl genrsa -out vsftpd.key 1024 #需要依次输入国家,地区,城市,组织,组织单位,Email等信息。 #最重要的是有一个common name,可以写你的名字或者域名。 #如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。 #生成的csr文件交给CA签名后形成服务端自己的证书 openssl req -new -key vsftpd.key -out vsftpd.csr

网络服务--VSFTP

#使用CA服务器签发证书,设置证书的有效期等信息 openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt 注意1:生成完秘钥和证书文件后,将本目录{/etc/ssl/certs/}的权限修改为500. 注意2:在实验环境中可以用命令生成测试,在生产环境中必须要在https证书厂商注册(否则浏览器不识别) 

(4)修改主配置文件/etc/vsftpd/vsftpd.conf

#以下为SSL加密相关配置 #启用ssl认证 ssl_enable=YES #开启tlsv1、sslv2、sslv3都支持 ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES #允许匿名用户{虚拟用户} allow_anon_ssl=YES #匿名登录和传输时强制使用ssl(强制要求用户登录和传输时加密) force_anon_logins_ssl=YES force_anon_data_ssl=YES #本地登录和传输时强制使用ssl(虚拟用户不用加这两项) force_local_logins_ssl=YES force_local_data_ssl=YES #rsa格式的证书(证书文件指向位置) rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt #rsa格式的密钥 rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key 注:密钥文件要在配置文件中单独声明(写入配置文件时,注释要单独一行,否则会报错) 

网络服务--VSFTP

(5)重启服务

service vsftpd restart

 (6)测试(使用第三方客户端连接)

FileZilla-FTP(第三方客户端工具)

连接测试时选择:

         服务器类型:显式 TLS/SSL

         登录类型:    一般或匿名

#进行抓包 tcpdump -i ens33 -nn -X -vv tcp port 21 and ip host 192.168.222.76

在第三方工具开始登录,信息如下:

网络服务--VSFTP

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114281.html

(0)
上一篇 2025-12-09 17:26
下一篇 2025-12-09 17:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信