部署FTP服务器及其管理

1.FTP简介

文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,也是网络上常用的最老的网络协议之一,它使用客户/服务器模式。它属于网络传输协议的应用层。

FTP服务器的名称为vsftpd,它代表Very Secure File Transfer Protocol Damon。默认配置文件让anonymous用户(匿名用户)只能下载位于chroot目录中的内容。

/var/ftp/这意味着远程ftp客户端能以anonymous用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)

与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

匿名FTP

使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可下载或上传文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。

当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上传文件,也就是说,用户可将匿名FTP主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上传文件,用户也只能将文件上传至某一指定上传目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上传有问题的文件,如带病毒的文件。

2.部署ftp服务器

1)部署前我们需要先关闭selinux【内核级加强型火墙】

vim /etc/sysconfig/selinux 		##disabled
getenforce			##查看状态是否改变
reboot				##重启系统

部署FTP服务器及其管理_第1张图片
部署FTP服务器及其管理_第2张图片
2)安装并开启ftp服务

yum install vsftpd -y 	##需提前搭建好yum源,详情可参考作者前面关于yum源搭建的博客
systemctl start vsftpd
systemctl enable vsftpd		##设置服务开机自启
systemctl status vsftpd

部署FTP服务器及其管理_第3张图片
部署FTP服务器及其管理_第4张图片

yum install lftp -y

部署FTP服务器及其管理_第5张图片

3)设置火墙永久允许ftp服务

方法一:命令设置

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

部署FTP服务器及其管理_第6张图片
方法二:图形设置

![firewall-config](https://img-blog.csdnimg.cn/2019021401024415.png)

在下图中选择【Permanent】,在【Options】中选择第一项
部署FTP服务器及其管理_第7张图片

firewall-cmd --list-all			##查看是否设置成功

部署FTP服务器及其管理_第8张图片
4)测试服务

lftp 172.25.254.106
lftp 172.25.254.106:~> ls 

部署FTP服务器及其管理_第9张图片

4.ftp服务的基本信息

软件安装包:vsftpd

默认发布目录:/var/ftp

协议接口:21/tcp

服务配置文件: /etc/vsftpd/vsftpd.conf

报错id解析:

id 含义
500 文件系统权限过大
530 用户认证失败
550 服务功能未开放
553 本地文件系统权限过小

配置文件内容解释

vim  /etc/vsftpd/vsftpd.conf ------>配置文件

部署FTP服务器及其管理_第10张图片

命令 功能
anonymous_enable=YES/NO 匿名用户是否可以登陆
local_enable=YES/NO 本地用户是否可以登陆
write_enable=YES ftp是否对登陆用户可写
anon_upload_enable=YES/NO 匿名用户是否可以上传
anon_root=/direcotry 匿名用户家目录修改
anon_mkdir_write_enable=YES 匿名用户建立目录
anon_other_write_enable=YES 匿名用户删除
anon_umask=xxx 匿名用户上传文件默认权限修改
anon_world_readable_only=YES/NO 匿名用户下载,设定参数为NO表示匿名用户可以下载
chown_uploads=YES
chown_username=student 匿名用户使用的用户身份修改
anon_max_rate=102400 最大上传速率

下面我们将用实验来一一验证

@@@@匿名用户相关设定@@@@

1)设定匿名用户是否可以登陆

如下图所示,能成功执行【ls】命令即可视为登陆成功
部署FTP服务器及其管理_第11张图片

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO			##设定匿名用户不可登陆
systemctl restart vsftpd	##重启服务

部署FTP服务器及其管理_第12张图片
2)设定ftp对本地用户的限制

local_enable=YES/NO  ##本地用户是否可以登录

修改前
部署FTP服务器及其管理_第13张图片
修改后——要重启服务
部署FTP服务器及其管理_第14张图片

3)修改匿名用户上传权限

关闭时,出现550报错——功能未开放

write_enable=NO
anon_upload_enable=NO

部署FTP服务器及其管理_第15张图片
打开权限后——匿名用户上传文件成功

write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub

部署FTP服务器及其管理_第16张图片
4)匿名用户家目录修改

anon_root=/mnt		##配置文件里没有该信息,需要自行添加设置

部署FTP服务器及其管理_第17张图片
部署FTP服务器及其管理_第18张图片
5)匿名用户上传文件默认权限修改:

anon_umask=022		##配置文件里没有该信息,需要自行添加设置

修改前
部署FTP服务器及其管理_第19张图片
修改后——之前上传的文件权限和修改后上传的文件权限不同
部署FTP服务器及其管理_第20张图片
6)匿名用户建立文件

部署FTP服务器及其管理_第21张图片
修改文件后

anon_mkdir_write_enable=YES

部署FTP服务器及其管理_第22张图片
7)匿名用户下载==

anon_world_readable_only=YESdd|NO  ##no表示匿名用户可以下载,配置文件里没有该信息,需要自行添加设置

开启前
部署FTP服务器及其管理_第23张图片
开启后
部署FTP服务器及其管理_第24张图片
8)匿名用户删除本地文件权限设置

anon_other_write_enable=YES|NO		##配置文件里没有该信息,需要自行添加设置

部署FTP服务器及其管理_第25张图片
开启后

部署FTP服务器及其管理_第26张图片
9)匿名用户时用的用户身份修改

chown_uploads=YES
chown_username=student
chown_upload_mode=0777			##配置文件里没有该信息,需要自行添加设置

