Linux大神进阶十七:FTP服务优化管理

1.理解

(1)文件传输协议FTP —File Transfer Protocol):用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。 基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。 在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。
(2)非常安全的FTP服务Vsftpd—very secure FTP daemon):安全性是它的一个最大的特点。vsftpd是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。

信息 目录
软件安装包 vsftpd
默认发布目录 /var/ftp
默认发布目录的子目录 /var/ftp/pub/
协议接口 21/tcp
服务配置文件 /etc/vsftpd/vsftpd.conf
查看看该服务的配置文件 rpm -qc vsftpd
日志文件 /etc/logrotate.d/vsftpd
认证文件 /etc/pam.d/vsftpd
黑名单文件 /etc/vsftpd/ftpusers
用户名单文件 /etc/vsftpd/user_list
配置文件 /etc/vsftpd/vsftpd.conf

2.用户访问类型

客户端访问时, 用户身份可以分为:
1). 匿名用户:没有指定用户身份, ftp身份实现从服务器上传和下载文件;
2). 本地用户: -u指定用户身份,用户是服务器端的用户;
3). 虚拟用户: -u指定用户身份,但是服务器端并不存在该用户(id username),没有指定用户身份。

3.实验环境的配置

步骤 命令 注释
1. 配置yum源
1.1本地镜像挂载(1) mkdir /var/www/html/rhel7.3 ## 创建挂载目录
(2) mount root/Desktop/iso/rhel-server-7.3-x86_64-dvd.iso /var/www/html/rhel7.3 挂载镜像
1.2yum源搭建 (1) cd /etc/yum.repos.d ## 进入/etc/yum.repos.d文件夹下
(2) rm -rf * ##将多余的.repo文件清除
(3) vim yum.repo ## 建立新的.repo文件
(4) [rhel7.3]>>>name=rhel7.3>>>baseurl=file:///var/www/html/rhel7.3>>>gpgcheck=0 ## 编辑
1.3验证yum源 yum repolist ##yum源搭载成功
2.使用http共享yum源
(1) yum whatprovides httpd ##查找httpd的安装包
(2) yum install httpd-2.4.6-45.el7.x86_ 64 ##yum安装httpd
(3) systemctl start httpd ## 开启http服务
(4) systemctl enable httpd ##自启动http服务
(5) systemctl stop firewalld
(6) systemctl disable firewalld ## 开机不启动防火墙
(7) mount root/Desktop/iso/rhel-server-7.3-x86_64-dvd.iso /var/www/html/rhel7.3 挂载镜像
(8) df ##在浏览器中查看yum是否分享成功
3.共享yum源到虚拟机中
(1) ifconfig ##查看虚拟机网络
(2) cd /etc/sysconfig/network-scripts/ ##入/etc/sysconfig/network-scripts/目录
(3) vim ifcfg-eth0 ## 打开配置文件
(4) BOOTPROTO=none ##静态配置网络IP
IPADDR=172.25.19.251 ## 和真机在同一网段上
NETMASK=255.255.255.0 ## 子网掩码的配置
DEVICE=eth0 ##eth0网卡
ONBOOT=yes ## 开机激活
(5) systemctl restart network ##重启网络查看是否配置成功
(6) ifconfig ## 查看ip
(7) ping 172.25.19.250 ## 查看是否连通
(8) cd /etc/yum.repos.d目录 ## 进入/etc/yum.repos.d目录
(9) rm -rf * ## 清空该目录
(10) vim yum.repo ## 打开配置文件
(11) [rhel7.3]>>>name=rhel7.3>>>baseurl=http://172.25.19.250/rhel7.3>>>gpgcheck=0 ## 编辑
(12) yum clean all ##清空所有的YUM信息
(13)验证yum源 yum repolist ##yum源搭载成功
4.安装vsfp服务
yum install vsftpd -y ## 安装vsfp服务
systemctl start vsftpd ## 启动vsfp服务
systemctl enable vsftpd ##开机自启动vsfp服务
systemctl stop firewalld ## 关闭防火墙
systemctl disable firewalld ####开机自关闭防火墙
yum install lftp -y ## 安装lftp服务
lftp ip ####能登陆并且显示,表示安装成功
5. 注意 ## 机房做实验找不到yum源的方案
(1) vim /etc/hosts ## 打开配置文件
(2) 172.25.254.197 content.example.com ##添加老师的ip信息

