十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
FTP 文件共享服务 基于tcp协议 端口:tcp 21(三次握手建立连接);tcp 20(数据传输)
创新互联专注于网站建设|成都网站改版|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖成都高空作业车租赁等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身设计品质网站。
工作模式 应用层
根据客户端的角度划分的:
[主动模式]
客户端开启一个1024以上的动态端口如:(2000)
--》连接服务器21号端口进行三次握手建立连接,三次握手的过程中会有延迟,延迟过程中:
客户端再次开启一个比上一个端口大1的端口(2001),监听
--》客户端给服务器发送命令Port2001,告知服务器,客户端的数据传输端口的2001
--》服务器端开启20端口与客户端的2001号端口建立连接进行数据通信
[被动模式]
客户端开启一个动态端口(2000)
--》连接服务器21号端口进行三次握手建立连接,三次握手的过程中会有延迟,延迟过程中:
客户端再次开启一个比上一个端口大1的端口(2001),监听
--》客服端给服务器端发送pasv命令,告知服务器,客户端现在处于被动模式,等待服务器端主动连接客户端
--》服务器端给客户端发送Port3000命令,告知给客户端,服务器端的数据传输端口的3000
--》客户端拿着2001号端口与服务器端的3000号端口建立连接进行数据通信
实验准备
两台服务器linux系统 centos 7.1
关闭防火墙
systemctl stop firewalld 临时关闭
systemctl disable firewalld 永久关闭
关闭selinux
setenforce 0 临时关闭
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config 永久关闭
yum -y install ftp 客户端安装FTP服务
yum -y install vsftpd 服务端安装vsftp服务
启动服务
systemctl enable vsftpd 开启自动启动服务
systemctl restart vsftpd 重启服务
systemctl stop vsftpd 停止服务
主配置文件 /etc/vsftpd/vsftpd.conf
#12 开启匿名访问
#16 允许本地的实体账户登陆
#19 允许实体账户有写权限
#23 创建文件的权限644(实体用户)
#29 允许匿名用户上传(只能上传文件不能上传目录)
#33 匿名创建目录的权限
#37 记录访问开启
#40 开启日志记录功能
#43 开启20号端口数据传输
#48、49 改变上传文件的属主
#53 日志所在的路径及文件名
#57 日志记录时是否采用标准格式
#60 会话连接超时时间600s
#63 数据传输超时时间120s
#82 上传数据传输模式
#90 不允许匿名用户的邮箱地址作为其密码
#92 记录文件的邮箱地址
#100 实体账户只让其在默认登录的位置活动
#101 开启其列表功能
#103 列表的存放位置及路径
#114 拒绝监听(ipv4)
#123 ipv6监听,能帮助监听ipv4
#125 用户认证 映射认证列表
#126 只要在用户列表中的用户都不能登录ftp
实验一
在配置文件中的特殊设置(实体用户切换目录限制)
【不允许实体用户切换路径,只能在默认访问位置活动】
vim /etc/vsftpd/vsftpd.conf
100行 解注释(即将#号去掉) 开启实体用户切换目录功能
chroot_local_user = yes
手动添加
allow_writeable_chroot = yes 允许用户进行登陆
101行 解注释
chroot_list_enable = YES 开启用户列表功能,在该列表中的用户可以切换路径
103行 解注释
chroot_list_file = /etc/vsftpd/chroot_list
指定用户列表所在路径及文件名,手动创建
vim /etc/vsftpd/chroot_list
加入到列表中的用户可以切换路径,列表外的用户不可以
重启服务验证
实验二
vim etc/vsftpd/vsftpd.conf
在配置文件中特殊权限设置 (允许匿名用户使用权限)
【实现匿名用户上传、创建目录、删除等权限】
29行 解注释
anon_upload_enable = YES 开启匿名用户上传功能,只能上传文件
33行 解注释
anon_mkdir_write_enable = YES 创建目录权限
34行 解注释
anon_other_write_enable = YES 手动添加,开启匿名用户的其他写权限
重启服务验证
客户端验证
用户名:ftp
密码:任意
修改匿名用户默认登陆位置的安全权限(属主、属组)
chown -R ftp.ftp /var/ftp/pub
重启服务验证
客户端:可以上传、创建目录、删除等
实验三
用户限制配置文件 /etc/vsftpd
【限制实体系统用户的登陆】
用户列表文件:ftpusers、user_list
ftpusers:
只要在给列表中的用户都拒绝访问
user_list:
在主配置文件中设置
userlist_enable = yes/no
若该项值为YES -》 开启用户列表功能,在user_list中用户拒绝登录
若该项值为NO -》 user_list列表失效
userlist_enable = yes
若userlist_deny = YES 表示列表内用户不允许登陆,列表外用户只能命令行登陆
若userlist_deny = NO 只有在列表中用户可以登录
实验四
虚拟用户:w
思想:客户端需要通过账号和密码登录,但是该账户不是系统中的实体账号,而是一个虚拟账号
在服务器端创建一个实体账户,将该账户映射到多个虚拟账号上
1.新创建虚拟账号文本文件 /etc/vsftpd
vim vftpuser (奇数行写用户名,偶数行写密码)
snow
123
lisa
321
不能有多余的空行
保存退出
2.将文本文件制作数据库文件
命令:db_load -T -t hash -f /vftpuser /etc/vsftpd/vftpuser.db
-T :将文本文件中内容导入到数据库文件中
-t :指定加密算法为hash
-f :指定文本文件,生成的库文件所在路径及文件名
3.配置验证文件 /etc/pam.d/vsftpd
将原验证文件备份
cp /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /etc/pam.d/vsftpd 拷贝模板验证文件
vim /etc/pam.d/vsftpd
auth required pam_userdb.so db = /etc/vsftpd/vftpuser
account required pam_userdb.so db = /etc/vsftpd/vftpuser
执行数据库文件的位置及文件名,注意不需要加.db
4.创建实体账户,将其映射到多个虚拟账户
#useradd -d /var/ftp/vftp test 创建新账户test 并指定家目录路径
#chmod 777 /var/ftp/vftp
修改主配置文件 vim /etc/vsftpd/vsftpd.conf
在最下面一行添加
guest_enable = yes 开启虚拟用户
guest_username = test 映射的实体账号
5.重启服务验证
[注]开启虚拟用户功能后,所有实体账户都不能登录
若要实体账户登录,需将实体用户加入到~/vftpuser中
systemctl status vsftpd -l 显示详细状态
实验五:
限制虚拟用户的权限
vim /etc/vsftpd/vsftpd.conf
【将所有的匿名功能关闭】
在最下一行添加
user_config_dir = /etc/vsftpd/vftp
【设置所有虚拟用户的权限限制文件的路径】
#cd /etc/vsftpd/vftp
vim snow
anon_world_readable_only = yes 开启读权限
write_enable = yes 开启写权限
anon_upload_enable = yes 上传
anon_mkdir_write_enable = yes 创建目录
anon_other_write_enable = yes 其它写权限
保存退出,重启服务验证