CentOS 7 FTP服务器的构建

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议
------来源百度百科

FTP的工作原理
在传输数据之前,客户端会先和FTP服务端的21号端口建立连接并开启一条通道,在这期间,客户端可以通过此通道来发送一些命令到FTP服务器执行一些相关的操作。FTP 20端口用于传输数据,因为FTP存在两种模式,一种是主动模式,一种的被动模式,是否使用 20端口 还取决与使用哪一种模式来进行数据的上传以及下载
主动模式(PORT):FTP服务端主动开放TCP 20端口和客户端建立数据通信通道,建立连接发送的是PORT命令
被动模式(PASV):客户端请求FTP服务端,会发送一个PASV命令,FTP服务端就会打开一个大于1024的端口号与之进行连接,使用该端口和客户端建立一条数据传输通道,然后客户端就会进行数据的上传以及下载了

环境准备

准备工作
提前关闭对应主机的防火墙以及selinux

主机IP地址
FTP服务端192.168.1.10
FTP客户端(Linux)192.168.1.20

Linux中的FTP分为三类登录用户,我们本次实验围绕这三类用户来进行

搭建过程如下

匿名用户

[root@ftp-server ~]# yum install -y vsftpd    //下载vsftpd 软件包
[root@ftp-server ~]# systemctl start vsftpd    //启动vsftpd服务器
[root@ftp-server ~]# systemctl enable vsftpd 
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@ftp-server ~]# setenforce 0

默认只要我们安装好vsftpd服务器并成功启动之后,就可以在客户端进行访问测试

Windows 客户端访问测试
在这里插入图片描述

虽然我们可以成功登陆,但是没有任何可以操作的权限,如果要匿名用户具备一些权限,我们需要在配置文件里面写入如下一些内容即可
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf 
anon_root=/opt/vsftpd      //修改主目录
anon_upload_enable=YES      //允许匿名用户上传文件
anon_mkdir_write_enable=YES    //允许匿名用户修改文件
anon_other_write_enable=YES     //授予匿名用户删除权限
anon_umask=022   //匿名用户创建文件的默认权限

本地用户

在我们使用本地用户登录之前需要确保anonymous_enable=NO这个参数等于NO
当我们使用本地用户来进行登录的时候,会把用户的家目录映射成我们访问的目录,本地用户默认就具有文件上传以及下载的权限
local_enable=YES              //开启本地用户登录
write_enable=YES              //本地用户具有写的权限
local_umask=022               //默认新建文件的权限

只要我们修改这个anonymous_enable=NO 并开启vsftpd服务,我们就可以登录来进行测试了
[root@ftp-server ~]# useradd uu        //创建一个普通用户来验证测试
[root@ftp-server ~]# passwd uu
更改用户 uu 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@ftp-server ~]# cd /home/uu/     //进入家目录
[root@ftp-server uu]# echo "123" >> 1.txt   //创建一个文件

客户端登录测试:
[root@s1 ~]# lftp 192.168.1.100 -u uu
口令: 
lftp uu@192.168.1.100:~> ls             
-rw-r--r--    1 0        0               4 Nov 08 02:25 1.txt
lftp uu@192.168.1.100:~> cat 1.txt       //查看文件里面的内容
123                                     
4 bytes transferred
lftp uu@192.168.1.100:~> mkdir ll     //新建一个目录测试
mkdir 成功, 建立 `ll'
lftp uu@192.168.1.100:~> ls
-rw-r--r--    1 0        0               4 Nov 08 02:25 1.txt
drwxr-xr-x    2 1001     1001            6 Nov 08 02:28 ll
lftp uu@192.168.1.100:~> rm -rf 1.txt   //删除1.txt 文件,所有也具有删除权限
rm 成功, 删除 `1.txt'

默认状态下用本地用户登录到Linux服务器的,都可以进行任意目录的切换,这是一种不安全的行为
lftp uu@192.168.1.100:~> cd /
cd 成功, 当前目录=/

我们可以通过修改配置文件,添加一条命令让本地用户登录不能够离开家目录
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf     //修改配置文件
105 chroot_local_user=YES      //取消注释   (代表不允许本地用户离开家目录)
106 allows_writeable_chroot=YES    //添加这个,如果不添加会出现问题
[root@ftp-server ~]# systemctl restart vsftpd    //冲vsftpd服务器

客户端验证测试
[root@s1 ~]# lftp 192.168.1.100 -u uu
口令: 
lftp uu@192.168.1.100:/> cd /     //切换到根目录
lftp uu@192.168.1.100:/> pwd
ftp://uu@192.168.1.100/
lftp uu@192.168.1.100:/> ls    //再次查看,还是家目录
drwxr-xr-x    2 1001     1001            6 Nov 08 02:28 ll

本地用户黑名单以及白名单的设置