步骤1:配置yum源
在这里插入图片描述 步骤2.使用http共享yum源
在这里插入图片描述步骤3:虚拟机共享yum源

在这里插入图片描述步骤4.安装vsfp服务
在这里插入图片描述步骤5.注意

在这里插入图片描述

4.vsftpd服务的配置参数设定

注意:vsftpd文件信息
/var/ftp ##默认发布目录
/etc/vsftpd ##配置目录
/etc/vsftpd/vsftpd.conf ##vsftp 的配置文件,修改完之后需要进行重启

功能 命令 注释
1. 匿名用户设定 ##注意修改配置文件,先复制,再进行修改;注意还原
1.1匿名用户登陆限制
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) anonymous_enable=YES NO
systemctl restart vsftpd ## 重启服务
1.2 匿名用户上传
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) write_enable=YES ## 可写
(vim) anon_upload_enable=YES ##可下载
(vim) anonymous_enable=YES NO
systemctl restart vsftpd ## 重启服务
chgrp ftp /var/ftp/pub ## 修改用户组
chmod 775 /var/ftp/pub ##修改写权限
1.3 匿名用户家目录修改 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) anon_root=/var ## 修改默认家目录
systemctl restart vsftpd ## 重启服务
1.4 匿名用户上传文件默认权限修改 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) anon_umask=xxx ##文件的权限为666-xxx
systemctl restart vsftpd ## 重启服务
1.5 匿名用户建立目录 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) anon_mkdir_write_enable=YES NO
systemctl restart vsftpd ## 重启服务
1.6 匿名用户下载 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) anon_world_readable_only=YES NO
systemctl restart vsftpd ## 重启服务
1.7匿名用户删除 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) anon_other_write_enable=YES NO
systemctl restart vsftpd ## 重启服务
1.8匿名用户使用的用户身份修改 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) chown_uploads=YES ## 允许上传
(vim) chown_username=student ## 修改用户为student
(vim) chown_upload_mode=0644 ## 上传的模式
systemctl restart vsftpd ## 重启服务
1.9最大上传速率 ## kb
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) anon_max_rate=102400 ## 最大传输速102400b(/2^10Kb)
dd if =/dev/zero of=/var/ftp/pub/group bs=1M count=100 ##给定文件大小进行下载
systemctl restart vsftpd ## 重启服务
1.10 最大链接数 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) max_clients=2 ## 最大链接数为2
systemctl restart vsftpd ## 重启服务
##
2.本地用户设定 ##
2.1本地用户登陆限制
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) local_enable=YES NO
systemctl restart vsftpd ## 重启服务
2.2 本地用户写权限设定 write_enable=YES|NO 默认状态下YES可以登录, 进行写操作
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) write_enable=NO 限制写操作
systemctl restart vsftpd ## 重启服务
2.3 本地用户家目录修改 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) local_root=/var ## 修改默认家目录
systemctl restart vsftpd ## 重启服务
2.4 本地用户上传文件默认权限修改 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) local_umask=xxx ##修改权限
systemctl restart vsftpd ## 重启服务
2.5限制本地用户浏览/目录 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) chroot_local_user=YES ##所有用户被锁定到自己的家目录中
systemctl restart vsftpd ## 重启服务
chmod u-w /home/* ## 去掉写权限
2.6 本地黑名单的建立
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) chroot_local_user=NO ## 黑名单:NO
(vim) chroot_list_enable=YES ##黑名单生效
(vim) chroot_list_file=/etc/vsftpd/chroot_list ##
vim /etc/vsftpd/chroot_list ##临时黑名单
systemctl restart vsftpd ## 重启服务
2.7本地白名单的建立
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) chroot_local_user=YES ## ## 白名单:YES
(vim) chroot_list_enable=YES ####白名单生效
(vim) chroot_list_file=/etc/vsftpd/chroot_list ##白名单链接
vim /etc/vsftpd/chroot_list ##临时白名单
systemctl restart vsftpd ## 重启服务
2.8 限制本地用户登录
2.8.1 白名单设定
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) userlist_deny=NO ## 白名单
vim /etc/vsftpd/user_list ##临时白名单,只在名单中出现的用户可以登陆ftp
systemctl restart vsftpd ## 重启服务
(2)黑名单的设定 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) userlist_deny=YES ##黑名单
vim /etc/vsftpd/user_list ##临时黑名单,只在名单中出现的用户不可以登陆ftp
systemctl restart vsftpd ## 重启服务
3. ftp虚拟用户的设定
3.0实验准备
配置yum源 ##
yum install vsftpd -y
systemctl start vsftpd ## 启动vsfp服务
systemctl enable vsftpd ##开机自启动vsfp服务
systemctl stop firewalld ## 关闭防火墙
systemctl disable firewalld ####开机自关闭防火墙
setenforce 0 ##关闭selinux服务
vim /etc/sysconfig/selinux
SELINUX=disabled ## 强制关闭(关机生效)
3.1虚拟用户的登录
0) useradd -s /sbin/nologin johnsonlee ## 在创建虚拟用户前我们需要创建一个不可登陆的用户
1). 创建虚拟帐号身份的文件 ## (注意: 不要出现空行或者多余的空格)
vim /etc/vsftpd/loginusers ## ##文件名称任意 ,用户以及密码
(vim) ftpuser1 ## 用户1
(vim) 123 ##密码1
(vim) ftpuser1 ## 用户2
(vim) 123 ####密码2
(vim) ftpuser3 ## 用户3
(vim) 123 ####密码3
2). 对用户帐号和密码进行加密 ##
db_load -T -t hash -f /etc/vsftpd/loginusers /etc/vsftpd/loginusers.db ##加密
chmod 600 /etc/vsftpd/loginusers* ##修改权限
3). 编辑帐号和密码处理的库文件 ## 可以到相应的系统文件下查看
vim /etc/pam.d/ljftpd ## 此时的文件名可以任意修改
(vim) account required pam_userdb.so db=/etc/vsftpd/loginusers ## 用户
(vim) auth required pam_userdb.so db=/etc/vsftpd/loginusers ##密码
4). 配置vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) pam_service_name=ljftpd ## 虚拟用户信息认证文件名称
(vim) guest_enable=YES ##虚拟用户开启
systemctl restart vsftpd ## 重启服务
5)虚拟帐号家目录独立设定) (vim) guest_username=johnsonlee ##
chmod u-w /home/ftpuser ## 去掉写权限
6)client lftp ip -u username ##用户进行验证
3.2虚拟用户的操作 ## 上面的实验为基础
1.server)虚拟帐号家目录独立设定 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
local_root=/johnsonlee_home/$USER ## 修改用户
user_sub_token=$USER ## 用户标签匹配
systemctl restart vsftpd ## 重启服务
mkdir /johnsonlee_home ##创建根目录
chgrp johnsonlee /johnsonlee_home ## 改组
chmod g+s /johnsonlee_home ##修改权限
mkdir /johnsonlee_home/ftpuser{1…3} ##创建目录
mkdir /johnsonlee_home/ftpuser1/curry1 ##常见文件1
mkdir /johnsonlee_home/ftpuser2/curry2 ##创建文件2
mkdir /johnsonlee_home/ftpuser3/curry3 ##创建文件3
2) 测试client lftp ip -u username ## 进入虚拟用户
ls ## 查看文件
3.3虚拟帐号配置独立) ##1). ftpuser1用户上传和下载文件限速;2). ftpuser2用户上传和下载文件不限速, 并且可以上传文件;
1)用户1的设定 ##
vim /etc/vsftpd/vsftpd.conf ## 打开配置文件
(vim) user_config_dir=/etc/vsftpd/conf.d ## 修改目录
systemctl restart vsftpd ## 重启服务
mkdir /etc/vsftpd/conf.d ## 创建目录(任意,对应)
cd /etc/vsftpd/conf.d ## 打开目录
touch ftpuser{1…2} ## 创建用户目录
vim /etc/vsftpd/conf.d/ftpuser1 ## 打开配置文件
(vim) anon_max_rate=1024 ## 在此文件中设定配置文件中的所有参数,此文件的优先级高
2)用户2的设定 ##
vim /etc/vsftpd/conf.d/fptuser2 ## 打开配置文件
(vim) anon_upload_enable=YES ## 允许上传
(vim) write_enable=YES ##可写
systemctl restart vsftpd ## 重启服务
mkdir /etc/vsftpd/conf.d/fptuser2/upload ## 修改用户
chown johnsonlee /etc/vsftpd/conf.d/fptuser2/upload ## 修改用户权限
3)测试
server dd if=/dev/zero of= /etc/vsftpd/conf.d/ftpuser1 bs=1M count=100 ## 文件1大小修改
server dd if=/dev/zero of= /etc/vsftpd/conf.d/ftpuser2 bs=1M count=100 ## 文件2大小修改
desktop lftp 172.25.19.251 -u ftpuser1 >get curry1 ##速度较慢
desktop lftp 172.25.19.251 -u ftpuser2 >get curry2 ## 速度较快;默认
desktop lftp 172.25.19.251 -u ftpuser2>cd upload > put /etc/passwd ##可以进行上传;注意根目录下不能上传

5.vsftpd服务实验结果

5.1匿名用户的设置

Result5.1.1匿名用户的登录限制
在这里插入图片描述Result5.1.2匿名用户上传
在这里插入图片描述
Result5.1.3匿名用户家目录修改

在这里插入图片描述
Result5.1.4匿名用户上传文件默认权限修改

在这里插入图片描述
Result5.1.5匿名用户建立目录

在这里插入图片描述
Result5.1.6匿名用户下载

在这里插入图片描述
Result5.1.7匿名用户删除

在这里插入图片描述
Result5.1.8匿名用户使用的用户身份修改

在这里插入图片描述
Result5.1.9最大上传速率

在这里插入图片描述
Result5.1.10匿名用户最大链接数在这里插入图片描述

5.2 本地用户的设定

Result5.2.1本地用户的登录
在这里插入图片描述
Result5.2.2本地用户的写权限限制
在这里插入图片描述
Result5.2.3本地用户家目录修改
在这里插入图片描述
Result5.2.4本地用户的上传文件权限

在这里插入图片描述
Result5.2.5 限制本地用户浏览/目录所有用户被锁定到自己的家目录中

在这里插入图片描述
Result5.2.6用户黑名单建立

在这里插入图片描述
Result5.2.7用户白名单建立

在这里插入图片描述
Result5.2.8(1)限制本地用户登陆——用户黑名单

在这里插入图片描述
Result5.2.8(2)限制本地用户登陆——用户白名单

在这里插入图片描述

5.3虚拟用户的设定

Result5.3.1虚拟用户的登录
在这里插入图片描述Result5.3.2虚拟用户的操作
在这里插入图片描述RESULT5.3.3虚拟帐号配置独立
在这里插入图片描述

6.实验排错

id 错误类型 解决
500文件系统权限过大 oops cannot change directory :/root (1)setsebool ftpd_disable_trans 1 (2) systemctl restart vsftpd (3)由于我的粗心大意在设置单个用户的访问目录时写错了用户目录,也导致了以上错误,请先确认访 问目录没有问题
500 文件系统权限过大 oops:vsftpd:refusing to run with writable root inside chroot() vsftpd匿名用户的默认目录是/home/ftpsize,但是现在设置成了目录“/”下,也就是根目录,在vsftpd新版本中例如现在的2.3.5已经不再推荐使用根目录,可以在外层加一层目录,并设置其权限为不可为全部权限;例如设置为/vsftp/abc >>>chmod u-w /var/ftp/pub
530 用户认证失败 Login incorrect (1) 确认用户名密码正确 passwd username(2) 仔细查看配置文件vsftpd.conf正确: 编写主配置文件(注意: 不要出现空行或者多余的空格);
550 服务本身功能未开放 systemctl restart vsftpd
553.本地文件系统权限过小 Could not create file (1)主配置文件没有重启;systemctl restart vsftpd(2)selinux没有关闭; setenforce 0
发布了33 篇原创文章 · 获赞 8 · 访问量 2283

猜你喜欢

转载自blog.csdn.net/Pierce110110/article/details/103008667