centos7.6部署vsftpd服务实现一个用户一个访问目录

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版 50资产 7天
简介: 本文章分为2部分,分别是FTP的理论部分和实战部分FTP原理以及相关理论FTP文件传输协议,是典型的C/S结构的应用层协议,需要由服务端软件、客户端软件两部分共同实现文件传输功能。FTP文件传输协议提供文件上传和下载,可以在局域网使用,也可以在互联网使用。FTP属于应用层协议,同时也属于TCP,TCP的好处:安全、可靠、有连接、速度慢,通过ftp可以传输文件

FTP原理以及相关理论

FTP文件传输协议,是典型的C/S结构的应用层协议,需要由服务端软件、客户端软件两部分共同实现文件传输功能。


FTP文件传输协议提供文件上传和下载,可以在局域网使用,也可以在互联网使用。


FTP属于应用层协议,同时也属于TCP,TCP的好处:安全、可靠、有连接、速度慢,通过ftp可以传输文件


FTP连接及传输模式


ftp默认使用TCP协议的21号端口、20号端口与client进行通信,


20 号端口用于建立数据连接,然后传输文件(上传、下载)


21 号端口用户控制连接,用于发送命令信息,


1)主动模式


1 服务器主动发起


2 客户端想服务器21号端口建立ftp连接,如果需要传输数据,客户端以PORT命令告诉服务端,我开了一个端口(1024~65535),


3 服务器从20号端口想客户端开的某个端口发送请求并建立数据连接


2)被动模式


1 服务器等着


2 客户端主动发起请求(局域网的防火墙禁止主动模式)


3 客户端向服务端21端口建立ftp的控制连接,


4 当需要传输文件时,服务器以PASV命令告知客户端,我打开了某个端口


5 客户端向服务器的某端口发起数据连接


FTP传输模式


文本模式:ASCII 模式,以文本序列传输数据,适合纯文本


二进制模式:Binary 模式,以二进制序列传输数据,非纯文本:图片等


FTP的用户类型


1 匿名用户(无密码)

anonymous


ftp


2 本地用户


和系统有关,就是系统的普通用户


3 虚拟用户户


和系统无关,独立账户和密码,不能登录到系统中,非常安全,特别安全,老安全了


常见的 FTP 服务器程序


IIS、Serv-U


wu-ftpd、Proftpd


vsftpd(Very Secure FTP Daemon)


常见的FTP客户端程序


ftp 命令


CuteFTP、FlashFXP、LeapFTP、Filezilla


gftp、kuftp


用户列表文件


1 ftpusers


禁止登录到FTP服务器(里面的用户);不管在user_list文件是怎么样的,不能访问


2 user_list


包含可能禁止登录的用户

  1)  userlist_enable=YES/NO   //是否启用user_list用户列表
  2)  userlist_deny=YES/NO  //是否禁止user_list列表中的用户

举例

zhs用户用于访问FTP中的资源,zhs用户记录在user_list文件中,vsftpd配置选项中userlist_enable=YES;

userlist_deny=NO;然后zhs用户又存在ftpusers文件中,问zhs用户到底能不能访问FTP中的资源


vsftpd配置文件中的参数

用的全局配置项
  listen=YES/NO:是否以独立运行的方式监听服务
  listen_address=192.168.4.1:设置监听的 IP 地址
  listen_port=21:设置监听 FTP 服务的端口号
  write_enable=YES/NO:是否启用写入权限
  download_enable=YES/NO:是否允许下载文件
  userlist_enable=YES/NO:是否启用 user_list 列表文件
  userlist_deny=YES/NO:是否禁用 user_list 中的用户
  max_clients=0:限制并发客户端连接数
  max_per_ip=0:限制同一个IP 地址的并发连接数
常用的匿名 FTP 配置项
  anonymous_enable=YES:启用匿名访问,默认为YES
  anon_umask=022:匿名用户所上传文件的权限掩码;文件默认权限=666-022,结果为644;目录默认权限=777-022,结果为755
  anon_root=/var/ftp:匿名用户的 FTP 根目录,默认就是/var/ftp,如果更改,请设置好目录的属主,否则匿名用户无法访问
  anon_upload_enable=YES/NO:允许上传文件
  anon_mkdir_write_enable=YES/NO:允许创建目录
  anon_other_write_enable=YES/NO:开放其他写入权
  anon_max_rate=0:限制最大传输速率(字节/秒)