[root@ftp-server ~]# cd /etc/vsftpd/     //进入该目录
[root@ftp-server vsftpd]# ll
总用量 20
-rw-------. 1 root root  125 4月   1 2020 ftpusers   //黑名单,只要在里面的用户都不能够登录到ftp服务器上
-rw-------. 1 root root  361 4月   1 2020 user_list   //临时黑名单  可以通过修改配置文件来成为白名单
[root@ftp-server vsftpd]# echo 'uu' >> user_list    //向这个文件里面写入我们之前创建的用户名称
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf    //修改配置文件 (确保存在以下三行代码)
userlist_enable=YES     //开启黑名单白名单认证
userlist_deny=YES     //yes代表为黑名单 表示不可以登录到ftp服务器,no代表为白名单,可以登录到服务器 
userlist_file=/etc/vsftpd/user_list   //文件存放地
[root@ftp-server ~]# systemctl restart vsftpd     //重启vsftpd服务器

验证测试(因为uu存在于文件当中,且文件状态为黑名单)
[root@s1 ~]# lftp 192.168.1.100 -u uu    
口令: 
lftp uu@192.168.1.100:~> ls          //登录失败      
ls: 登录失败: 530 Permission denied.

把userlist_deny=NO 改为NO 在来登录测试
[root@s1 ~]# lftp 192.168.1.100 -u uu 
口令: 
lftp uu@192.168.1.100:~> ls        //成功登录 
drwxr-xr-x    2 1001     1001            6 Nov 08 02:28 ll

虚拟用户
FTP虚拟用户,只能够用于登录到FTP服务器,不能够用于Linux系统的交互式登录,所有的虚拟用户在登录到FTP服务器的时候,都会映射成一个本地用户来进行一些的操作

新建一个用户认证文件  基数行为用户 偶数行为密码
[root@ftp-server ~]# cd /etc/vsftpd/
[root@ftp-server vsftpd]# vim users 
admin
123
oo
123
zz
123
然后对这个文件做一个加密设置
使用db_load 以及 pam认证软件 如果没有对应命令,可以使用这个来 yum install –y pam* db4*
[root@ftp-server vsftpd]# db_load -T -t hash -f users users.db 
[root@ftp-server vsftpd]# cat users.db    //查看这个文件已经成为了加密状态
���N�ޙэh^123admin[root@ftp-server vsftpd]# 
[root@ftp-server vsftpd]# rm -rf users     //删除原文件
[root@ftp-server vsftpd]# chmod 600 users.db    //对生成的文件进行权限设置

然后进行pam认证的配置,当客户端使用虚拟用户登录到ftp服务器上的时候,就会进行这一步,只有pam验证成功,才可以登录到ftp服务器上
[root@ftp-server ~]# cd /etc/pam.d/    //进入该目录
[root@ftp-server pam.d]# vim renzheng    //新建一个文件
auth required pam_userdb.so db=/etc/vsftpd/users   //写入认证文件的位置
account required pam_userdb.so db=/etc/vsftpd/users

以上操作完成以后,我们修改vsftpd的配置文件添加如下信息
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf 
guest_enable=YES      //开启虚拟用户登录
guest_username=uu     //虚拟用户映射的用户
pam_service_name=renzheng   //pam验证文件的名称
如果设置有白名单以及黑名单,一定要确保userlist_deny=NO 这个注释或者等于NO

客户端登录测试
[root@s1 ~]# lftp 192.168.1.100 -u admin
口令: 
lftp admin@192.168.1.100:~> ls          
drwxr-xr-x    2 0        0               6 Apr 01  2020 pub

虚拟用户的操作权限

[root@ftp-server ~]# mkdir /etc/xuni    //创建一个目录
[root@ftp-server ~]# cd /etc/xuni/
注意:这里新建的文件要和虚拟用户一一对应,一个虚拟用户对于一个文件,文件的名称要和虚拟用户的名称一致,否则,创建的权限无效
[root@ftp-server xuni]# vim admin    //新建一个文件,写入如下内容
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

[root@ftp-server xuni]# vim /etc/vsftpd/vsftpd.conf   //编辑配置文件  写入如下内容
user_config_dir=/etc/xuni/

因为我们映射的用户是ftp,我们还要看看ftp对应的目录权限是否够
[root@ftp-server ~]# cd /var/
[root@ftp-server var]# ll |grep ftp (使用命令 chown修改所属用户为ftp)
drwxr-xr-x.  3 ftp  root   17 11月  6 20:53 ftp

客户端登录验证:
[root@s1 ~]# lftp 192.168.1.100 -u admin
口令:    
lftp admin@192.168.1.100:/> mkdir admin
mkdir 成功, 建立 `admin'
lftp admin@192.168.1.100:/> ls
drwx------    2 14       50              6 Nov 08 03:38 admin
drwxr-xr-x    2 0        0               6 Apr 01  2020 pub
drwx------    2 14       50              6 Nov 08 03:37 uu
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ball-4444

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值