vsftpd服务的部署

1、服务vsftpd的介绍

         vsftpd全称为very secure FTP daemon (非常安全的FTP进程),比FTP更安全,是一种守护进程, 更侧重安全;FTP全称为File Transfer Protocol 文件传输协议的缩写,属于C/S架构,基于tcp的20、21端口,工作模式:服务器工作在主动模式,主动联系客户端 (tcp,20端口),服务器工作在被动模式,客户端联系服务器(tcp,21端口)

  • 用户认证:系统用户、虚拟用户、 匿名用户;这里我们使用系统用户
  • 数据传输:sftp提供的的基于ssh协议的ftp, ftps提供的基于ssl的ftp
  • 响应码:1xx信息码, 2xx成功状态码,3xx进一步提示补全信息的状态码,4xx客户端错误,5xx服务器端错误
  • 认证文件及认证机制:认证文件/etc/pam.d/vsftpd,模块化文件/lib64/libnss*, /usr/lib64/libnss*,配置文件:/etc/nsswitch.conf;认证框架/lib64/security/pam*.so,配置文件/etc/pam.conf和/etc/pam.d/*
  • 服务脚本/etc/rc.d/init.d/vsftpd,vsfptd 配置文件/etc/vsftpd/vsftpd.conf,vsftpd 主程序文件/usr/sbin/vsftpd,vsfptd 数据文件/var/ftp
  • 用户访问服务时禁锢在家目录下chroot_list_enable=YES,chroot_list_file=/etc/vsftpd/chroot_list(注意chroot_list文件格式为每行一个用户
  • 欢迎信息的定义:banner_file=/path/to/some_banner_file,ftp_banner=some string, dirmessage_enable=yes,然后在ftp用户的家目录下创建.messages文件
  • 控制用户登陆的机制: /etc/vsftpd/ftpusers中的用户都不允许使用ftp服务,这是在/etc/pam.d/vsftpd中定义
  • 连接限制:max_clients最大并发连接数,max_per_ip每IP可同时发起并发请求
  • 传输速率控制: local_max_rate本地用户的最大传输速率,单位是“字节/秒”
  • 上传文件的umask:local_umask本地用户上传文件的umask

2、服务的部署

2.1、系统配置

  1C 2G 40G 系统centos7.6

2.2、部署

#执行以下命令进行部署
yum -y install vsftpd

 2.3、配置文件说明

#禁用匿名用户
anonymous_enable=NO
#启用本地用户
local_enable=YES
#用户拥有写的权限
write_enable=YES
#设置用户新建目录的初始权限777-022=755,文件666-022=644
local_umask=022
#ftp用户登陆欢迎信息,在用户家目录.message下
dirmessage_enable=YES
#记录上传下载的情况,默认为/var/log/xferlog
xferlog_enable=YES
#日志文件将以标准 xferlog 的格式书写
xferlog_std_format=YES
#所有用户被限制在家目录下
chroot_list_enable=YES
#指定限制用户的目录
chroot_list_file=/etc/vsftpd/chroot_list
#vsftpd 是以 standalone 的方式来启动
listen=YES
#ipv6不监听
listen_ipv6=NO
#指定vsftpd服务器的ip
pasv_address=外网ip
#设置PAM认证模块名称
pam_service_name=vsftpd
#仅允许user_list用户访问ftp服务
userlist_enable=YES
userlist_deny=NO
#使用tcp_wrqppers作为主机访问控制方式
tcp_wrappers=YES
#开始被动模式
pasv_enable=YES
#被动模式的端口范围
pasv_min_port=10222
pasv_max_port=10333
#关闭pasv检查,用到vpn传输需要打开此选项
pasv_promiscuous=YES

2.4、添加ftp用户脚本

#!/bin/bash
:<<EOFWW
@brief: FTP用户添加
@author: ww
@data: 2022-04-18
@usage: ./useradd.sh
测试用户目录:/mnt/ftp/test/
生产用户目录:/mnt/ftp/prod/
生产SFTP用户目录:/mnt/sftp/prod/
示例:./useradd.sh 目录 用户 用户密码
EOFWW

userdir=$1
user=$2
passwd=$3

function user_add(){


useradd -s /sbin/nologin -d $userdir $user
echo "$passwd"|passwd --stdin $user

echo $user >> /etc/vsftpd/user_list
echo $user >> /etc/vsftpd/chroot_list

service vsftpd restart

}
user_add