FTP服务介绍
FTP服务即文件传输合同(filetransferprotocol,FTP),基于该合同FTP顾客端与服务端可以实现共享文件、上传文件、下载文件。FTP基于TCP合同生成一个虚拟的联接,主要用于控制FTP联接信息,同时再生成一个单独的TCP联接用于FTP数据传输。用户可以通过顾客端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。
它可依照实际须要设置各用户的使用权限,同时还具有跨平台的特点,即在UNIX、Linux和Windows等操作系统中都可实现FTP顾客端和服务器,互相之间可跨平台进行文件的传输。为此,FTP服务是网路中时常采用的资源共享方法之一。
FTP用于Internet上的控制文件的单向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有那些应用程序都遵循同一种合同以传输文件。
在FTP的使用当中,用户常常遇见两个概念:“下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过顾客机程序向(从)远程主机上传(下载)文件。
FTP服务布署
1.安装服务
yuminstall-yvsftpd
2.查看安装文件
rpm-qlvsftpd
/etc/logrotate.d/vsftpd…ftp服务的日志滚动文件
/etc/vsftpd/ftpusers…ftp服务的黑白名单
/etc/vsftpd/user_list…ftp服务的黑白名单
/etc/vsftpd/vsftpd.conf…ftp服务的主配置文件
/var/ftp…匿名用户访问ftp服务的根目录
3.编辑配置文件
vim/etc/vsftpd/vsftpd.conf
anonymous_enable=NO…是否容许匿名用户登入
local_enable=YES…是否容许本地用户登入
write_enable=YES…本地用户是否有写权限
local_umask=022…本地用户的umask码
anon_upload_enable=YES…匿名用户是否有写权限
anon_mkdir_write_enable=YES…匿名用户是否有创建目录的权限
dirmessage_enable=YES…欢迎信息
connect_from_port_20=YES…是否使用20端口作为数据传输的端口
chown_uploads=YES…上传文件是否修改文件的拥有者
chown_username=whoever…更改的用户
idle_session_timeout=600…命令联接的超时时间
data_connection_timeout=120…数据联接的超时时间
ascii_upload_enable=YES…是否容许使用纯文本的形式上传文件
ascii_download_enable=YES…是否容许使用纯文本的形式下载文件
ftpd_banner=WelcometoblahFTPservice…欢迎信息内容
chroot_local_user=YES…是否开启用户监牢
chroot_list_enable=YES…是否容许跳出监牢
chroot_list_file=/etc/vsftpd/chroot_list…跳出监牢的文件
ls_recurse_enable=YES…是否容许使用-R递归查询
listen=NO…是否窃听IPV4地址
listen_ipv6=YES…是否窃听IPV6地址
pam_service_name=vsftpd…认证模块
userlist_enable=YES…是否开启黑白名单
3.关掉防火墙
systemctlstopfirewalld.service
4.启动服务器
systemctlstartvsftpd
FTP服务的链接
FTP服务的链接有2种
1.控制链接
用于传输命令等,使用的时TCP合同,控制联接用于在两个主机之间传输控制信息,如用户标示、口令、改变远程目录的命令以及“put”和“get:”文件的命令,使用端口21。
2.数据链接
数据联接用于实际传输一个文件,使用端口20或随机端口。
FTP服务的工作模式
1.主动模式
主动模式的FTP工作原理:顾客端从一个任意的非特权端口N联接到FTP服务器的命令端口,也就是21端口。之后顾客端开始窃听端口N+1,并发送FTP命令“portN+1”到FTP服务器。接着服务器会从它自己的数据端口(20)联接到顾客端指定的数据端口(N+1)。
2.被动模式(默认)
当开启一个FTP联接时,顾客端打开两个任意的非特权本地端口(N>1024和N+1)。第一个端口联接服务器的21端口,但与主动形式的FTP不同,顾客端不会递交PORT命令并容许服务器来回连它的数据端口,而是递交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P>1024),并发送PORTP命令给顾客端,同时通知自己的防火墙开启该端口,之后顾客端发起从本地端口N+1到服务器的端口P的联接拿来传送数据
FTP顾客端链接
顾客端登陆ftp服务
1.windows登入FTP服务
在URL路径上输入ftp://FTP服务器地址
2.linux登陆FTP服务
因为FTP服务属于C/S构架linux用户 ftp命令,所以要安装FTP服务的顾客端(网路YUM有软件包)
ftpFTP服务器的IP地址
name:登陆的用户(ftp、anonymous为匿名用户)
passwd:用户密码(匿名用户密码为空)
FTP默认传输文件的模式为使用二补码传输
linux顾客端ftp命令
ftp>help顾客端命令查询
!:执行的系统命令ascii:使用ascii模式传输文件
binary:使用binary模式传输文件cd:切换远程目录
delete:删掉文件dir:显示远程目录
exit:退出get:下载
lcd:切换系统目录ls:显示文件
mdelete:删掉多个文件mget:下载多个文件
mkdir:创建目录mput:删掉多个文件
passive:修改为被动模式put:上传
pwd:显示工作目录quite:退出
FTP服务登陆用户
1.匿名用户
顾客端访问FTP资源时,可以在没有服务器的帐户及密码的下,使用匿名(anonymous)身分获取公共资源,但权限较小.
2.实体用户
实体用户(realuser)是指FTP服务器的本地帐户,使用/etc/password中的用户名为认证方法.
3.虚拟用户
区别于实体帐户,FTP支持构建专有的用户,将帐号及密码保存在数据库中,采用非系统帐户访问服务器资源,相对于FTP的实体用户而言,虚拟用户只能访问FTP共享资源,提高了系统安全性,但是,顾客端使用虚拟用户登入,须要递交帐号及密码,管理员可以按照这种帐号进行策略设置,降低了对用户和下载的可管理性,考虑到FTP服务器的安全性以及管理诱因,选择虚拟用户登入,是一个十分可靠的方案.
FTP实例配置
1.匿名用户下载
注意:匿名用户下载文件,FTP要对下载的文件要有读权限,而且要对自己下载的目录有写权限
2.匿名用户上传文件
在FTP服务器的配置文件中更改容许匿名用户上传文件anon_upload_enable=YES,重启服务。注意,上传文件,要保证匿名用户对上传文件的目录有写权限
匿名用户上传文件
3.修改用户上传文件的拥有者(便捷系统用户管理)
修改FTP配置文件
4.本地用户chroot限定
本地用户登入
默认FTP服务本地用户登入的时该用户的家目录
默认本地用户可以切换到FTP服务器的其他的目录
限定本地用户切换FTP服务器的系统目录
修改FTP配置文件
注意:
1在v10版本中的vsftpd服务,在开启用户限制时linux操作系统界面,没有写在chroot_list文件中的用户,因为安全问题,默认不能登入。
2.若要用户登入,把用户的家目录的写权限除去(chmodu-w用户的家目录),或则在配置文件中添加选项allow_writeable_chroot=YES
把jerry用户添加到chroot_list文件中linux系统iso下载,分别使用2个用户登入
5.FTP服务器的黑白名单
在/etc/vsftpd目录下的ftpusers和user_list文件为黑白名单
黑名单:写入到上述2个文件中的用户不能登入(默认)
白名单:写入到上述2个文件中的用户可以登入
配置文件中的userlist_deny=NO选项使用的是白名单(yes:为黑名单,no为白名单)
6.测试主被动模式使用的端口
主动模式:打算一个大文件linux用户 ftp命令,使用顾客端下载。
在其他终端窃听,主动模式使用20号端口传输数据
被动模式
在其他终端窃听,主动模式使用随机端口传输数据。随机端口=44*256+233
7.虚拟用户登入(属于匿名用户登入)
1)创建虚拟用户文件
vimftpuser
tom…用户名
kylin…密码
2)把ftpuser文件生成虚拟用户口令库文件
db_load-T-thash-fftpuser/etc/vsftpd/ftp.db
3)更改ftp.db权限
chmod644/etc/vsftpd/ftp.db
4)更改vsftp配置文件
vim/etc/vsftpd/vsftpd.conf
pam_service_name=ftp…指定ftp服务认证的模块
guest_username=ky…指定虚拟用户承接的用户
guest_enable=YES…是否容许虚拟用户登入
allow_writeable_chroot=YES…是否容许在根下有写权限
****在注意allow_writeable_chroot选项必须有
****匿名用户登入的根目录在ky用户的家目录下
5)修改ky用户家目录的权限
chmod755/home/ky…根据需求更改权限,虚拟用户是否可写
6)更改认证模块
cp-a/etc/pam.d/vsftpd/etc/pam.d/ftp
vim/etc/pam.d/ftp
authrequired/lib64/security/pam_userdb.sodb=/etc/vsftpd/ftp
accountrequired/lib64/security/pam_userdb.sodb=/etc/vsftpd/ftp
7)启动服务
systemctlrestartvsftpd.service
8)查看tom用户
idtom注意:tom用户不存在
9)防火墙设置
firewall-cmd--permanent--add-service=ftp
firewall-cmd--reload
或则
systemctlstopfirewalld.service
10)测试顾客端虚拟用户登入
ftp服务器的IP地址
name:虚拟用户名
passwd:虚拟用户密码