Vsftpd服务的部署及其优化

0.实验环境

  1. 新node1主机:hostname为node1
  2. 关闭selinux
  3. 配置好ip
  4. 搭建好软件仓库
  5. 安装lftp

1.ftp介绍

ftp:file transfer proto

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

2.vsftpd安装及启用

dnf install -y vsftpd   #server
dnf install -y lftp     #client
systemctl enable --now vsftpd   #开启vsftpd
systemctl status firewalld      #查看火墙状态
ss -antlupe | grep ftp          #查看端口
lftp 172.25.254.128             #本机登陆一下172.25.254.128可以成功查看,其他主机不行

rpm -qc vsftpd                  #查看配置文件
vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES         #开启匿名访问,其他主机可以
systemctl restart vsftpd
firewall-cmd --permanent --add-service=ftp      #火墙控制中加入ftp服务
firewall-cmd --reload
firewall-cmd --list-all

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

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

3.vsftpd基本信息

服务名称:vsftpd.service
配置目录:/etc/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
默认发布目录:/var/ftp

报错信息 解释
550 程序本身拒绝
553 文件系统权限限制
500 权限过大
530 认证失败

4.匿名用户访问控制

lftp 172.25.254.128             当访问ftp服务时没有加入用户认证为匿名访问
lftp 172.25.254.128 -u westos   本地用户访问

在这里插入图片描述

4.1登陆控制

12 anonymous_enable=YES | NO

4.2家目录控制

32 anon_root=/westosdir
  [root@node1 ~]# vim /etc/vsftpd/vsftpd.conf
  [root@node1 ~]# systemctl restart vsftpd
  [root@node1 ~]# mkdir /westosdir
  [root@node1 ~]# touch /westosdir/yxy
  [root@node1 ~]# lftp 172.25.254.128
  lftp 172.25.254.128:~> ls
  -rw-r--r--    1 0        0               0 Nov 21 03:18 yxy

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

4.3上传控制

anon_upload_enable=YES|NO

在这里插入图片描述

4.4下载控制

anon_world_readable_only=NO 匿名用户可以下载不能读的文件

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

4.5目录建立控制

anon_mkdir_write_enable=YES|NO

在这里插入图片描述

4.6删除重命名控制

anon_other_write_enable=YES|NO

在这里插入图片描述

4.7登录数量控制

max_clients=2

在这里插入图片描述

4.8上传速率控制

anon_max_rate=102400

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

5.本地用户访问

5.1登录控制

local_enable=NO|YES

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

5.2家目录控制

local_root=/test

在这里插入图片描述

5.3写权限控制

write_enable=NO|YES

在这里插入图片描述

5.4上传文件权限控制

local_umask=077

在这里插入图片描述

5.6用户登录控制

/etc/vsftpd/ftpusers 用户登录控制永久黑名单
永久黑名单无论怎样设定都是黑名单,从名单中删除可以解锁

在这里插入图片描述

/etc/vsftpd/user_list 用户登录控制默认黑名单
默认黑名单可以变为白名单

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

5.6 用户登陆白名单

userlist_deny=NO

设定/etc/vsftpd/user_list为白名单
不在名单中的用户不能登陆ftp

在这里插入图片描述

5.7 锁定用户到自己的家目录中

chmod u-w /home/* 避免与下面命令冲突
chroot_local_user=YES锁定用户到自己家目录

为了防止用户登录到跟目中中,需要把他锁定在家目录里

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

在这里插入图片描述

5.8锁定用户到自己的家目录中的白名单

chroot_local_user=YES锁定用户到自己家目录
chroot_list_enable=YES开启锁定家目录白名单
chroot_list_file=/etc/vsftpd/chroot_list

在这里插入图片描述

5.9锁定用户到自己的家目录中的黑名单

chroot_local_user=NO默认用户不锁定到自己家目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

在这里插入图片描述

6.虚拟用户访问

普通用户登录ftp会有资源浪费和开放权力过大的隐患,只需要借助ftp身份不需要开放过多的权限。因此可以为ftp服务来构建用户信息而不使用系统信息。虚拟用户即在当前系统中没有用户身份,在ftp程序中才承认这个身份。

ftp服务在用户登录时,有pam插件在用户名和密码与单名保持一致时允许登录。

6.1建立虚拟用户过程

  1. 建立认证文件模板
cd /etc/vsftpd/
vim authfile      #建立认证文件模板

 cat /etc/vsftpd/authfile
 user1
 123
 user2
 123
 user3
 123

在这里插入图片描述

  1. 加密认证文件
db_load -T -t hash -f authfile authfile.db  #加密认证文件
-T 转换 -t type -f 指定转换文件

 cat /etc/vsftpd/authfile.db
 ������8:��эh^123user2[root@node1 ~]# 

在这里插入图片描述

  1. 生成pam认证策略
cd /etc/pam.d
vim ftp-auth

[root@node1 ~]# cat /etc/pam.d/ftp-auth
account		required	pam_userdb.so db=/etc/vsftpd/authfile
auth		required	pam_userdb.so db=/etc/vsftpd/authfile
# requird 强制认证,pam_userdb.so 指定插件

在这里插入图片描述

  1. 指定认证策略文件
vim /etc/vsftpd/vsftpd.conf

139 pam_service_name=ftp-auth  #指定认证策略文件
140 guest_enable=YES		   #指定虚拟用户身份开启
141 guest_username=ftp		   #指定虚拟用户在ftp服务器上的用户身份为ftp

systemctl restart vsftpd

在这里插入图片描述

  1. 测试
    lftp 172.25.254.128 -u user1 虚拟用户登陆成功

在这里插入图片描述

6.2虚拟用户家目录的独立设定

  1. 建立虚拟用户家目录
mkdir -p /var/ftphome/user{
    
    1..3}
touch /var/ftphome/user1/user1file
touch /var/ftphome/user2/user2file
touch /var/ftphome/user3/user3file
mkdir -p /var/ftphome/user{
    
    1..3}/test
ls -lR /var/ftphome/

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

  1. 指定虚拟用户家目录
vim /etc/vsftpd/vsftpd.conf
 local_root=/var/ftphome/$USER
 user_sub_token=$USER
systemctl restart vsftpd

在这里插入图片描述

  1. 测试
    lftp 172.25.254.128 -u user1/2/3 ---> ls家目录改变

在这里插入图片描述

6.3虚拟用户配置独立

  1. 设定权限
chmod 775 /var/ftphome/user{
    
    1..3}/test
chgrp ftp /var/ftphome/user{
    
    1..3}/test
  1. 更改主配置文件
lftp 172.25.254.128 -u user1/2/3 都可以上传
vim /etc/vsftpd/vsftpd.conf
 37 #anon_upload_enable=YES
 38 #anon_other_write_enable=YES
 39 #anon_umask=022
 40 #anon_root=/westosdir
 41 #anon_world_readable_only=NO
149 user_config_dir=/etc/vsftpd/confdir
  1. 编写独立配置文件,使得只有user1可以上传
mkdir /etc/vsftpd/confdir
touch /etc/vsftpd/confdir/user1
vim /etc/vsftpd/confdir/user1
  1 anon_upload_enable=YES
systemctl restart vsftpd

在这里插入图片描述

  1. 测试
    lftp 172.25.254.128 -u user1可以上传,user2、user3不行

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46074899/article/details/109897704