VSFTPD文件共享服务器搭建

VSFTPD文件共享服务器搭建

文件传输协议:

用户Internet上的控制文件的双向传输的协议

也是一个应用程序,不同操作系统有不同的FTP应用程序,用户经常遇到的概念“上传”“下载”

支持FTP协议的服务器都叫做FTP服务器

FTP服务的工作模式

FTP主动模式

FTP客户端-----------------------------数据传输----------------------------FTP服务器端-----TCP:21端口/20端口随机端口
1.命令连接:(1)登录FTPF服务器(随机端口1、SIP、CIP、用户名、密码)    ----->   服务端21端口        
	      (2)登录FTPF服务器(随机端口1) <---   验证成功(欢迎信息)
	         随机端口:大于1024小于65535
2.数据连接:(3)连接FTP服务器(随机端口2),PORT命令、读取数据(随机端口2)<----服务端20端口
		客户端防火墙会拦截:端口不确定,需要开放的端口太多,不安全
防火墙默认策略:防进不防出
优缺点:服务器安全性比较高,客户端连接可能会被客户端防火墙拦截导致数据传输失败
默认开启:但是默认使用被动模式
	    公司内网使用

FTP被动模式

FTP客户端---------------------------------数据传输-------------------------------FTP服务器端-------TCP:21端口/随机端口
1.命令连接:(1)登录FTPF服务器(随机端口1、SIP、CIP、用户名、密码)--->              服务端21端口
		  (2)登录FTPF服务器(随机端口1) <---  验证成功(欢迎信息)
	      (3)PASV命令                ---->                                     服务端21端口
	         随机端口:大于1024小于65535
2.数据连接:(1)接受服务器开放的随机端口   <-------        服务端开启的随机端口信息              服务器端21端口
	      (2)客户端随机端口2连接到随机端口获取数据,防火墙放行一个随机端口  ----->   服务器随机端口(会限制随机端口范围)
优缺点:服务器安全性较低,客户端连接不会出问题	
默认开启:默认启用被动模式(适合公网)
		在ftp端执行   passive   off  关闭被动模式,启用主动模式

传输方式

ASCII模式:将换行符转换成本机的回车字符

BINARY模式:不会对数据进行任何处理

工作过程中不需要做任何操作,是自由转换的

服务器安装vsftpd服务

yum install -y vsftpd  #安装服务
systemctl start vsftpd  #启动服务

解析配置文件

vim /etc/vsftpd/vsftpd.conf
安全项:
	connect_timeout=60  #主动模式连接超时时间(未正式连接),占用连接资源
	accept_timeout=60  #被动模式连接超时时间(未正式连接),占用连接资源
	data_connection_timeout=300  #数据传输后,超时断开时间
	idle_session_timeout=300  #输入账号密码后,连接超时时间
	ftpd_banner=xxx 和 banner_file=/path/file  #欢迎提示信息
	tcp_wrappers=YES  #控制IP是否放行
常见的全局配置:
	listen_address=192.168.1.2  #设置监听的 IP 地址(监听的是本地的网卡)
	listen_port=21  #设置监听 FTP 服务的端口号
	write_enable=YES  #是否启用写入权限
	download_enable=YES   #是否允许下载文件
	max_clients=0   #限制并发客户端连接数
	max_per_ip=0   #限制同一 IP 的并发连接数
匿名用户配置:
	anonymous_enable=YES  #启用匿名访问
	anon_upload_enable=YES  #允匿名用户上传文件
	anon_mkdir_write_enable=YES  #允许匿名用户创建目录
	anon_max_rate=0  #限制最大传输速率(字节/秒)
	aon_umask=022  #匿名用户所上传文件的权限掩码,不管本地文件是什么权限,上传到服务器变成644权限
	anon_root=/var/ftp  #匿名用户 FTP 的根目录
	anon_other_write_enable=YES  #允许其它写入权
