目录
(2)将用户禁锢在自己的家目录 chroot_local_user=YES
3.修改配置文件/etc/vsftpd/vsftpd.conf
(2)使用第三方客户端进行登录(支持服务器类型:FTP over TLS)
学习是一场马拉松,耐心和坚持是成功的关键。愿你能保持初心,好好学习,天天向上,努力成为最优秀的你。
一、介绍
1.概述
FTP(File Transfer Protocol,文件传输协议)是TCP/IP协议族中应用层的协议之一。是一种基于TCP的协议,采用客户/服务器模式。通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作。
2.FTP的传输模式
控制端口:控制连接在两主机间传送控制命令,如用户身份、口令、改变目录命令等。
数据端口:数据连接只用于数据传输。
PORT 主动模式
原理如下图:
PASV 被动模式
原理如下图:
3.FTP服务的作用
FTP服务是一种提供共享文件的服务器,它的主要作用有以下几点:
二、搭建FTP服务器
FTP服务端配置
1.安装vsftpd文件服务
2.启动服务
3.防火墙配置
4.FTP服务相关文件说明
FTP客户端配置
1.安装FTP客户端工具 lftp
2.访问FTP服务器
Linux系统访问FTP服务器
(1)客户端工具 lftp
lftp 服务端IP地址
(2)wget 工具
wget ftp://服务器IP/文件名 # 下载文件 wget -m ftp://服务器IP/目录名 # 下载目录
Windows系统访问FTP服务器
(1)浏览器访问
(2)资源管理器访问
三、FTP服务配置文件
1.配置匿名用户
登录账号:ftp和anonymous
登录密码:空
工作目录:/var/ftp
默认权限:允许下载,不允许上传。
(1)修改配置文件
vim /etc/vsftpd/vsftpd.conf
每次修改完配置文件后都需要重启服务
(2)创建上传目录
(3)客户端进行文件上传
(4)客户端进行目录上传
2.配置系统用户
登录账号:/etc/passwd文件的系统用户
登录密码:/etc/shadow文件的用户密码
工作目录:用户家目录
默认权限:drwx — —
将原有内容删除,复制以下内容
不删除原文,只添加以下内容即可
local_enable=YES # 是否允许本地系统用户访问 local_umask=022 #本地用户所上传文件的权限掩码 Chroot_local_user=YES # 禁锢用户在自己家目录 allow_writeable_chroot=YES # 允许系统用户目录有写入权限 local_max_rate=0 # 限制最大传输建率(字节/秒) 0为无限制
(1)创建FTP服务专用用户
-s:创建的用户不能登录系统
(2)将用户禁锢在自己的家目录 chroot_local_user=YES
在vsftpd配置文件中,默认允许系统用户随意切换目录,这个行为是很危险的,需要禁止。
修改配置文件/etc/vsftpd/vsftpd.conf,添加 chroot_local_user=YES 限制系统用户在自己家目录
配置完将用户禁锢在主目录的指令后,再使用普通用户进行登录会出现以下报错:
原因:
解决办法:
(3)允许指定系统用户可以切换目录
再创建chroot_list文件
验证
(4)白名单
配置文件中添加
添加用户进白名单
验证
(5)黑名单 /etc/vsftpd/ftpusers
添加进此文件中的用户都禁止登录FTP,立即生效,无需重启服务(权限高于白名单)
验证
3.配置虚拟用户
(1)建立FTP虚拟用户的用户数据库文件
(2)将虚拟用户文件转换为DB数据库格式文件
-T:允许应用程序能够将文本文件转译载入进数据库文件;
-t:指定转译成什么数据库类型;
-f:包含用户名和密码的文本文件;
修改数据库文件的权限,保证其安全性
(3)创建FTP虚拟用户的映射用户
由于虚拟用户不是系统用户,没有自己的家目录,所以需要创建一个系统用户,用它的家目录给虚拟用户当做工作目录(家目录);
(4)建立支持虚拟用户的PAM认证文件,添加虚拟用户支持
编辑复制的文件vsftpd.pam(清空所有内容,复制以下两行)
在vsftpd.conf配置文件中修改、添加以下内容
(5)创建虚拟用户的配置文件
创建虚拟用户配置文件的目录
创建虚拟用户配置文件(虚拟用户的配置指令与匿名用户的配置指令是相同的)
先把主配置文件vsftpd.conf中匿名用户的所有配置指令注释掉
修改虚拟用户配置文件
注意:请给映射用户家目录添加 o+r 权限,让虚拟用户拥有读取权限;
(6)客户端进行验证
4.常用的配置指令
listen=YES #是否以独立运行的方式监听服务
listen_address=192.168.10.112 #设置监听FTP服务的IP地址
listen_port=21 #设置监听FTP服务的端口号
write_enable=YES #是否启动写入权限(上传、删除文件)
download_enable=YES #是否允许下载文件
dirmessage_enable=YES #用户切换目录显示.message文件
xferlog_enable=YES # 启用日志文件,记录到/var/log/xferlog
xferlog_std_format=YES # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
connect_from _port_20=YES # 允许服务器主动模式 (从20端口建立数据连接)
pasv_enabTe=YES # 允许服务器被动模式
pasv_max_port=24600 # 设置被动模式服务器的最大端口号
pasv_min_port=24500 # 设置黄动模式服务的最小端口
pam_service_name=vsftpd # 用户认证的PAM文件
userlist_enable=YES # 是否启用user_list列表文件
userlist_deny=YES # 是否禁用user_list中的用户
max_cIients=0 #限制并发客户端连接数
max_per_ip=0 # 限制同一IP地址的井发连接数
tcp_wrappers=YES #是否启用tcp_wrappers主机访问控制
chown_username=root #表示匿名用户上传的文件的拥有人是root,默认关闭
ascii_upload_enable=YES # 表示是否允许用户可以上传一个二进制文件,默认不允许
ascii_download_enable=YES #代表是否允许用户下载个一个二进制文件,默认不允许
nopriv_user=vsftpd #设置支撑vsftpd服务的宿主用户为手动建立的vsftpd用户
async_abor_enable=YES # 设定支持异步传输功能
ftpd_banner=welcome to Awei FTP servers # 设定vsftpd的登录标语
guest_enable=YES # 设置启用虚拟用户功能
guest_username=ftpuser # 指定虚拟用户的宿主用户
virtual_use_local_privs=YES # 设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf # 设定虚拟用户个人vsftp的配置文件存放路径
5.PASV 被动模式
在 /etc/vsftpd/vsftpd.conf 配置文件中添加以下内容
验证
客户端下载文件,进行数据传输
服务端查看端口
四、vsftpd加密传输
1.抓取vsftpd传输内容
因为vsftpd是明文传输,所以使用抓包工具可以抓取vsftpd传输的内容
使用tcpdump抓包工具
-i:指定需要监听的网卡;
-n: 对回显的信息以数字方式显式,例如地址回显为192.168.157.1,否则显式为主机名;
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名;
-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出;
-vv:产生更详细的输出;
(1)在同网段主机进行抓包
(2)客户端登录FTP操作
2.openssl+vsftpd加密传输
(1)检查是否安装了 openssl
(2)查看vsftpd是否支持openssl
ldd命令用于打印程序或者库文件所依赖的共享库列表。
(3)生成加密信息的私钥、证书、签字证书
后缀:
- .key:服务器私钥;
- .csr:服务器证书;
- .crt:签字证书;
请注意:服务器所有私钥、证书和签字证书都是存储在/etc/ssl/certs/
a.生成服务器私钥
-genrsa:用于生成私钥;
-out:输出文件;
b.通过私钥生成服务器的证书
req:生成证书请求;
-new:新的请求;
-key:用于签名待生成的请求证书的私钥文件;
-out:待输出的文件;
c.生成签字证书
-req:签字证书请求;
-days:签字证书生效时间;
-sha256:签字证书加密方式;
-in:输入文件;
-out:输出文件;
d.把/etc/ssl/certs/目录的权限设置为500,这是必须要做的操作!
请注意:在实验环境中可以通过命令行生成CA证书,但在生产环境中必须向CA证书厂商申请注册(否则浏览器不识别)。