部署FTP服务器及其管理_第27张图片
部署FTP服务器及其管理_第28张图片
9)设定匿名用户最大上传速率

anon_max_rate=102400		##102400大概200KB的速度

部署FTP服务器及其管理_第29张图片
10)能够最大链接客户端的用户数

max_clients=2			##一次最多连接2个用户

部署FTP服务器及其管理_第30张图片

@@@@本地用户相关设定@@@@

1)登陆权限和写权限

local_enable=YES/NO  ##本地用户登录限制
write_enable=YES/NO  ##本地用户写权限限制

设置前:执行删除操作未成功
部署FTP服务器及其管理_第31张图片

修改后:成功执行删除操作

部署FTP服务器及其管理_第32张图片
2)本地用户家目录修改

local_root=/dir			##配置文件里没有该信息需自行添加

部署FTP服务器及其管理_第33张图片
3)本地用户上传文件权限

 local_umask=777

修改前
部署FTP服务器及其管理_第34张图片
修改后

部署FTP服务器及其管理_第35张图片

4)限制本地用户浏览/目录

chroot_local_user=YES      ##所有用户被锁定到自己的家目录中  

修改前
部署FTP服务器及其管理_第36张图片
修改后

部署FTP服务器及其管理_第37张图片

用户不能有写的权限否则会报错500

chmod u-w  /home/*

部署FTP服务器及其管理_第38张图片

5)本地用户黑名单的建立

chroot_local_user=NO                         ##NO表示下面的路径为黑名单
chroot_list_enable=YES                       ##表示开启黑白名单功能
chroot_list_file=/etc/vsftpd/chroot_list     ##黑名单路径

部署FTP服务器及其管理_第39张图片

部署FTP服务器及其管理_第40张图片
6)本地用户白名单的建立

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

部署FTP服务器及其管理_第41张图片
修改后:不在白名单中的用户无法正常登陆
部署FTP服务器及其管理_第42张图片

7)限制本地用户登陆

/etc/vsftpd/ftpusers          ##永久黑名单

部署FTP服务器及其管理_第43张图片
/etc/vsftpd/user_list ##临时黑名单
部署FTP服务器及其管理_第44张图片

vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO          ##临时黑名单变为白名单

测试
部署FTP服务器及其管理_第45张图片

3.ftp虚拟账户设定

1.创建虚拟用户身份

1)建立虚拟用户名单

vim   /etc/vsftpd/userfile			##文件名随意

部署FTP服务器及其管理_第46张图片

2)将其用hash加密变为db

db_load  -T -t  hash  -f  /etc/vsftpd/userfile /etc/vsftpd/userfile.db

部署FTP服务器及其管理_第47张图片
3)编写一个新的认证文件

vim  /etc/pam.d/ftpuser		##名称随便写
account  required   pam_userdb.so    db=/etc/vsftpd/userfile
帐号       认证方式          认证插件               db文件
auth     required   pam_userdb.so    db=/etc/vsftpd/userfile
认证       认证方式          认证插件               db文件

部署FTP服务器及其管理_第48张图片

4)改动主配置文件

vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftpuser       ##认证方式(改变认证方式后之前的用户无法登录,可将其之前的认证文件	加入新的文件中即可)
guest_enable=YES              ##打开虚拟用户功能
guest_username=ftp            ##给虚拟用户一个身份

部署FTP服务器及其管理_第49张图片
5)重启ftp服务

systemctl  restart  vsftpd

2.虚拟用户指定家目录

1)建立家目录内容

mkdir  /var/ftpuserdir/westos{1..3}  -p		##【-p】表示同步权限
mkdir  /var/ftpuserdir/westos{1..3}/pub  
mkdir  /var/ftpuserdir/westos1/snow1
mkdir  /var/ftpuserdir/westos2/snow2 
mkdir  /var/ftpuserdir/westos3/snow3

在这里插入图片描述

2)改写主配置文件

local_root=/var/ftpuserdir/$USER               ##登陆后查看自己的家目录
user_sub_token=$USER                           ##认证shell内的$

在这里插入图片描述

3)重启ftp服务

systemctl  restart  vsftpd

测试:

虚拟用户不存在
部署FTP服务器及其管理_第50张图片
登陆
部署FTP服务器及其管理_第51张图片

3.虚拟帐户配置独立的功能

1)给/pub相应的权限

ls  -lr   /var/ftpuserdir/ftpuser{1..3}  
chmod  775   /var/ftpuserdir/westos*/pub
chgrp  ftp   /var/ftpuserdir/westos*/pub

在这里插入图片描述
下图中可见 /var/ftpuserdir/westos*文件所属组以已更改,且登陆后文件所属组ID为50,查看可知为ftp

部署FTP服务器及其管理_第52张图片

2)建立新的一个配置文件

mkdir  -p /etc/vsftpd/user_config
vim  /etc/vsftpd/user_config/westos1		##westos1为新建文件,文件名随意

此文件设定配置文件中的参数,默认此文件优先级高
部署FTP服务器及其管理_第53张图片

3)改写主配置文件,重启服务

vim /etc/vsftpd/vsftpd.conf           ##设置虚拟用户独立配置路径

部署FTP服务器及其管理_第54张图片
注意关闭此权限

在这里插入图片描述

测试:仅有westos1上传文件成功

部署FTP服务器及其管理_第55张图片

你可能感兴趣的:(Linux基础)