FTP?文件传输服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FTP?文件传输服务相关的知识,希望对你有一定的参考价值。
03 FTP?文件传输服务
1.FTP服务原理理概述
2.FTP服务传输模式
3.FTP服务安装配置
4.FTP匿匿名?用户访问
5.FTP本地?用户访问
6.FTPFTP企业案例例
FTP(File Transfer Protocol), 中?文为 “?文件传输协议” 是?一种在互联?网上进?行行?文件传输的协议, ?用于
在Internet上控制?文件的双向传输。
FTP是?一个应?用程序, 基于客户端/服务器?模式,默认使?用TCP 20/21端?口:
FTP控制链接:21端?口,?用于接受客户端发出的相关FTP命令与参数
FTP数据链接:20端?口,?用于数据传输, ?比如: 上传、下载数据
FTP服务端通常部署在企业内?网, 具有容易易搭建、?方便便管理理、安全稳定等特征。 ?而且有些FTP客
户端?工具?支持?文件的多点下载以及断点续传技术,因此FTP服务得到了了?广?大?用户的?青睐。
FTP协议的传输拓拓扑如下:
03 FTP?文件传输服务
1.FTP服务原理理概述
FTP登陆?用户:
匿匿名?用户 -->系统?用户
系统?用户 -->?一般关闭
虚拟?用户 -->系统?用户
FTP传输模式
1. 主动模式:服务端通过20端?口主动向客户端连接,传输数据。
2. 被动模式:服务端启动随机端?口,等待客户端发起连接,进?行行数据传输。
2.FTP服务传输模式
FTP传输模式总结:
FTP服务器?端启?用防?火墙, 开启21/20端?口,这时FTP只能?工作在主动模式
FTP客户端开启防?火墙,这时FTP只能选择?工作在被动模式
FTP客户端和FTP服务端都有防?火墙,那么将?无法使?用FTP主动和被动模式
1.基础环境准备
[root@ftp-server ~]# uname -r
3.10.0-693.el7.x86_64
[root@ftp-server ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 (Maipo)
2.关闭防?火墙以及 selinux
[root@ftp-server ~]# systemctl stop firewalld
[root@ftp-server ~]# systemctl disable firewalld
[root@ftp-server ~]# sed -ri ‘/^SELINUX=/cSELINUX=disabled‘ /etc/selinux/config
[root@ftp-server ~]# setenforce 0
[root@ftp-server ~]# getenforce
3.FTP服务安装配置
Disabled
3.安装 vsftpd 服务
// 需要有 epel 仓库
[root@ftp-server ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/r
epo/epel-7.repo
[root@ftp-server ~]# yum install vsftpd libdb-utils -y
4.启动 ftp 服务并加?入开机?自启动
[root@ftp-server ~]# systemctl enable vsftpd
[root@ftp-server ~]# systemctl start vsftpd
注意: 默认使?用匿匿名?用户访问共享?目录站点为 /var/ftp 仅拥有下载权限
5. vsftpd 全局配置?文件注释
[root@ftp-server ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES // 是否启?用匿匿名?用户
local_enable=YES // 是否启动本地?用户
write_enable=YES // 开启全局上传?文件
local_umask=022 // 控制本地?用户上传?文件默认权限 , umask 表示要减掉的权限
anon_umask=022 // 控制匿匿名?用户上传?文件的默认权限
anon_upload_enable=YES // 允许匿匿名?用户上传
anon_mkdir_write_enable=YES // 允许创建?目录
dirmessage_enable=YES // 配置?用户?目录显示信息
xferlog_enable=YES // 启动?日志
xferlog_file=/var/log/vsftpd.log// 指定?日志位置,配置 xferlog_enable 使?用
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES // 是否作为?一个独?立守护进程运?行行
chroot_local_user=YES // 禁锢所有?用户在?用户?目录下
chroot_list_enable=YES // 配合 chroot_list_file 使?用
chroot_list_file=/etc/vsftpd/chroot_list // 禁锢?用户列列表
pam_service_name=vsftpd ////PAM 认证?文件
userlist_enable=YES //ftpusers ?文件下的?用户都被拒绝登陆访问
tcp_wrappers=YES
guest_enable=YES // 开启虚拟?用户
guest_username=www //FTP 虚拟?用户对应的系统?用户
user_config_dir=/etc/vsftpd/ftplogin // 授权 FTP 虚拟?用户所在?目录
// 权限限制
local_root=/data/ftp // 指定本地?用户访问?目录站点
anon_root=/data/ftp // 指定匿匿名?用户访问?目录站点
// 资源控制
anon_max_rate=500000 // 匿匿名?用户限速
local_max_rate=800000 // 本地?用户限速
max_clients=100 // 同时能接收多少请求
max_per_ip=2 // ?一个 ip 同时能有多少连接
1.配置匿匿名?用户访问ftp服务,拥有创建?文件夹、上传下载?文件、不不允许删除、移动、重命令
// 编辑 vsftpd 主配置?文件
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf
// 启动匿匿名?用户、允许上传和创建?文件权限
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
// 修改默认 ftp 共享?目录站点权限,最后重新加载 vsftpd 服务
[root@ftp-server ~]# chmod -R 777 /var/ftp/
[root@ftp-server ~]# systemctl restart vsftpd
//Linux 下使?用 lftp 客户端?工具访问 vsftpd 服务验证,安装此?工具
[root@ftp-server ~]# yum install lftp -y
// 使?用匿匿名?用户登录 vsftpd
[root@ftp-client ~]# lftp 192.168.56.11
lftp 192.168.56.11:~> ls
drwxrwxrwx 2 0 0 4096 Mar 22 2017 pub
lftp 192.168.56.11:/> cd pub
// 创建?目录
lftp 192.168.56.11:/pub> mkdir dir_ftp
mkdir ok, `dir_ftp‘ created
lftp 192.168.56.11:/pub> ls
drwx------ 2 14 50 4096 Nov 14 21:10 dir_ftp
// 切换系统其他?目录
lftp 192.168.56.11:/pub> lcd /etc
lcd ok, local cwd=/etc
// 下载系统内?文件
lftp 192.168.56.11:/pub> put inittab
4.FTP匿匿名?用户访问
884 bytes transferred
lftp 192.168.56.11:/pub> ls
drwx------ 2 14 50 4096 Nov 14 21:10 dir_ftp
-rw------- 1 14 50 884 Nov 14 21:11 inittab
// 切回 ftp ?目录
lftp 192.168.56.11:/pub> cd
cd ok, cwd=/
lftp 192.168.56.11:/> cd pub
lftp 192.168.56.11:/pub> ls
drwx------ 2 14 50 4096 Nov 14 21:10 dir_ftp
-rw------- 1 14 50 884 Nov 14 21:11 inittab
// 验证删除?文件权限
lftp 192.168.56.11:/pub> rm inittab
rm: Access failed: 550 Permission denied. (inittab)
本地?用户访问 ftp 默认拥有上传和下载权限
1.本地?用户访问ftp服务
[root@ftp-server ~]# useradd ftp_test
[root@ftp-server ~]# echo "123"|passwd --stdin ftp_test
// 客户端验证
[root@ftp-client ~]# lftp 192.168.56.11
lftp 192.168.56.11:~> login ftp_test 123
lftp ftp_test@192.168.56.11:/> mkdir ftp
[root@ftp-server ~]# ls /home/ftp_test
ftp
2.拒绝特定的本地?用户访问ftp
[root@ftp-server ~]# echo "ftp_test" >> /etc/vsftpd/ftpusers
// 客户端验证
[root@ftp-client ~]# lftp 192.168.56.11
lftp 192.168.56.11:~> login ftp_test 123
lftp ftp_test@192.168.56.11:~> ls
ls: Login failed: 530 Login incorrect.
3.锁定所有本地?用户只能在?自?己的家?目录操作,但允许bgx?用户不不被锁定家?目录
chroot_local_user=YES // 锁定所?用?用户?至家?目录
chroot_list_enable=YES // 排除某个?用户不不被锁定
5.FTP本地?用户访问
chroot_list_file=/etc/vsftpd/chroot_list // 对应的?文件
allow_writeable_chroot=YES //centos7 必须增加
公司为了了宣传最新的产品信息,计划搭建FTP服务器?,为客户提供相关?文档的下载。对所有权互
联?网开放共享?目录,允许下载产品信息。公司的合作单位能够使?用FTP服务器?进?行行上传和下载。
需求分析
根据企业的需求,对于不不同?用户进?行行不不同的权限限制,FTP服务器?需要实现?用户的审核。需
考虑到服务器?的安全性,所以关闭实体?用户登录,使?用虚拟帐号验证机制,并对不不同虚拟帐
号设置不不同的权限。为了了保证服务器?的性能,还需要根据?用户的等级,限制客户端的连接数
及下载速度。
解决?方案
1.匿匿名?用户允许下载我们公司的产品, 但需要对其限速50Kb
2.普通?用户可以针对?自?己的?目录进?行行上传和下载,对其限速500Kb(虚拟?用户)
3.管理理?用户, 可以访问所有?目录资源, 并可以操作客户的?目录, 但不不允许操作对外
4.优化: 根据不不同的等级?用户做不不同的限速, 限制客户端连接次数(5)
[root@ftp-server ~]# /data/ftp //manager ?用户能管理理所有?目录 , 但不不能管理理 soft ?目录
manager
bgx //bgx普通?用户仅能查看?自?己的?文件和修改
soft //匿匿名?用户仅能下载共享软件包
1.建?立系统账户, 供与虚拟账户使?用
[root@ftp-server ~]# useradd virftp -s /sbin/nologin
//2.创建对应?目录,赋予权限
[root@ftp-server ~]#mkdir -p /data/ftp/{manager,bgx,soft}
[root@ftp-server ~]#chown -R virftp.virftp /data/ftp/{manager,bgx}
//3.创建虚拟?用户账户及密码
[root@ftp-server ~]# cat > /etc/vsftpd/vsftpd_login <<EOF
manager
manager
bgx
bgx
EOF
[root@ftp-server ~]# chmod 600 /etc/vsftpd/vsftpd_login
6.FTPFTP企业案例例
//4.?生成对应的库?文件
[root@ftp-server ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsf
tpd_login.db
//5.修改pam?文件
[root@ftp-server ~]# vim /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
//6.建?立虚拟?目录
[root@ftp-server ~]# mkdir /etc/vsftpd/vsftpd_user_conf
//7.配置匿匿名?用户权限,限速100k
//匿匿名?用户登陆默认?目录,必须要和/etc/passwd中的ftp?用户的默认宿主?目录要?一样,否则也会出错误!
anonymous_enable=YES
anon_root=/data/ftp/soft
anon_max_rate=100000
//关闭之前修改过的匿匿名上传和创建权限
anon_upload_enable=NO
anon_mkdir_write_enable=NO
//8.配置管理理?用户, 限速2MB
cat > /etc/vsftpd/vsftpd_user_conf/manager <<EOF
local_root=/data/ftp/
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=2000000
EOF
//9.配置普通?用户, 限速1MB
cat > /etc/vsftpd/vsftpd_user_conf/bgx <<EOF
local_root=/data/ftp/bgx
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=1000000
EOF
//10.配置?文件尾部追加如下内容
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
//11.使?用ftp客户端验证权限即可
![](https://s1.51cto.com/images/blog/202002/29/d75cd0a3aec54f20da6ddabbf8ce8393.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,ty
```pe_ZmFuZ3poZW5naGVpdGk=)
以上是关于FTP?文件传输服务的主要内容,如果未能解决你的问题,请参考以下文章