本地用户配置:
	local_enable=YES  #启用本地访问
	local_umask=022  #本地用户所上传文件的权限掩码
	local_root=/var/ftp  #指定本地用户的 FTP 根目录
	chroot_local_user=YES  #是否将用户禁锢在主目录
	write_enable=YES  #是否开启写权限
	local_max_rate=0  #限制最大传输速率(字节/秒)
被动模式端口限制:
	pasv_enable=YES #开启被动模式
	pasv_min_port=10221  #开启端口最小值
	pasv_max_port=10231  #开启端口最大值

两种权限决定FTP客户端能否上传和下载

文件或目录权限

#目录权限:
		r--读权限--查看目录内容
	     w--写权限--不能增删改
	     x--执行权限--进入目录权限
#文件权限:
		r--读权限--查看文件内容--能够下载
	    w--写权限--更改文件内容
	    x--执行权限

VSFTPD程序权限

#给予可用权限:
		   默认允许下载
		   其他需要修改配置文件(/etc/vsftpd/vsftpd.com)

重要文件介绍

/etc/vsftpd/ftpuser  #禁止用户登录的黑名单文件,在文件内的用户名都不允许登录FTP,在密码层级进行拒接登录,修改此文件需要重启服务

/etc/vsftpd/user_list  #默认禁止用户登录的黑名单文件在文件内的用户名都不允许登录FTP,在输入用户名的时候就拒绝。在vsftpd配置文件中添加userlist_deny=NO,只有在/etc/vsftpd/user_list这个文件中的用户登录,否则无法登录,这个文件中有描述
 
/etc/pam.d/vsftpd  #用户认证登录的文件,匿名用户/本地用户

工作模式

匿名模式

匿名认证:ftp,anonymous,说白了就是不做任何认证

用户名ftp或者anonymous,密码:因为没有设置密码,所以随便输入回车即可

默认目录

/var/ftp:需要下载或上传默认都是在这个目录下操作,默认不允许上传,其他目录无法查看,如果/var/ftp目录的权限是777,则ftp服务停止正常工作

上传:put 文件名,需要有上传权限才行(修改配置文件)

下载:get 文件名

客户端

安装ftp服务

yum install -y ftp #安装客户端ftp
[root@localhost ~]# ftp 192.168.4.115   #客户端登录
Connected to 192.168.4.115 (192.168.4.115).
220 (vsFTPd 2.2.2)
Name (192.168.4.115:root): ftp   
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

本地用户模式

在VSFTPD服务器上创建本地用户,在客户端通过本地用户登录服务器

账号、名称、密码等信息,保存在本地的passwd和shadow中

shell类型:/sbin/nologin 不允许通过用户登录服务器

默认目录

用户的家目录

默认可以上传下载,默认可以创建及更高目录信息

禁锢宿主的目录:chroot_local_user=YES–不允许去其他目录下

注意:需要修改家目录权限

创建本地用户
useradd laow -s /sbin/nologin #创建用户
passwd laow  #设置本地用户密码
#本地用户的设置在配置文件设置
客户端
[root@yanzixuan ~]# ftp 10.0.0.138  #连接服务器地址
Connected to 10.0.0.138 (10.0.0.138).
220 (vsFTPd 3.0.2)
Name (10.0.0.138:root): laow  #连接服务器的本地用户
331 Please specify the password.
Password:                     #输入本地用户的密码
230 Login successful.

虚拟用户模式

将创建的用户映射到一个虚拟用户中登录,不同的用户拥有不同的权限

下载权限默认存在

1.创建保存虚拟用户的账号和密码的文件
touch  /etc/vsftpd/user.list  #创建密码本,第一行用户名称,第二行密码,依次类推
vim /etc/vsftpd/user.list 
aa  #用户名
111  #密码
ss  #用户名
222  #密码
2.将账户密码文件转换成系统所识别的数据库类型文件
cd /etc/vsftpd
db_load -T -t hash -f /etc/vsftpd/user.list /etc/vsftpd/user.db #文件转换,固定格式
3.修改上边两个文件权限为600,防止别人查看
chmod  600  /etc/vsftpd/user.db  #修改权限
chmod  600  /etc/vsftpd/user.list  #修改权限
4.添加虚拟用户映射的用户
useradd -d /var/ftproot -s /sbin/nologin virtual  #创建虚拟用户virtual,家目录/var/ftproot,不允许登录
chmod 755 /var/ftproot #修改权限
5.设置认证

