一、FTP文件传输服务
1、FTP的作用和特点
1)FTP的作用
支持使用局域网或者广域网上传下载数据
2)FTP特点
传输速度快
传输不受限制
使用广泛
安全性强
2、FTP服务端口和连接模式
1)FTP服务的端口号
21:控制连接端口,身份验证授权资源访问
20:数据连接端口,用于上传或者下载数据
2)FTP连接模式
主动模式:服务器使用20号端口向客户端发起连接,传输数据使用
被动模式:服务器打开指定的端口等待客户端连接
3、FTP传输模式
1)文本模式
传输文本文件
2)二进制模式
使用广泛
传输音频视频文本文件
4、FTP验证类型
1)匿名验证
访问FTP服务器不需要输入账户密码
客户端使用anonymous进行身份验证
2)本地账户验证
使用系统账户验证
访问FTP需要输入账户密码访问资源
3)虚拟账户
多个虚拟账户使用一个系统账户进行身份验证
灵活性强
方便扩展验证账户
5、FTP服务器端和客户端
1)FTP服务器端
IIS:Windows平台使用支持网站和FTP功能
Serv -v:Windows平台使用,可以在服务器端或者客户端系统运行
vsftpd:Linux服务器使用的ftp服务器端,开源程序
2)FTP客户端
ftp命令:Windows、Linux系统都可以使用
flashFXP:客户端程序,Windows平台使用
二、配置FTP服务器
1、安装vsftpd服务
1)安装服务器端
[root@centos01 ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
2)安装客户端
[root@centos01 ~]# rpm -ivh /mnt/Packages/ftp-0.17-67.el7.x86_64.rpm
3)设置开机自动启动
[root@centos01 ~]# systemctl enable vsftpd
2、ftp主配置文件常见的配置选项
1)匿名用户配置选项
anonymous_enable=YES //开启命令身份验证
anon_upload_enable=YES //允许匿名上传数据
anon_mkdir_write_enable=YES //用于匿名创建目录和写入权限
anon_other_write_enable=YES //允许写入、删除、重命名权限
anon_root=/benet //修改匿名访问FTP根目录
anon_umask=022 //文件权限644,目录权限755
2)本地账户ftp选项
local_enable=YES //允许本地系统用户访问
local_umask=022 //本地账户上传文件或者目录反码
local_root=/benet //本地账户ftp根目录
chroot_local_user=YES //禁锢ftp根目录
local_max_rate=0 //不限传输速率
3)ftp全局配置文件
write_enable=YES //允许写入权限
listen=NO //是否独立运行监听服务
pam_service_name=vsftpd //pam验证
userlist_enable=YES //启用user list列表
userlist_deny=YES //user list列表中的用户进制登录
listen_address=192.168.100.10 //ftp服务器监听IP地址
listen_port=21 //FTP服务器监听端口
tcp_wrappers=YES //开启FTP限制功能
xferlog_enable=YES //开启FTP日志功能
connect_from_port_20=YES //开启FTP主动模式
pasv_enable=YES //开启被动模式
pasv_min_port=2500 //开始端口
pasv_max_port=2600 //结束端口
max_clients=0 //客户端连接最大并发
max_per_ip=0 //允许同一个客户端地址链接次数
3、配置匿名访问FTP
1)修改主配置文件
anonymous_enable=YES
anon_root=/benet
anon_upload_enable=YES
anon_umask=022
2)创建ftp访问根目录设置数据
[root@centos01 ~]# mkdir /benet
[root@centos01 ~]# echo "bbb" > /benet/b.txt
3)设置目录写入权限
[root@centos01 ~]# chmod o+w /benet/
4)重新启动ftp服务
[root@centos01 ~]# systemctl restart vsftpd
4、配置本地账户FTP
1)创建FTP身份验证账户
[root@centos01 ~]# useradd bob
[root@centos01 ~]# useradd tom
[root@centos01 ~]# groupadd benet
[root@centos01 ~]# gpasswd -M bob,tom benet
2)修改主配置文件
[root@centos01 ~]# vim /etc/vsftpd/vsftpd.conf
local_enable=YES
local_root=/benet
chroot_local_user=YES
local_umask=022
3)创建ftp根目录设置所有者
[root@centos01 ~]# mkdir /benet
[root@centos01 ~]# chown root:benet /benet/
4、配置虚拟账户FTP
1)创建虚拟账户密码配置文件
[root@centos01 ~]# vim /etc/vsftpd/vusers
bob
pwd@123
tom
pwd@1234
alice
pwd@12345
2)生成验证数据库名字是vusers.db
[root@centos01 ~]# db_load -T -t hash -f /etc/vsftpd/vusers /etc/vsftpd/vusers.db
3)配置pam验证
[root@centos01 ~]# vim /etc/pam.d/vsftpd.vu
#%PAN-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
5)创建系统账户映射到虚拟账户指定ftp根目录设置权限
[root@centos01 ~]# useradd -d /ftproot -s /sbin/nologin virtual
[root@centos01 ~]# chmod 755 /ftproot/
6)修改vsftpd主配置文件支持虚拟账户ftp
[root@centos01 ~]# vim /etc/vsftpd/vsftpd.conf
local_enable=YES //开启本地身份验证
write_enable=YES //全局写入权限
anon_umask=022 //虚拟账户上传反码
chroot_local_user=YES //锁定ftp根目录
allow_writeable_chroot=YES //允许虚拟账户宿主目录写入权限
user_config_dir=/etc/vsftpd/vsftpd_dir //存储虚拟账户权限文件目录
pam_service_name=vsftpd.vu //加载pam验证文件
guest_enable=YES //开启虚拟账户验证功能
guest_username=virtual //虚拟账户映射到系统账户
7)创建用户权限配置文件
[root@centos01 ~]# mkdir /etc/vsftpd/vsftpd_dir
8)设置bob完全控制权限
[root@centos01 ~]# vim /etc/vsftpd/vsftpd_dir/bob
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
9)设置tom用户拥有上传权限
[root@centos01 ~]# vim /etc/vsftpd/vsftpd_dir/tom
anon_upload_enable=YES
10)alice拥有下载权限
[root@centos01 ~]# touch /etc/vsftpd/vsftpd_dir/alice
ftp概述
ftp是一种应用层协议
结构为C/S结构设计
为用户提供上传和下载文件的服务
适用于局域网和互联网
ftp端口
控制连接 TCP.21,用于发送ftp命令信息
数据连接 TCP.20,用于上传,下载数据
数据连接建立类型
主动模式,服务从端口20主动向客户端发起连接
被动模式,服务端在指定范围内某个端口被动等待客户端连接
传输模式
文本模式,ASCII模式,以文本序列传输数据
二进制模式,Binary模式,以二进制序列传输数据
ftp用户类型
匿名用户 本地用户 虚拟用户
ftp相关文件
/etc/vsftpd/ftpusers 黑名单
/etc/vsftpd/user_list 花名册
userlist_enable=YES时,则启用/etc/vsftpd/user_list 文件的用户列表
userlist_deny=YES 禁止/etc/vsftpd/user_list 文件的用户列表登录ftp
userlist_deny=NO 仅允许/etc/vsftpd/user_list 文件的用户列表登录ftp
ftp主配置文件
/etc/vsftpd/vsftpd.conf
匿名用户
anonymous_enable=YES 是否允许匿名用户访问
anon_umask=022 设置匿名用户上传文件的权限掩码值
anon_root=/var/ftp 设置匿名用户的FTP根目录,默认为/var/ftp/
anon_upload_enable=YES 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的写入权限
anon_other_write_enable=YES 是否允许匿名用户有其他写入权限,如文件改名,覆盖及删除
本地用户
local_enable=YES 是否允许本地系统用户访问
local_umask=022 设置本地用户上传文件的默认权限掩码值
local_root=var/ftp 设置本地用户的FTP根目录,默认为用户的宿主目录
chroot_local_user=YES 是否将FTP本地用户禁锢在宿主目录中
local_max_rate=0 限制本地用户的最大传输速率(0为无限制),单位,字节
全局配置
listen=YES 是否以独立运行的方式监听服务
listen_address=0.0.0.0 设置监听FTP服务的IP地址
listen_port=21 设置监听FTP服务的端口号
wirte_enable=YES 启用任何形式的写入权限都需要开启此项
download_enable=YES 是否允许下载文件(建立仅限于浏览,上传的FTP服务器可设为NO
dirmessage_enable=YES 用户切换进入目录时显示.message文件的内容
xferlog_enable=YES 启用xferlog日志,默认记录到/var/log/xferlog
xferlog_std_fount=YES 启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式
connect_from_port_20=YES 允许服务器主动模式
pasv_enable=NO 禁止被动模式连接;默认允许
pasv_max_port=24600 设置用于被动模式的服务器最大端口号
pasv_min_port=24500 设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd 设置用于用户认证的PAM文件位置(/etc/pam.d目录中对应的文件名)
userlist_enable=YES 是否启用user_list用户列表文件
userlist_deny=YES 是否禁止user_list列表文件的用户账号
max_clients=0 最大允许多少给各户端同时连接,0为无线制
max_per_ip=0 对来自同一个IP的客户端,最多允许多少给并发连接,o为无限制
tcp_wrappers=YES 是否启用TCP_Wrappers主机访问控制
匿名访问ftp
1.挂载光盘
[root@centos01 ~]# mount /dev/cdrom /mnt/
2.安装ftp
[root@centos01 ~]# yum -y install vsftpd
3.创建测试文件
[root@centos01 ~]# tar zcf /var/ftp/vsftpdconf.tar.gz /etc/vsftpd
4.更改/var/ftp/pub/的属主和权限
[root@centos01 ~]# chown ftp /var/ftp/pub/
供匿名用户访问ftp时上传文件使用
[root@centos01 ~]# chmod 755 /var/ftp/pub/
[root@centos01 ~]# ll -d /var/ftp/pub/
5.修改主配置文件
local_enable=NO 是否允许本地系统用户访问
anon_umask=022 设置匿名用户上传文件的权限掩码值
anon_upload_enable=YES(启用去#) 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES(启用去#) 是否允许匿名用户有创建目录的写入权限
listen=YES 是否以独立运行的方式监听服务
listen_ipv6=NO
完整的配置为
anon_umask=022
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_enable=NO
userlist_deny=NO
write_enable=YES
local_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
6.启动服务
[root@centos01 ~]# systemctl start vsftpd
查看vsftpd的端口信息
[root@centos01 ~]# netstat -anpt | grep vsftpd
7.客户端验证
挂载镜像
[root@centos02 ~]# mount /dev/cdrom /mnt/
安装客户端ftp
[root@centos02 ~]# yum -y install ftp
访问
[root@centos02 ~]# ftp 192.168.100.10
Connected to 192.168.100.10 (192.168.100.10).
220 (vsFTPd 3.0.2)
Name (192.168.100.10:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,100,10,237,65).
150 Here comes the directory listing.
drwxr-xr-x 2 14 0 6 Aug 03 2017 pub
-rw-r--r-- 1 0 0 2793 Jun 01 15:36 vsftpdconf.tar.gz
226 Directory send OK.
ftp>
get 下载 put 上传
wget ftp://192.168.4.11/vsftpdconf.tar.gz 不用访问ftp服务器也可以下载
ftp user1:pwd123@192.168.100.10
本地用户访问 它的ftp根目录是用户自己的宿主目录
vi /etc/vsftpd/vsftpd.conf
local_enable=YES 是否允许本地系统用户访问
write_enable=YES 启用任何形式的写入权限都需要开启此项
local_umask=022 设置匿名用户上传文件的权限掩码值
chroot_local_user=YES 是否将FTP本地用户禁锢在宿主目录中
listen=YES 是否以独立运行的方式监听服务
listen_ipv6=NO
allow_writeable_chroot=YES(需手动添加) 允许被限制用户的主目录具有写权限
ok
更改监听端口号
listen=YES 允许独立监听服务
listen_address=192.168.100.20 指定地址本·服务器地址
listen_port=2121 监听端口更改为2121
ok
访问时要带端口号 ftp 192.168.100.20 2121
允许使用ftp的被动模式
vi /etc/vsftpd/vsftpd.conf
pasv_min_port=24500 指定被动模式的下限端口 1024(默认范围)
pasv_max_port=24600 指定被动模式的上限端口 65535(默认范围)
限制并发数,传输速度
vi /etc/vsftpd/vsftpd.conf
max_client=20 限制并发客户连接最多20个 最多20个人连接ftp
max_per_ip=2 限制每个IP地址的连接数最多2个 每个人最多连接2个
local_max_rate=200000 限制本地用户传输速率为200kB/s
ok
构建基于虚拟用户的ftp服务
1.创建文本格式的用户名,密码列表
[root@centos02 user1]# vim /etc/vsftpd/vusers.list
mike
123
john
456
2.创建Berkeley DB格式的数据库文件
[root@centos02 vsftpd]# db_load -T -t hash -f vusers.list vusers.db
-T 允许文本格式转换成DB格式的数据库文件 -t 指定读取数据文件的基本方法 -f 指定数据文件
file vusers.db 查看转换后的文件类型
3.设置文件权限,避免数据外泄
[root@centos02 vsftpd]# chmod 600 /etc/vsftpd/vusers.*
[root@centos02 vsftpd]# ll /etc/vsftpd/vusers.*
4.添加用户映射账号,创建ftp根目录
[root@centos02 vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@centos02 vsftpd]# chmod 755 /var/ftproot/ 调整权限以允许浏览目录
5.为虚拟用户建立PAM认证文件
[root@centos02 vsftpd]# vim /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
6.修改主配置文件
local_enable=YES 是否允许本地系统用户访问
write_enable=YES 启用任何形式的写入权限都需要开启此项
anon_umask=022 (需手动添加) 指定上传权限掩码
guest_enable=YES (需手动添加) 启用来宾用户访问
guest_username=virtual (需手动添加) 指定映射的系统用户
pam_service_name=vsftpd.vu (需手动添加) 指定pam认证文件
allow_writeable_chroot=YES (需手动添加) 允许被限制用户的主目录具有写权限
完整的配置为
guest_enable=YES
guest_username=zhuxiang
pam_service_name=vsftpd.vu
local_enable=YES
allow_writeable_chroot=YES
local_umask=077
chroot_local_user=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
tcp_wrappers=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vuser_dir
7.创建测试文件
[root@centos02 vsftpd]# cd /var/ftproot/
[root@centos02 ftproot]# touch 11
[root@centos02 ftproot]# touch 111
[root@centos02 ftproot]# touch 1111
[root@centos02 ftproot]# touch 11111
[root@centos02 ftproot]# touch 111111
8,为虚拟用户建立配置文件
[root@centos02]# mkdir /etc/vsftpd/vusers_dir
[root@centos02]# cd /etc/vsftpd/vusers_dir
[root@centos02 vusers_dir]# vi john
anon_upload_enable=YES 允许上传文件
anon_mkdir_write_enable=YES 允许创建目录
touch mike
1,FTP服务器默认采用TCP什么端口与客户端进行通信?
20,21
2,简述FTP服务器中主动传输与被动传输的区别?
主动模式,服务从端口20主动向客户端发起连接
被动模式,服务端在指定范围内某个端口被动等待客户端连接
3,简述vsftpd服务器中用户列表文件ftpusers与user_list的作用和区别?
user_list 花名册
ftpusers 黑名单
4,vsftpd.conf文件中的anon_other_write_enable配置项的作用是什么?
是否允许匿名用户有其他写入权限
5,简述配置vsftpd使用虚拟用户的基本过程?
创建文本格式的用户名,密码列表
创建Berkeley DB格式的数据库文件
设置文件权限,避免数据外泄
添加用户映射账号,创建ftp根目录
为虚拟用户建立PAM认证文件
修改主配置文件
为虚拟用户建立配置文件
6,vsftpd.conf文件中chroot_local_user配置项的作用是什么?
是否将FTP本地用户禁锢在宿主目录中
7,依次执行什么操作后vsftpd服务器只允许lava.avnko,hunter这三个用户登录?
1,vi /etc/vsftpd/user_list
laya
vankl
hunter
2,vi /etc/vsftpd/vsftpd.conf
userlist_enable=YES
userlist_deny=NO
3,systemctl restart vsftpd
8,vsftpd.conf文件中listen_address与listen_port配置项的作用是什么?
设置监听FTP服务的IP地址
设置监听FTP服务的端口号
9,在vsftpd.conf文件中添加什么配置项可以设置并发客户连接最多20个?
max_clients=20
10,在linux操作系统中执行db_load -T hash -f vusers,list vusers.db命令的作用是什么?
创建Berkeley DB格式的数据库文件