目录
(3)设置本地用户user2登录FTP服务器之后,在进入dir目录时显示提示信息“welcome to user's dir!
(5)设置只有指定本地用户user1和user2可以访问FTP服务器
一、FTP协议
1.介绍
FTP(文件传输协议)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输,客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
FTP在文件传输的一个重要特定是支持断点续传
2.用处
进行web服务器的数据更新
经常需要共享软件或文件资料等信息
需要在不同的OS之间传输数据
文件尺寸较大,无法通过邮箱等工具传递的时候
3.FTP原理
一个完整的FTP文件传输需要要建立两种类型的连接
一种是控制连接21应用层端口识别,用于在服务器与客户端之间传输控制信息,如用户标识、口令、传输与操作,另一种是数据连接20,用于实际传输文件数据
4.FTP工作模式
主要解决防火墙对于数据阻塞的问题,在C-S,C端一般处于内网,处于防火墙隔离区域
(1)主动模式
S端主动向C端发送数据,不符合规则,可能会被拒绝,一般情况下不用。
(2)被动模式
C端主动向S端发送21邀请,S端向C端以随机端口来发送数据,是最常用的
5.FTP实现
(1)wuftpd
历史最悠久的非商业FTP服务器之一,安全性较差,但是稳定性好
(2)proftpd
易配置,速度快,源代码干净,安全性较高,但是不够稳定
(3)vsftpd
安全,告诉,稳定(集群),配置简单
二、FTP服务的安装与配置
1.安装vsftpd软件包
使用yum命令安装vsftpd
yum install -y vsftpd
在ftp-server节点虚拟机中配置本地yum仓库,yum源中使用的centos7系统镜像源
mkdir /iso
mount /dev/cdrom(sr0) /iso
vi /etc/yum.repos.d/local.repo
[local]
name = local
baseur = life:///iso
gpgcheck = 1
enable = 1
yum clean all
yum repolist
2.安装FTP协议
yum install -y ftp
3.重启FTP服务
systemctl restart vsftpd
systemctl enable vsftpd
4.防火墙规则
firewall-cmd --permanet --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-add
三、搭建匿名用户的FTP服务器
权限设置问题——那些用户有访问ftp资源的权限
1.匿名用户
登录FTP服务器不需要任何口令和密码,一般只能下载资源,不能上传
FTP服务器上的资源主目录/var/ftp,匿名账账号为anonymous或FTP,密码为空或者FTP,账号和密码共用,对用户来讲不用设置
2.本地用户
需要本地的账号和密码认证,可以上传资源也可以下载资源,一旦密码被攻破,资源可以畅通无阻的使用
3.虚拟用户模式
认证用户和密码使用的专门FTP数据库映射临时性账号,可以上传可以下载,生产环境常用
4.查看相关配置文件
cd /etc/vsftpd
ls
ftpusers:用户的黑名单 把用户加入黑名单就不能够使用ftp服务
user_list 登录控制用户列表
userlist_deny=NO允许列表中的用户访问ftp服务
userlist_deny=YES(default,默认), 拒绝文件列表中的用户访问ftp服务器
vsftpd.conf ftp的主配置文件 用户登录权限控制 服务器功能 超时设置等配置
cat -n vsftpd.conf |grep -v "#"
5.和匿名用户有关的配置
anonymous_enable=YES # 开启匿名用户登录
local_enable=YES # 开启本地用户登录
write_enable=YES # 允许本地用户写入
local_umask=022 # 设置本地用户创建文件的umask值为022
dirmessage_enable=YES # 激活消息目录
xferlog_enable=YES # 是否启用日志
connect_from_port_20=YES # 主动模式端口为20
xferlog_std_format=YES # 将日志格式设置为标准格式
listen=NO # 不可同时将listen与listen_ipv6都设置为YES
listen_ipv6=YES # 允许IPv4或IPv6客户端的连接
pam_service_name=vsftpd # PAM(可插拔认证)服务的名称为vsftpd
userlist_enable=YES # 允许用户列表生效
tcp_wrappers=YES # 使用tcp_wrappers作为主机访问控制方式
anonymous_enable=YES # 开启匿名用户登录
anon_root=/var/ftp 共享目录指定
anon_upload_enable=YES 是否可以下载
anon_mkdir_write_enable=YES 是否可以创建文件目录
anon_other_write_enable=YES 是否可以删除或者重命名
6.配置实例
op1.修改主机用户名为你自己名字
[root@whp ~]# setenforce 0
[root@whp ~]# vi /etc/selinux/config
SELINUX=disabled
op2.创建共享目录与文件 /var/ftp/pub
[root@whp ~]# mkdir /var/ftp/pub
[root@whp ~]# cd /var/ftp/pub
[root@whp pub]# ls
[root@whp pub]# touch sample.tar
[root@whp pub]# echo "welcome to ftp server" > hello.txt
[root@whp pub]# ls
hello.txt sample.tar
op3:修改配置文件 /etc/vsftpd/vsftpd.conf
不能有重复参数,有的就修改 没有就在末行添加
不要复制 手动输入
anonymous_enable=YES
anon_root=/var/ftp
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
op4:应用层firewall防火墙放行ftp服务
[root@whp vsftpd]# firewall-cmd --permanent --add-service=ftp
Warning: ALREADY_ENABLED: ftp
success
[root@whp vsftpd]# firewall-cmd --reload
success
[root@whp vsftpd]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client ftp
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@whp vsftpd]# systemctl restart vsftpd
op5:修改权限
[root@whp ~]# ll -ld /var/ftp/pub
drwxr-xr-x. 2 root root 41 Oct 9 17:30 /var/ftp/pub
[root@whp ~]# chmod o+w /var/ftp/pub
[root@whp ~]# ll -ld /var/ftp/pub
drwxr-xrwx. 2 root root 41 Oct 9 17:30 /var/ftp/pub
[root@whp ~]# systemctl restart vsftpd
op6:验证
serverip 本机火狐浏览器 查看 ftp://server ip
四、本地用户的FTP服务
需求分析:禁止匿名用户登录仅允许本地用户登录,账号1和账号2锁定在目录/web/www/html
1.添加账户
useradd -s /sbin/nologin 用户名
2.修改配置文件
(1)禁止匿名用户登录
anonymous_enable=NO
(2)允许本地用户登录
local_enable=YES
(3)设置本地用户根目录
local_root=/web/www/html
(4)本地用户权限是否限制
chroot_local_user=NO
chroot_list_enable=YES
(5)激活chroot功能,锁定用户
chroot_list_file=/etc/vsftpd/chroot_listallow_writeable_chroot=YES
vi chroot_list
(6)认证设置
write_enable=YES
pam_service_name=vsftpd # PAM(可插拔认证)服务的名称为vsftpd
3.重启服务
systemctl restart vsftpd
五、FTP服务器搭建实训
1.实训目的
掌握vsftpd服务器的配置方法。 熟悉FTP客户端工具的使用。掌握常见的FTP服务器的故障排除。
2.项目背景
某企业网络拓扑图如下图所示,该企业想构建一台FTP服务器,为企业局域网中的计算机提供文件传送任务,为财务部门、销售部门和OA系统提供异地数据备份。要求能够对 FTP 服务器设置连接限制、日志记录、消息、验证客户端身份等属性,并能创建用户隔离的FTP站点。
3.操作
(1)设置匿名帐号具有上传、创建目录权限
(2)设置禁止本地user1用户登录ftp服务器。
(3)设置本地用户user2登录FTP服务器之后,在进入dir目录时显示提示信息“welcome to user's dir!
(4)设置将所有本地用户都锁定在家目录中
(5)设置只有指定本地用户user1和user2可以访问FTP服务器
(6)配置基于主机的访问控制
实现如下功能:
拒绝192.168.6.0/24访问。
对域jnrp.net和192.168.2.0/24内的主机不做连接数和最大传输速率限制。
对其他主机的访问限制每IP的连接数为1,最大传输速率为20KB/S
(7)使用PAM实现基于虚拟用户的FTP服务器的配置。
7. 1使用PAM实现基于虚拟用户的FTP服务器的配置。
7.2生成虚拟用户所需的PAM配置文件/etc/pam.d/vsftpd。
7.3修改vsftpd.conf文件。