Vsftpd传输文件

FTP(File Transfer Protocol)文件传输协议,默认20端口传输 数据21端口传输ftp 指令,基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件

  • 主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听数据端口(N+1),并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)
  • 被动模式(默认):客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口(N+1),客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据
配置文件作用
/etc/vsftpd/vsftpd.confvsftpd的核心配置文件
/etc/vsftpd/ftpusers指定哪些用户不能访问FTP服务器(黑名单,优先级高)
/etc/vsftpd/user_list指定允许使用vsftpd的用户列表文件(白名单)
/etc/vsftpd/vsftpd_conf_migrate.sh是vsftpd操作的一些变量和设置脚本
/var/ftp/默认情况下匿名用户的根目录

Vsftpd(very secure ftp daemon)安装以及启动

1.安装vsftpd服务端程序,ftp客户端程序
yum -y install epel-release
yum -y install vsftpd ftp

2.创建测试用户并且添加到白名单
useradd user
echo "123@#Abc" | passwd --stdin user
echo user >> /etc/vsftpd/user_list

3.备份配置文件		
cp -a /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak		

4.启动服务
systemctl enable --now vsftpd

5.验证服务
systemctl status vsftpd
ss -lntp | grep vsftpd

Vsftpd服务的主配置文件常用参数以及作用

/etc/vsftpd/vsftpd.conf

1)匿名登录管理
anonymous_enable=NO				#NO为禁用匿名用户;YES为启用匿名用户
anon_root=/var/ftp/pub			#设置匿名用户访问目录
anon_upload_enable=YES			#是否允许匿名用户上传文件,如果要设置为允许,则需要先开启 write_enable,否则无效,此外对应目录还要具有写权限
anon_mkdir_write_enable=YES		#是否允许匿名用户创建新目录


2)限制用户访问目录
chroot_local_user=YES			#所有用户被限制在ftp目录内或用户home目录,不能跨出该目录,除非有例外情况
chroot_list_enable=YES			#例外情况
chroot_list_file=/etc/vsftpd/chroot_list	#跨目录例外情况,白名单
allow_writeable_chroot=YES			#允许写入根路径

3)允许登录用户管理
userlist_enable=YES				#启用userlist
userlist_deny=NO				#NO为允许userlist文件中的用户登录;YES为拒绝,并且user_list文件转为黑名单
userlist_file=/etc/vsftpd/user_list			#允许登录的账号(白名单)

4)配置ftp目录
local_root=/var/ftp				#设置ftp文件主目录,所有用户登录显示该目录,否则显示该用户的家目录

5)被动模式配置
pasv_enable=YES 					#启用服务被动模式
pasv_max_port=24060 				#被动模式数据传输的最大端口号
pasv_min_port=24050					#被动模式数据传输的最小端口号
pasv_address=172.16.1.1				#被动模式返回客户端端口数据包的IP地址

6)配置数据端口
connect_from_port_20=YES			#NO为被动模式,YES为主动模式
ftp_data_port=20000					#指定主动模式的数据传输端口

7)配置下载功能
download_enable=NO					#禁用下载文件

8)全局配置
local_enable=YES					#允许用户登录
write_enable=YES					#允许写操作,上传命令
local_umask=022						#上传文件的权限掩码
xferlog_enable=YES 				 	#启用日志文件,记录到/var/log/xferlog
xferlog_std_format=YES				#启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
tcp_wrapper=YES						#通过/etc/host.allow /etc/host.deny进行IP访问控制


实战配置Vsftpd

Vsftp的三种认证模式:

  1. 匿名开放模式:不安全的认证模式,无须密码验证直接登录到FTP服务器
  2. 本地用户模式:本地的账户密码信息进行认证的模式,相对更加安全,配置较为简单
  3. 虚拟用户模式:单独建立用户数据库文件,虚拟出用来进行密码验证的账户信息,仅供FTP服务程序认证使用。
1. 匿名开放模式

ftp的根目录/var/ftp,出于安全起见,该目录默认不允许设置为777权限,否则ftp无法访问,可以使用以下两种解决方式:
更改目录的所有者:chown -R ftp /var/ftp/pub
变更权限:chmod -R 777 /var/ftp/pub

1.修改配置文件
cat > /etc/vsftpd/vsftpd.conf << EOF
anonymous_enable=YES			#启用匿名用户
anon_root=/var/ftp/pub			#设置匿名用户访问目录
anon_upload_enable=YES			#允许匿名用户上传文件
anon_mkdir_write_enable=YES		#允许匿名用户允许创建目录
anon_other_write_enable=YES		#允许匿名用户有其他写入权(改名,删除,覆盖)
anon_umask=022					#匿名用户所上传文件的权限掩码

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=YES					#vsftpd以独立模式运行并监听IPv4的套接字

