================FTP服务:
FTP:(File Transfer Protocol)文件传输协议,是TCP/IP协议组中的协议之一;
架构: C/S client/server
B/S browser/server
链接:
命令链接--------->command 21号端口
数据链接---------> data
链接模式:
主动模式:服务器端从20号端口主动向客户端发出链接请求;
被动模式 : 服务器端在指定范围内的某个端口被动等待客户端发起链接请求;
传输模式:
文本模式: ASCII模式,以文本序列传输数据;
二进制模式:Binary模式,以二进制序列传输数据;
服务概述:
==============搭建vsftpd服务:
服务器端:
1》安装相关软件包:
yum -y install vsftpd
service vsftpd start 开启服务
lsof -i:21 查看相关端口
*****:默认情况下我们使用ftp用户登录,只能下载文件,不能上传文件,所以当我们登录ftp服务器后直接进入ftp用户的家目录/var/ftp;新建本地用户,才能实现上 传和下载文件,上传的文件会在用户的家目录下;
2》新建本地用户,实现上传和下载文件:
3》修改配置文件:/etc/vsftpd/vsftpd.conf
******man 5 vsftpd.conf 命令可以详细查看配置文件中的各项配置意义
4》客户端登录,并上传下载文件:
================匿名用户相关案例:
=================黑白名单:
==========虚拟账户:满足大量账户的访问需求
如果需要访问FTP的用户不多,则可以直接创建系统账户以满足对FTP访问的请求,但当用户量变得越来越庞大时,继续创建更多的系统账户是不明智的,这时就需要为vsftpd创建虚拟账户;但vsftpd虚拟账户的数据需要保存在Berkeley DB 格式的数据文件中,所以需要安装db4-utils工具来创建这样的数据文件:
1》创建虚拟账户数据库:
首先需要创建明文密码文件,明文文件奇数行为用户名,偶数行为密码,然后使用db_load工具将其转换为数据库文件,db_load工具需要通过安装db4-utils软件获得,最后可以通过修改文件权限以增强数据资料的安全性;
2》创建PAM文件,设置基于虚拟账户验证:
Linux一般通过PAM文件设置账户的验证机制,然后通过创建新的PAM文件,使用新的数据文件进行登录验证,PAM文件中的db选项于指定并验证账户和密码的数据库文件,数据库文件无须.db的名称后缀。
3》设置虚拟账户共享目录:
因为所有的虚拟账户最终都需要映射到一个真实的系统账户,所有这里需要添加一个系统账户并设置家目录,可以设置一份测试文件;
useradd -s /sbin/nologin -d /home/ftp virtual
cp /etc/passwd /home/ftp
4》修改主配置文件:
与匿名用户设置差不多,使用guest_enable选项开启虚拟账户功能;
5》为每个用户设置独立的共享路径:
通过在主配置文件中使用user_config_dir选项,设置一个基于账户的配置目录,在该目录下可以创建若干个与账户名称同名的文件,并在文件中为此账户设置独立的配置选项,包括权限与共享路径等设置,这样就可以为每个账户作单独的权限设置等操作,当然如果你还需要对权限,限速,并发量等选项进行设置,可以参考匿名账号的设置选项添加至账号独立的配置文件中;
6》重启服务:
service vsftpd restart
相关测试:
相关命令: mirror 下载文件夹
mirror -R 上传文件夹
wget命令解析: 只能用来下载文件,不能用来下载文件夹,下载的文件默认放在当前目录下;
==================常见问题分析:
1》提示错误代码:530 Login incorrect
说明登录过程中账户验证失败,则可能是因为你使用的是64位操作系统,而pam文件中库文件的调用却使用的是/lib/security/pam_usedb.so,或者是用户名或密码输入有错误;此外,也可能是vsftpd主配置文件中pam_service_name设置的pam文件名称与/etc/pam.d中创建的pam文件名称不一致,导致无法验证成功;
2》提示错误代码:500 OOPS: cannot change directory:/home/ftp/$USER
该提示代表目录不存在或无权限导致的无法切换至目录,也有可能是由于SELinux导致的无法共享账户家目录,默认SELinux不允许共享家目录;
3》使用windows系统访问主动模式的vsftpd服务器时无法访问成功
默认windows会使用被动模式连接FTP服务器,如果需要以主动模式连接服务器,需要修改浏览器的属性,方法是查找Internet选项的高级选项卡,找到使用被动FTP,取消该功能即可;
4》账户登录后无法上传数据:
根据不同的登录类型,检查主配置文件的设置,匿名账号与虚拟账户检查以anon_开头的权限设置,本地账户检查以local_开头的权限设置,并且要确保全局write_enable设置为YES,此外,文件系统目录的权限也需要修改,确保客户端账户有权限访问该目录;
ll -d /var/ftp
5》启动服务时报错:500 OOPS:bad bool value in config file
vsftpd 配置文件设置错误,检查文件;配置文件要求每个设置项占用独立的一行,并且不可以有多于 的空格;
==================日志分析与防火墙问题:
日志:
安全: