欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

运维之道 | FTP - Vsftp 文件传输协议

程序员文章站 2024-01-26 22:54:40
...

前言

文件传输协议( file transfer protocol, FTP ),基于该协议 FTP 客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于 TCP 协议生成一个虚拟的连接,主要用于控FTP 连接信息,同时再生成一个单独 TCP 连接用于 FTP 数据传输。用户可以通过客户端 FTP 服务器端上传、下载、删除文件, FTP 服务器端可以同时提供给多人共享使用。

FTP 服务是 client / server (简称C/S)模式,基于 FTP 协议实现 FTP 文件对外共享及传输的软件称之为 FTP 服务器,客户端程序基于 FTP 协议,则称之为 FTP 客户端,FTP 客户端可以向 FTP 服务器上传、下载文件。


一、Vsftpd 服务器安装配置

1、Vsftpd服务器安装
[aaa@qq.com ~]# yum install -y vsftpd*
2、修改Vsftpd服务配置
[aaa@qq.com ~]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES			///开启匿名用户访问
local_enable=YES				///启用本地系统用户访问
write_enable=YES				///本地系统用户写入权限
local_umask=022					///本地用户创建文件及目录默认权限掩码
dirmessage_enable=YES			///打印目录显示信息,通常用于用户第一次访问目录时信息提示
xferlog_enable=YES				///启用上传/下载日志记录
connect_from_port_20=YES		///使用20端口进行数据传输
xferlog_std_format=YES			///日志文件将根据xferlog的标准格式写入
listen=NO						///Vsftpd不一独立的服务启动,通过Xined服务管理,建议改成YES
listen_ipv6=YES					///启用IPv6监听
pam_service_name=vsftpd			///登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证
userlist_enable=YES				///vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP
tcp_wrappers=YES				///设置Vsftpd与tcp wrapper 结合进行主机的访问控制,vsftpd服务器检查/etc/hosts.allow,allow和/etc/hosts.deny中设置来决定请求的主机是否允许访问该FTP服务器
3、启动Vsftpd服务
[aaa@qq.com ~]# systemctl start vsftpd
4、通过Windows客户端资源管理器访问Vsftpd服务端

运维之道 | FTP - Vsftp 文件传输协议
FTP 主动模式的选择,默认为被动模式,设置为被动模式的方法:

pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100

二、Vsftpd 匿名用户配置

Vsftpd 默认以匿名用户访问,匿名用户默认访问的FTP服务器发布端路径为/va//ftp/pub,匿名用户只有查看权限,无法创建、删除、修改。如需要关闭FTP匿名用户访问,需要修改配置文件/etc/vsftpd/vsftpd.conf,将anonymous_enable=YES修改为anonymous_enable=NO,重启Vsftpd服务即可。

1、修改配置文件

如果允许匿名用户能够上传、下载、删除文件,需在/etc/vsftpd/vsftpd.conf配置文件加入以下代码:

anon_upload_enable=YES 				///允许匿名用户上传文件
anon_mkdir_write_anable=YES			///允许匿名用户创建目录
anon_other_write_enable=YES			///允许匿名用户其他写入权限
2、修改目录权限

由于默认Vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户如果需要上传文件、删除、修改等权限,需要Vsftpd用户对/var/ftp/pub目录有写入权限,使用chown 和 chmod 任意一种命令均可设置权限,具体设置命令如下:

[aaa@qq.com ftp]# chown -R ftp /var/ftp/pub/
[aaa@qq.com ftp]# chmod o+w /var/ftp/pub/
3、通过Windows客户端资源管理器访问Vsftpd服务端

运维之道 | FTP - Vsftp 文件传输协议
重启Vsftpd服务后,通过Windows客户端访问,能够上传文件、删除文件、创建目录等操作。


三、Vsftpd系统用户配置

Vsftpd匿名用户设置完毕,任何人都可以查看FTP服务器端的文件、目录,甚至可以修改、删除文件和目录,如何存放隐私文件在FTP服务器端,并保证文件或者目录专属于拥护者呢?Vsftpd系统用户可以实现该需求

