ftp服务器部署

FTP的概念

FTP ( 文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议之一 , 它为系统提供了通过网络与远程服务器进行传输的简单方法。
在 RED HAT ENTREPRISE LINUX 7 中。 FTP 服务器包的名称为 VSFTPD , 它代表 Very Secure File TransferProtocolDamon 服务器名称也叫做 vsftpd

FTP的部署

服务端部署:

首先配置yum源
在这里插入图片描述

在这里插入图片描述
编辑文件vim haha.repo
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装vsftpd
在这里插入图片描述
安装成功
在这里插入图片描述

安装 lftp
在这里插入图片描述
开启vsftpd服务,并设置开机自启动
在这里插入图片描述
在这里插入图片描述

开启火墙,并添加ftp服务到火墙白名单
在这里插入图片描述
重新加载
在这里插入图片描述
查看,ftp服务已经添加到火墙白名单中
在这里插入图片描述
使用ftp访问主机(ls有内容显示,则代表登录成功,否则不成功)
在这里插入图片描述

关闭selinux

显示enforcing,则代表没有关闭

编辑selinux配置文件
在这里插入图片描述
将selinux的状态改为disabled
在这里插入图片描述
重启服务器(因为这个修改是内核级的,所以我们需要重启虚拟机)查看,修改成功
在这里插入图片描述

FTP服务的基本信息

软件安装包:vsftpd
默认发布目录:/var/ftp
协议接口:21/tcp
服务配置文件:/etc/vsftpd/vsftpd.conf
注意:编辑配置文件后,一定要记得重启服务
报错id的解析:
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开启
553 本地文件系统权限过小

FTP的安全部署

安全部署配置文件:/etc/vsftpd/vsftpd.conf

匿名用户的设定

通过编辑服务配置文件:/etc/vsftpd/vsftpd.conf,进行安全部署
为了方便后续的测试,给服务端新建一个用户,并设置密码
在这里插入图片描述
1.匿名用户
编辑以下配置文件

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES|NO    匿名用户是否可以登陆 (YES为可以登录)修改成NO,则匿名用户不能登录
systemctl restart vsftpd

编辑配置文件后,一定要重启服务以后就不再赘述
在这里插入图片描述
在这里插入图片描述
测试:
在这里插入图片描述

  1. 匿名用户上传

默认情况下,匿名用户是不能上传的
实现匿名上传的步骤:
step1编辑配置文件

vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES

step2在shell里
chgrp ftp /var/ftp/pub #匿名用户一般使用ftp用户的身份(安装ftp服务器后即产生该ftp用户)访问ftp服务器,所以需要将ftp目录的所有组改为ftp
chmod 775 /var/ftp/pub
在这里插入图片描述
测试
在这里插入图片描述

  1. ftp服务器家目录修改

新建一个目录xixi,并创建文件,若测试端登录后可以直接看到这些文件,则代表家目录修改成功

在这里插入图片描述
更改配置文件

vim /etc/vsftpd/vsftpd.conf
anon_root=/xixi

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

anon_umask=xxx

在这里插入图片描述
测试

匿名用户在服务器建立目录(注意:进入pub后进行创建)

anon_mkdir_write_enable=YES|NO

测试
在这里插入图片描述
5.匿名用户下载

anon_world_readable_only=YES|NO 参数NO表示匿名用户可以下载

测试
在这里插入图片描述
匿名用户删除

anon_other_write_enable=YES|NO

测试
在这里插入图片描述
匿名用户使用的用户身份和权限修改

测试

6.最大上传速率

anon_max_rate=102400

不限速情况下上传速率达到很大

测试

将最大上传速率改为102400

可以看到上传速率很慢
在这里插入图片描述
7.最大链接数

max_clients=1 表示最多有1个可以连接

测试
在这里插入图片描述
在这里插入图片描述

本地用户的设定

vim /etc/vsftpd/vsftpd.conf

.1.本地用户是否可以登录

local_enable=YES|NO 是|

测试
在这里插入图片描述

2.ftp是否对登录用户可写

write_enable=YES|NO

在这里插入图片描述

3.本地用户家目录修改(服务器中的内容为本地用户家目录中的内容)

local_root=/westos

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.本地用户上传文件权限

local-umask=xxx

在这里插入图片描述
在这里插入图片描述
5.限制本地用户浏览根目录,所有用户被锁在自己的家目录中

chroot_local_user=YES (将所有用户都锁住)
chmod u-w /home/*

在这里插入图片描述

名单建立

创建黑、白名单的目的:约束、允许某些特定用户登录系统,例如,一般禁止 root 登录 FTP,权限过高可能导致核心文件受到破坏

ftpusers:是真正意义上的黑名单,为什么这么说,因为这个名单不会受任何因素影响,也就是永久有效
user_list:可以是黑名单,也能变白,主要取决于 vsftpd.conf 中的 userlist_enable、userlist_deny 配置,可以有效,也能无效

可以有以下几种情况:
1.当 userlist_enable=YES 时,userlist_deny 才能起作用;如果 userlist_deny=NO,意味着 user_list 是一个白名单,如果 userlist_deny=YES,则 user_list 是一个黑名单。
2.如果 userlist_enable=NO 时,user_list 是一个白名单,本地用户也能登录,需要特别提醒的是,如果你启用白名单,匿名用户则无法登录FTP,即使在 vsftpd.conf 设置 anonymous_enable = YES 也不行,除非在 user_list 中添加 ftp 或者 anonymous ,才能进行匿名登录,
6.用户浏览黑名单建立 (只锁住黑名单里的)

1.在shell中
vim /etc/vsftpd/chroot_list 添加某些用户
2.在配置文件里
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
step1先建 lee tom用户
在这里插入图片描述
在这里插入图片描述
tom用户可以浏览根目录
在这里插入图片描述
在这里插入图片描述

用户白名单的建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 此时上述创建的文件,就会变成白名单,只有白名单的人不会被锁住,可以浏览根目录
在这里插入图片描述
之前的黑名单用户lee变为白名单用户
在这里插入图片描述

限制本地用户登录

vim /etc/vsftpd/ftpusers #用户黑名单,永久黑

在这里插入图片描述
在这里插入图片描述

vim /etc/vsftpd/user_list  #临时黑

tom临时变成黑名单的用户
在这里插入图片描述
在这里插入图片描述

临时黑变白名单
编辑文件
userlist_deny=NO 在配置文件里设置参数

在这里插入图片描述

虚拟用户的管理

虚拟用户的创建
1.3A安全机制:帐号,密码和用户权限。
也就是 账号,认证(证明帐号是你的 pam认证)授权。

2.虚拟用户就是ftp的用户身份,但是在系统中没有,要想在系统中进行操作,还需再使用系统中真实存在的身份ftp。

创建虚拟账号身份

vim /etc/vsftpd/haha#文件名称任意
添加
user1  用户1
123  密码
user2
123
user3
123

db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db  #加密文件

在这里插入图片描述
在这里插入图片描述

创建认证策略

vim /etc/pam.d/haha  #文件名称随意
添加
account  required  pam_userdb.so  db=/etc/vsftpd/haha
auth   required   pam_userdb.so db=/etc/vsftpd/haha
字段1:账号    密码   
字段2:请求允许访问或者拒绝
字段3:验证程序 ,pam_userdb.so  是系统的插件
字段4: 验证是否与该文件内容匹配, 不用给文件后后面加db 后缀,它会自动加db后缀。

在这里插入图片描述
编辑vsftpd配置文件使更改生效

vim /etc/vsftpd/vsftpd.conf
pam_service_name=haha
guest_enable=YES

在这里插入图片描述
在这里插入图片描述

虚拟用户的授权

虚拟用户身份指定

guest_username=ftpuser
chmod u-w /home/ftpuser

虚拟用户家目录独立设定(使虚拟用户登录进去不再是ftp用户的默认家目录)

mkdir /var/ftpuserdir/user{1..3} -p
mkdir /var/ftpuserdir/user{1..3}/pub -p
touch /var/ftpuserdir/user1/user2file
touch /var/ftpuserdir/user2/user2file
touch /var/ftpuserdir/user3/user3file

在这里插入图片描述

编辑配置文件,添加

local_root=/var/ftpuserdir/$USER
user_sub_token=$USER

在这里插入图片描述
在shell里

chgrp ftp /var/ftpuserdir -R
chmod 775 /var/ftpuserdir/user{1..3}/pub

在这里插入图片描述
在shell里直接echo /home/U S E R 就 可 以 输 出 用 户 的 家 目 录 , 除 了 r o o t , r o o t 在 / r o o t 里 。 但 是 我 们 在 文 件 中 编 写 , 环 境 是 f t p , f t p 并 不 直 接 识 别 USER 就可以输出用户的家目录,除了root,root在/root里。 但是我们在文件中编写,环境是ftp,ftp并不直接识别USERroot,root/rootftpftp语法,加这个user_sub_token是为了让ftp识别操作

虚拟账号配置独立(想让哪个用户可以干什么,更安全)
首先应该先将vsftpd的配置文件里公共的权限都关闭

mkdir -p /etc/vsftpd/user_conf
vim  /etc/vsftpd/user_conf/user1  #此文件中设定的所有参数,此文件优先级最高,此文件表示user1具有的权限
添加你想让user1具有的权限,如:
anon_upload_enable=YES  #让它可以下载文件

在这里插入图片描述
在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf
添加
user_config_dir=/etc/vsftpd/user_config

在这里插入图片描述
在这里插入图片描述
注意:

本文中只有修改了配置文件,均要执行systemctl restart vsftpd 重启让配置生效.


版权声明:本文为weixin_44791884原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。