/etc/pam.d/vsftpd–系统默认认证,认证的是本地用户和匿名用户

cp -a  /etc/pam.d/vsftpd /etc/pam.d/vsftpd.a #生成新的认证文件
> /etc/pam.d/vsftpd.a  #清空生成的文件
vim /etc/pam.d/vsftpd.a  #添加下边的内容
#%PAM-1.0                   
auth      required     pam_userdb.so   db=/etc/vsftpd/user  #这个user文件其实就是上边的user.db文件
account   required     pam_userdb.so   db=/etc/vsftpd/user

6.在vsftpd主配置文件中

vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd  #将vsftpd修改为vsftpd.a,和上边生成的认证文件相对应
userlist_enable=YES
tcp_wrappers=YES
#添加下边三行
guest_enable=YES  #运行来宾用户访问
guest_username=virtual  #设置来宾用户为virtual
user_config_dir=/etc/vsftpd/conf #用户权限控制目录
7.创建用户的控制权限目录及文件
mkdir /etc/vsftpd/conf #创建用户谦虚控制目录,和配置文件相对应
cd /etc/vsftpd/conf 
touch aa ss  #创建用户权限文件,和上边的用户相对应
echo "anon_upload_enable=YES" >> aa  #用户aa允许上传文件
echo "anon_mkdir_write_enable=YES" >> ss  #用户ss允许创建目录,那个用户需要什么权限,就在那个用户的权限文件将权限写入

常见的权限
	anon_upload_enable=YES  #允许上传
	anon_mkdir_write_enable=YES  #允许用户创建目录
	anon_other_write_enable=YES  #允许其它写入权限
客户端登录
[root@yanzixuan ~]# ftp 10.0.0.138  #登录vsftp服务器
Connected to 10.0.0.138 (10.0.0.138).
220 (vsFTPd 3.0.2)
Name (10.0.0.138:root): aa   #登录虚拟用户
331 Please specify the password.
Password:                    #输入虚拟用户密码
230 Login successful.        #登录成功
Remote system type is UNIX.
Using binary mode to transfer files.

排错

在客户端登录是出现500 OOPS: vsftpd: refusing to run with writable root inside chroot(),这个错误

chroot_local_user=YES  #是否将用户禁锢在主目录,取消注释就好
allow_writeable_chroot=YES   #添加

匿名用户和本地用户加密传输设置

frp客户端不支持加密访问

可以使用FileZilla软件加密传输

1.安装机密算法程序

yum  install  -y  openssl  openssl-devel #安装加密算法

2.创建证书

openssl  req  -new  -x509  -nodes  -out  vsftpd.pem  -keyout  vsftpd.pem  #创建证书
cp -a vsftpd.pem /etc/ssl/certs/  #复制到/etc/ssl/certs目录下
chmod  400  /etc/ssl/certs/vsftpd.pem  #,为了保密性,不能让别人随意查看

3.修改配置文件

vim /etc/vsftpd/vsftpd.conf  #配置文件后追加如下内容
ssl_enable=YES  #开启加密认证
allow_anon_ssl=YES  #运行匿名用户加密认证
force_local_data_ssl=YES  #本地数据传输强制加密
force_local_logins_ssl=YES  #本地用户登录强制加密
force_anon_data_ssl=YES  #匿名用户数据传输强制加密
force_anon_logins_ssl=YES  #匿名用户登录强制加密,有没有无所谓
ssl_tlsv1=YES  #开启sslv1版本认证
ssl_sslv2=NO  #关闭sslv2认证,需要更高级证书
ssl_sslv3=NO  #关闭sslv3认证,需要更高级证书
rsa_cert_file=/etc/ssl/certs/vsftpd.pem  #证书路径
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值