pasv_enable=YES				#启动服务为被动模式
pasv_max_port=20010
pasv_min_port=20000

pam_service_name=vsftpd		#设置PAM外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd文件
userlist_enable=YES			#启用user_list文件来控制用户登录
userlist_deny=NO			#设置user_list为白名单
tcp_wrappers=YES			使用tcp_wrappers作为主机访问控制方式
EOF

2.重启服务
systemctl daemon-relado
systemctl restart vsftpd

3.修改权限
chown -R ftp:ftp /var/ftp/pub

4.验证服务
ftp localhost

2. 本地用户模式

默认访问该用户的家目录,默认所有者所属组都是该用户
/etc/vsftpd/user_list/etc/vsftpd/ftpusers限制用户登录FTP服务器
userlist_deny=NOuser_list变成强制白名单(常用)

  • 最安全的认证模式,专门创建一个账户登录FTP传输服务并且不能以SSH方式登录。
  • linux系统中每一个文件都有所有者所属组属性,为避免找不到虚拟用户导致文件权限出现错误。虚拟用户默认登录到有映射关联的本地用户的家目录中,权限也归属于本地用户。
  • PAM(可插拔认证模块)Pluggable Authentication Module 是一种认证机制,通过动态链接库和统一的API把提供的服务和认证方式分开。
  • PAM就是一组安全机制的模块,管理员可轻易调整服务程序的认证方式,不必对应用程序进行修改,采用了分层设计(应用程序层、应用接口层、鉴别模块层)
1.修改配置文件
cat > /etc/vsftpd/vsftpd.conf << EOF
local_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=YES

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
EOF

2.重启服务
systemctl daemon-relado
systemctl restart vsftpd

3.验证服务
ftp localhost

虚拟用户模式(常用)
  1. 创建数据文件
#安装转换工具
yum -y install libdb-utils
#切换相关目录
cd /etc/vsftpd/
#创建用户文件,奇数为账户,偶数为密码
cat  > vuser.list << EOF 
virtual
123Abc
EOF
#使用哈希算法将明文转换成数据库文件
db_load -T -t hash -f vuser.list vuser.db	
#降低数据库文件的权限
chmod 600 vuser.db	 
#删除蛛丝马迹
rm -f vuser.list	 
  1. 创建虚拟FTP用户的账号和目录
useradd -d /var/vsftp -s /sbin/nologin virtual	#创建存储文件的根目录和虚拟用户映射的系统本地用户
chmod -Rf 755 /var/vsftp/	#更改权限
echo "123Abc" | passwd --stdin virtual
  1. 创建支持虚拟用户的PAM认证文件
#新建用于虚拟用户认证的PAM文件
#db=填写账户密码数据库文件的路径,不用写后缀
cat > /etc/pam.d/vsftpd.vu << EOF	
auth	required	pam_userdb.so	db=/etc/vsftpd/vuser
auth	required	pam_userdb.so	db=/etc/vsftpd/vuser
EOF
  1. 给用户赋予不同权限
#创建用户目录
mkdir /etc/vsftpd/vusers_dir 		
cd /etc/vsftpd/vusers_dir 
#创建虚拟用户独立的配置文件				
cat > virtual << EOF
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
  1. 修改配置文件
#修改配置文件
cat > /etc/vsftpd/vsftpd.conf	<< EOF
local_enable=YES				#允许本地用户模式
local_umask=077
guest_enable=YES				#开启虚拟用户模式
guest_username=virtual			#指定虚拟用户账户
pam_service_name=vsftpd.vu		#指定PAM文件
allow_writeable_chroot=YES		#允许对禁锢的FTP根目录写入,不拒绝用户的登录请求
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
connect_from_port_20=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES			#所有用户被限制在ftp目录内或用户home目录,不能跨出该目录,除非有例外情况
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vusers_dir
EOF

FTP命令

1.连接ftp服务
ftp ip或者hostname

2.ftp操作
dir/ls		#显示服务器目录和文件列表
cd			#进入服务器指定目录
lcd			#进入本地客户端指定的目录
type		#查看当前的传输方式
ascii		#设定传输方式为ASCII码方式
binary		#设定传输方式为二进制方式
get/recv	#下载单个文件,get filename [new_filename],不指定新名称则以原名称保存
mget		#下载多个文件,mget filename1 filename2,支持通配符
prompt		#关闭/打开互交提示
put			#上传单个文件,put filename [new_filename],不指定新名称则以原名称保存
bye			#退出ftp会话
pwd			#查看ftp服务器当前工作目录
rename filename new_filename		#重命名ftp服务器上的文件
delete filename						#删除ftp服务器上一个文件
mdelete filename1 filename2			#删除多个文件
mkdir pathname			#在服务器上创建目录
rmdir pathname			#删除服务器上的目录
passive		#主动模式与被动模式切换
help		#显示ftp命令帮助信息
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值