常用的本地用户 FTP 配置项
  local_enable=YES:是否启用本地系统用户,默认启用
  local_umask=022:本地用户所上传文件的权限掩码
  local_root=/var/ftp:设置本地用户的 FTP 根目录
  chroot_local_user=YES:是否将用户禁锢在主目录,不能切换其他目录,如:etc boot 等
  local_max_rate=0:限制最大传输速率(字节/秒)

实战部分


注意:如果出现问题可能是pam文件写的有问题或者db文件+用户密码文件没有给600权限。


实现一个用户使用一个访问目录,基于实际环境,例如销售部只能看销售部的文件,财务部只能看财务部的文件,还有一个公共目录,大家都可以看


1.关闭iptables、setenforce0(如果不关闭则在防火墙上允许20/21端口)


2.创建文本格式的用户名、密码列表(此文件中奇数行为用户名,偶数行为用户对应的密码)

vim /etc/vsftpd/vusers.list
lisi
123.com
zhangsan
456.com

3.创建Berkeley DB格式的数据库文件

cd  /etc/vsftpd
db_load -T -t hash  -f vusers.list vusers.db
file  vusers.db   //查看属性
  vusers.db: Berkeley DB (Hash, version 9, native byte-order)
chmod 600 /etc/vsftpd/vusers.*  (必做,否则会失败)

4.添加虚拟用户的映射账号、创建FTP根目录

useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 755 /var/ftproot/

5.为vsftpd服务添加虚拟用户支持

5.1.为虚拟用户建立pam认证文件

vim /etc/pam.d/vsftpd.vu
  #%PAM-1.0
  auth        required        pam_userdb.so db=/etc/vsftpd/vusers   
  account   required        pam_userdb.so db=/etc/vsftpd/vusers

5.2.修改vsftpd配置,添加虚拟用户支持

vim /etc/vsftpd/vsftpd.conf
  local_enable=YES
  write_enable=YES
  anon_umask=022
  guest_enable=YES
  pam_service_name=vsftpd.vu
  user_config_dir=/etc/vsftpd/vusers_dir

5.3.为不同虚拟用户建立独立的配置文件

mkdir vusers_dir
cd vusers_dir/

建立财务部的目录

vim lisi
local_root=/caiwu
anon_upload_enable=YES
anon_mkdir_write_enable=YES

建立销售部的目录

vim zhangsan
local_root=/xiaoshou
anon_upload_enable=YES
anon_mkdir_write_enable=YES

建立公共目录,使用匿名用户,只有下载权限没有写入权限

vim /etc/vsftpd/vsftpd.conf
增加
  local_root=/var/ftp

5.4重启服务即可

systemctl restart vsftpd

5.5验证image.png

目录
相关文章
|
3月前
|
Linux 网络安全 Apache
CentOS 7.2配置Apache服务httpd(上)
CentOS 7.2配置Apache服务httpd(上)
337 1
|
2月前
|
Oracle 关系型数据库 MySQL
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
204 2
|
3月前
|
监控 安全 Linux
CentOS7下安装配置ntp服务的方法教程
通过以上步骤,您不仅能在CentOS 7系统中成功部署NTP服务,还能确保其配置合理、运行稳定,为系统时间的精确性提供保障。欲了解更多高级配置或遇到特定问题,提供了丰富的服务器管理和优化资源,可作为进一步学习和求助的平台。
305 1
|
3月前
|
Linux PHP Apache
CentOS 7.2配置Apache服务httpd(下)
CentOS 7.2配置Apache服务httpd(下)
60 1
|
Linux
CentOS7下如何查看vsftpd服务的状态
CentOS7下如何查看vsftpd服务的状态 -------------------------------------------------------------- [root@localhost ~]# systemctl status vsftpd.
7932 0
|
安全 Linux 数据安全/隐私保护
谁再说不会搭建vsftpd,就把这个脚本给他扔过去!——CentOS7下一键脚本搭建虚拟用户模式的vsftpd服务器
谁再说不会搭建vsftpd,就把这个脚本给他扔过去!——CentOS7下一键脚本搭建虚拟用户模式的vsftpd服务器
444 0
谁再说不会搭建vsftpd,就把这个脚本给他扔过去!——CentOS7下一键脚本搭建虚拟用户模式的vsftpd服务器
|
安全 开发工具 数据安全/隐私保护
|
Linux 开发工具 数据安全/隐私保护
下一篇
开通oss服务