实现Vsftpd系统用户方式验证,只需在Linux系统中创建多个用户即可,创建用户使用useradd指令,同时给用户设置密码,即可通过用户和密码登录FTP,进行文件上传、下载、删除等操作。

1、Linux系统中创建用户,并设置密码
[aaa@qq.com ~]# useradd villian
[aaa@qq.com ~]# useradd zwl
[aaa@qq.com ~]# echo 123456|passwd --stdin villian 
更改用户 villian 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[aaa@qq.com ~]# echo 123456|passwd --stdin zwl
更改用户 zwl 的密码 。
passwd:所有的身份验证令牌已经成功更新。
2、修改vsftpd配置文件
[aaa@qq.com ~]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO				///关闭匿名用户访问
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
3、通过Window资源客户端访问

运维之道 | FTP - Vsftp 文件传输协议


四、Vsftpd虚拟用户配置

Vsftpd基于系统用户访问FTP服务器,系统用户越来越不利管理,而且不利于系统安全,为了能更加安全使用Vsftpd,可以使用Vsftpd虚拟用户方式。
Vsftpd 虚拟用户原理为虚拟用户没有实际的真实系统用户,二是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。
Vsftpd虚拟用户企业案例配置步骤如下:

1、安装Vsftpd虚拟用户需要用到的软件及认证模块
[aaa@qq.com ~]# yum install -y pam* libdb-utils libdb* --skip-broken
2、创建虚拟用户临时文件

创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,按照下方虚拟用户+密码格式填写

[aaa@qq.com ~]# vim /etc/vsftpd/ftpusers.txt

villian01
123456
villian02
123456
3、生成Vsftpd虚拟用户数据库认证文件,并设置权限为700
[aaa@qq.com ~]# db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
[aaa@qq.com ~]# chmod 777 /var/ftp/pub/
4、配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行代码
[aaa@qq.com ~]# vim /etc/pam.d/vsftpd

auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
5、Vsftpd虚拟用户映射系统用户

Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用户虚拟用户映射使用,创建用户命令如下:

[aaa@qq.com ~]# useradd -s /sbin/nologin ftpuser
6、修改配置文件
#global config Vsftpd 2020
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

#config virtual user FTP	
pam_service_name=vsftpd							///虚拟用户启用pam认证						
guest_enable=YES								///启用虚拟用户
guest_username=ftpuser							///映射虚拟用户至系统用户ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf	///设置虚拟用户配置文件所在的目录
virtual_use_local_privs=YES                     ///虚拟用户使用与本地用户相同的权限           
7、创建虚拟用户配置文件主目录

至此,所有虚拟用户共同使用/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录

[aaa@qq.com ~]# mkdir -p /etc/vsftpd/vsftpd_user_conf/
8、分别为虚拟用户villian01、villian02创建配置文件
  • villian01
[aaa@qq.com ~]# vim /etc/vsftpd/vsftpd_user_conf/villian01

local_root=/home/ftpuser/villian01					///villian01虚拟用户配置文件路径
write_enable=YES									///允许登录用户写入权限
anon_world_readable_only=YES						///允许匿名用户下载,然后读取文件
anon_upload_enable=YES								///允许匿名用户上传文件权限,只有在write_enable=YES时该参数才生效
anon_mkdir_write_enable=YES							///允许匿名用户创建目录,只有在write_enable=YES时该参数才生效
anon_other_write_enable=YES							///允许匿名用户其他权限,例如删除、重命名等
  • villian02
[aaa@qq.com ~]# vim /etc/vsftpd/vsftpd_user_conf/villian02

local_root=/home/ftpuser/villian02
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
9、创建虚拟用户各自虚拟目录
[aaa@qq.com ~]# mkdir -p /home/ftpuser/{villian01,villian02}
[aaa@qq.com ~]# chown -R ftpuser:ftpuser /home/ftpuser/
10、重启Vsftpd服务,通过Windows客户端资源管理器登录Vsftpd服务端
[aaa@qq.com ~]# systemctl restart vsftpd
相关标签: Linux 系统服务