FTP笔记

Vsftp服务

一、Vsftp概述

​ FTP是File Transfer Protocol(文件传输协议),用于互联网上的文件的上传和下载;使用FTP传输时,具有一定危险程度,因为数据在互联网上面是没有受到保护的明文传输方式

​ Vsftp是在类unix系统上使用的FTP服务器软件,全称是Very Security FTP,为了解决ftp传输安全性问题的

​ 优点:文件传输、可跨平台

​ 缺点:只能实现文件传输,无法实现文件系统挂载;无法直接修改文件

软件名:vsftpd

服务名:vsftpd

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

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

1.安全特性

1.vsftp程序的运行者一般是普通用户,降低了权限

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

3.ftp所需要的命令都被整合到vsftp中,不需要系统额外提供命令

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

2.连接类型

控制连接(持续连接) —> TCP21(命令) —> 用户收发FTP命令

数据连接(按需连接) —> TCP20(数据) —> 用于上传下载数据

3.工作模式

主动模式

客户端首先和服务器的21端口建立连接,用来发送命令

客户端需要接收数据的时候向服务器发送port命令,port命令包含了客户端用什么端口接收数据

在传输的时候,服务器端通过自己的20端口连接至客户端的指定端口发送数据

ftp server必须和客户端建立一个新的连接用来传输数据

被动模式

客户端首先和服务器的21端口建立连接,用来发送命令

建立连接后,客户端发送pasv命令

服务器收到pasv命令后,打开一个临时端口(大于1023小于65535)并通知客户端连接服务器的临时端口

然后ftp服务器将通过这个端口传输数据

4.传输模式

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

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

linux红帽发行版中默认才用Binary模式

5.登录验证方式

匿名用户验证

用户账号名称:ftp或anonymous

用户密码:无

工作目录:/var/ftp

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

本地用户验证

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

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

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

默认权限:最大权限(drwx------)

虚拟用户验证

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

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

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

二、服务搭建

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/秒)

实现可以上传

anon_upload_enable=YES
在/var/ftp/下创建上传目录
修改上传目录的权限和所有者,让匿名用户有写入权限

实现创建目录和文件其他操作

anon_mkdir_write_enable=YES				#允许创建目录
anon_other_write_enable=YES				#开放其他写入权(删除,覆盖,重命名)

用户加入某个文件夹时,弹出相应说明

在对应目录下创建.message文件,并写入相应内容
dirmessage_enable=YES
message_file=.message
同一次登录仅提示一次

2.本地用户验证实验

本地用户权限控制

local_enable=YES						#是否启用本地系统用户
local_umask=022							#本地用户所上传文件的权限掩码
local_root=/var/ftp						#设置本地用户的ftp根目录
chroot_local_user=YES					#是否将用户禁锢在主目录
chroot_list_file=/etc/vsftpd/chroot_list#允许名单中的用户随意切换目录
local_max_rate=0						#限制最大传输速率
ftpd_banner=Weclome to ftp				#用户登陆时显示欢迎信息
userlist_enable=YES & userlist_deny=YES	#禁止/etc/vsftpd/user_list文件中的用户登录
userlist_enable=YES & userlist_deny=NO	#仅允许/etc/vsftpd/user_list文件中的用户登录
配置文件:ftpusers
#禁止/etc/vsftpd/ftpusers文件中出现的用户登录ftp,权限比user_list更高,即时生效

实验流程

1.服务端需要创建用户并设置密码(不需要登录linux,仅用来登录ftp)

useradd -r -s /sbin/nologin	username

2.将所有用户禁锢在自己的加目录下

chroot_local_user=YES

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

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list#允许名单中的用户随意切换目录

4.配置文件:/etc/vsftpd/ftpusers

所有写入此文件内的用户名不允许登录

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

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=35000

3.虚拟用户验证实验

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

vim /etc/vsftpd/vsftpd.user			#奇数行为用户,偶数行为密码
testuser
123.com

db_load -T -t hash -f /etc/vsftpd/vsftpd.user vsftpd.db
chmod 600 /etc/vsftpd/vsftpd.user	

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

useradd -d /var/ftproot	-s /sbin/nologin virtual

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

cp -a /etc/pam.d/vsftpd	/etc/pam.d/vsftpd.pam	#使用模板生成自己的认证配置文件,方便一会调用
vim /etc/pam.d/vsftpd.pam
auth	required	pam_userdb.so	db=/etc/vsftpd/vsftpd
account	required	pam_userdb.so	db=/etc/vsftpd/vsftpd

4.在vsftpd.conf文件中添加支持配置

pam_service_name=vsftpd.pam
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/dir

5.为虚拟用户建立独立的配置文件

vim testuser
anon_upload_enable=YES					#允许上传文件
anon_mkdir_write_enable=YES				#允许创建目录
anon_other_write_enable=YES				#开放其他写入权(删除,覆盖,重命名)

4.Openssl+vsftpd加密验证方式

ssl原理

密钥:解密加密的数据包,*.key

证书:提供加密所需的功能(加密类型,加密长度),*.csr

签字后的证书:*.crt(有一定有效期,有加密类型,有一定有效期限)

1.当客户端要发送数据包时,服务器要求客户端下载签字后的证书文件

2.客户端使用证书将要发送的数据包加密,然后进行传输

3.服务器接收到客户端的加密数据包后,拿着密钥文件进行解密,得到明文

搭建

1.查看是否安装了openssl

rpm	-q	openssl

2.查看vsftpd是否支持openssl

ldd	/usr/sbin/vsftpd  |  grep libssl

3.生成加密信息的密钥和证书文件

cd	/etc/ssl/certs/
openssl	genrsa -out vsftpd.key 1024					#建立私钥
openssl	req -new -key vsftpd.key -out vsftpd.csr	#生成csr文件
openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt

#注意1:生成密钥后,将/etc/ssl/certs的权限修改为500;
#注意2:生产环境中必须要在https证书厂商注册(否则浏览器不识别)

4.修改ftp主配置文件

ssl_enable=YES							#启用ssl认证
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
allow_anon_ssl=YES						#允许匿名用户(虚拟用户)
force_anon_logins_ssl=YES				#匿名登录和传输时强制使用ssl
force_anon_data_ssl=YES					
force_local_logins_ssl=YES				#本地登录和传输时强制使用ssl
force_local_data_ssl=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt	#rsa证书文件
rsa_private_key_file=/etc/ssl/certs/vsftpd.key
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值