Linux-Vsftpd服务手册

1 FTP、Vsftp介绍

  •   1.1 FTP介绍

        FTP协议,即文件传输协议(File Transfer Protocol),是一种用于在网络上进行文件传输的协议。它是一种传输文件的标准方式,可以将文件在网络上的不同计算机之间进行传递和下载。FTP协议是TCP/IP协议族中的一个应用层协议。它利用客户端-服务器模型,通过两个不同的端口进行通信。FTP客户端通过21号端口连接到FTP服务器,然后在20号端口上进行数据传输。FTP协议支持多种认证方式,包括明文、口令、SSL/TLS等。FTP在文件传输方面已经得到广泛的应用,它被用于管理网站网页,进行软件升级和备份等。 

        FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。
目前主流的FTP服务器端软件包括: Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、FileZilla Server等软件,其中Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd。

  •   1.2 Vsftp介绍

        VSFTP,全称为Very Secure FTP,是一种高度安全的FTP服务器软件。它是一款针对安全和性能进行优化的FTP服务器,拥有速度快、稳定、易用和安全性高的特点。VSFTP是在GPL许可证下发布的自由软件,可以在大多数类UNIX系统中使用。VSFTP支持IPv6、SSL/TLS加密传输,同时还提供了多种认证方式,包括本地用户、PAM、LDAP等等。同时,VSFTP也支持虚拟用户和虚拟目录,便于管理员进行用户管理。总之,VSFTP是一款功能强大且安全性高的FTP服务器软件,深受系统管理员和开发者的欢迎。

参考:https://blog.csdn.net/m0_64304713/article/details/133790019


2 概念

  •   2.1 前言

        本文不参与SELinux相关的配置。如果开启SELinux请自行设置相关策略。

        getsebool -a | grep ftp获取SELinux所有与ftp相关的安全策略,setsebool命令设置SELinux跟ftp相关的安全策略。 

        ftp服务有默认两个端口,21和20,21端口是用来建立连接的,也就是控制通道,主要用来登录、切换目录等等操作,20端口是用来传输数据的,也就是数据通道。

  •   2.2 三种认证(登录)模式

  1. 匿名开放模式:任何人都可以登录,不安全
  2. 本地用户模式:使用系统中的真实的用户与密码登录,较方便,较安全。但是被黑客获取到账号密码,就可以畅通无阻的登录FTP服务。
  3. 虚拟用户模式:最安全,该模式为FTP服务单独创建用户数据库,这些用户不是真实存在与系统之中的,而是寄宿在一个真实的系统用户之下。即使系统中的用户信息被泄露,对FTP服务也没有影响。
  • 2.3 两种服务模式

  1. 主动模式(PORT):当客户端与控制通道(21)建立连接后,服务器返回给客户端自己的数据通道端口(20)。服务器从端口主动向客户端建立数据传输通道。
  2. 被动模式(PASV)(默认):当客户端与控制通道(21)建立连接后,服务器随机返回一个高位端口(如30000-40000)给客户端,客户端根据返回的端口主动向服务器连接数据传输通道。

3 配置介绍

  • 3.1 主要配置文件说明

配置文件路径说明
/etc/vsftpd/vsftpd.confVsftp服务的核心配置文件
/etc/pam.d/vsftpd

Vsftp服务使用pam安全模块时相关的策略文件

/etc/vsftpd/ftpusersPAM层黑名单列表,是 PAM 模块 (/etc/pam.d/vsftpd) 所指定的那个无法登入的用户配置文件
/etc/vsftpd/user_list

应用层黑/白名单列表,Vsftp服务自定义的列表,具体是黑名单还是白名单由核心配置文件决定

/var/ftp/Vsftp服务预设的匿名用户的根目录
  • 3.2 核心配置

参数设定值默认值说明
connect_from_port_20=YES|NOYES是否使用20端口进行数据传输
listen=YES|NONOFTP服务的运行模式,YES表示独立守护进行模式,NO表示通过超级服务器。
listen_port=2121FTP服务建立连接的端口,FTP文件分为连接端口(发送命令)和数据传输(上传、下载数据)端口。
pasv_enable=YES|NOYES是否使用PASV工作模式(被动模式)
use_localtime=YES|NONO是否使用本地时间作为FTP服务的时间,NO表示使用GMT时间
write_enable=YES|NOYES用户是否拥有写入权限,全局设置。
connect_timeout=6060PORT模式(主动模式)下,与客户端建立数据连接的超时时间(秒)
accept_timeout=6060PASV模式(被动模式)下,等待客户端建立数据连接的超时时间(秒)
data_connection_timeout=6060数据传输(上传/下载)通道连接超时时间,超过时间则断开连接(命令和数据连接都会断开)
idle_session_timeout=300300多长时间不对FTP服务器进行任何操作,则断开该FTP连接(秒)
max_clients=00允许的最大连接数,为0则表示不受限制
max_per_ip=00设置每个IP允许与FTP服务器同时建立连接的数目,为0则表示不受限制
pasv_min_port=0 pasv_max_port=00在PASV模式(被动模式)下,数据连接可以使用端口的范围。为0则表示任意端口
ftpd_banner=文字说明用来定义欢迎话语的字符串,字符串形式
banner_file=/path/file用来定义欢迎话语的字符串,文件形式
chroot_local_user=YES|NONO是否将所有用户限制在主目录,YES启用(启用时要把allow_writeable_chroot也设置为YES才能写入),该配置可以防止用户访问系统中的其他文件和目录,从而提高系统的安全性。
allow_writeable_chroot=YES|NONO表示是否允许在chroot环境中创建可写文件,write_enable=YES时有效
chroot_list_enable=YES|NONO是否启动限制用户的名单
chroot_list_file=/etc/vsftpd/chroot_list当chroot_local_user=YES时,表示不被限制在主目录下的用户是哪些;当chroot_local_user=NO时,表示要被限制在主目录下的用户是哪些。
userlist_enable=YES|NONO是否启用/etc/vsftpd/user_list文件
userlist_deny=YES|NOYES决定user_list文件中的用户是否能够访问FTP服务器;
设置为YES,则vsftpd.user_list文件中的用户不允许访问FTP;
若设置为NO,则只有vsftpd.user_list文件中的用户才能访问FTP;
userlist_file=/etc/vsftpd/user_list控制用户访问FTP的文件,里面写着用户名称。一个用户名称一行
xferlog_enable=YESYES是否开启日志功能
xferlog_file=/var/log/vsftpd.log日志文件的路径
ascii_download_enable=YES|NONO设置是否启用ASCII 模式下载数据
ascii_upload_enable=YES|NONO设置是否启用ASCII 模式上传数据
tcp_wrappers=YES|NOYES设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制;启用,则vsftpd会检查/etc/hosts.allow 和/etc/hosts.deny 中的配置,来决定请求连接的主机,是否允许访问该FTP服务器
pam_service_name=vsftpdvsfpd设置PAM使用的名称,在/etc/pam.d/vsfpd目录下
local_root=/var/ftp默认情况下,用户登录后会进入自己的家目录(如 /home/username)。通过设置 local_root,可将所有用户强制切换到指定目录
nopriv_user=ftpsecureftpsecurevsftp服务的非特权系统用户。意思是vsftp服务以哪个系统用户执行

4 用户配置

  • 4.1匿名模式

  • 4.1.1 配置参数

参数设定值默认值说明
anonymous_enable=YES|NOYES是否允许匿名登录
anon_world_readable_only=YES|NOYES是否允许匿名者下载可阅读文件
anon_upload_enable=YES|NONO是否允许匿名者上传文件,只有在write_enable=YES时,此项才有效。匿名用户必须要有对上层目录的写入权
anon_mkdir_write_enable=YES|NONO是否允许匿名者创建目录,只有在write_enable=YES时,此项才有效。匿名用户必须要有对上层目录的写入权
anon_other_write_enable=YES|NONO允许匿名者拥有上传或者建立目录之外的权限;如,删除或者重命名。只有在write_enable=YES时,此项才有效。匿名用户必须要有对上层目录的写入权
deny_email_enable=YES|NONO启动这项功能,则必须提供一个文件/etc/vsftpd/banner_emails,内容为email address;
若是使用匿名登入,则会要求输入email address;
若输入的email address 在此档案内,则不允许进入;
banned_email_file=/etc/vsftpd/banned_emails用来输入email address,只有在deny_email_enable=YES时,才会使用到此文件。
no_anon_password=YES|NONO值为YES时,则使用匿名登入时,不会询问密码
anon_max_rate=00设置匿名登入者使用的最大传输速度,单位为字节(B/s),0 表示不限制速度
anon_umask=077077匿名者上传或新增文件、目录时,文件默认的权限。077表示权限600。022表示权限644。
anon_root=/var/ftp匿名用户的根目录,默认/var/ftp

  • 4.2 本地用户

  • 4.2.1 配置参数

参数设定值默认值说明
local_enable=YES|NOYES是否允许本地用户的登录
local_max_rate=00本地用户使用的最大传输速度,单位为B/s,0 表示不限制速度
local_umask=022022本地用户上传的文件默认权限

4.3 虚拟用户

4.3.1 配置参数

参数设定值默认值说明
guest_enable=YES|NONO是否启用虚拟用户模式
guest_username=virtual指定虚拟用户要寄宿在哪个本地用户下
virtual_use_local_privs=NONO是否继承本地用户的权限模型,如果该参数为YES,则配置权限时应使用local_xx,如果为NO,则配置权限时用使用anon_xx
user_config_dir=/etc/vsftpd/vconf

指定虚拟用户的配置目录。在这个目录下配置虚拟用户的权限,如:为test用户配置权限

/etc/vsftpd/vconf/test:

local_root:虚拟用户的根目录

local_max_rate:虚拟用户的最大下载速度

anon_upload_enable:虚拟用户是否允许上传文件

4.3.2 配置教程

  • 1. 创建一个用户,用于作为虚拟用户挂载的本地用户
useradd -s /sbin/nologin vu
  • 2. 创建虚拟用户
vi /etc/vsftpd/vuser
#输入账号和密码,奇数行为账号,偶数行为密码
test
pwd123
admin
123456

#输入完毕后把文本形式的账号转为Berkeley DB数据库形式
db_load -T -t hash -f /etc/vsftpd/vuser vuser.db
#-f            指定文件
#-T            允许Berkeley DB的应用程序使用文本格式转换的DB数据文件
#-t hash       读取文件的方法

#这时/etc/vsftpd目录下就会存在一个vuser.db的账号数据库
  • 3. 创建认证方式
vi /etc/pam.d/vsftpd.vu

#输入内容,db参数对应刚刚生成的vuser.db文件,尾缀.db不写
auth   required   pam_userdb.so db=/etc/vsftpd/vuser
account   required   pam_userdb.so db=/etc/vsftpd/vuser    #确保账号存在于数据库中
  • 4. 配置核心参数 
vi /etc/vsftpd/vsftpd/conf

#输入内容
anonymous_enable=NO        #禁止匿名模式
local_enable=YES           #允许本地用户登录,必须,因为虚拟用户是寄宿在一个真实的用户下
write_enable=YES           #设置可写权限
guest_enable=YES           #开启虚拟用户模式,必须
guest_username=vu          #指定虚拟用户要寄宿在哪个真实的用户下,必须,对应步骤1创建的用户
allow_writeable_chroot=YES #允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
pam_service_name=vsftpd.vu #指定PAM认证文件,必须,对应步骤3创建的认证方式,本地用户和虚拟用户不能同时登录、因为认证方式只有一种,本地用户默认认证方式为vsftpd
user_config_dir=/etc/vsftpd/vconf #虚拟用户的配置文件目录,在步骤5配置参数

#配置虚拟用户全局权限
anon_max_rate=1048576     #给所有虚拟用户限速为1MB
#......
  • 5. 配置虚拟用户权限
#在步骤4已经指定虚拟用户的配置目录

#创建配置目录
mkdir /etc/vsftpd/vconf
mkdir /etc/vsftpd/vconf/test    #对应步骤2创建的test用户
mkdir /etc/vsftpd/vconf/admin   #对应步骤2创建的admin用户

#创建虚拟用户根目录,并且设置权限
mkdir /etc/vsftpd/vdata
chmod 777 /etc/vsftpd/vdata

#为test用户单独配置权限,单独配置的权限优先级高于全局权限,如果要设置全局权限就写到核心配置文件(/etc/vsftpd/vsftpd.conf)里
vim /etc/vsftpd/vconf/test

#写入内容:
local_root=/etc/vsftpd/vdata         #为虚拟用户配置根目录,不配置默认为vu的home目录
anon_upload_enable=YES               #允许上传文件
anon_umask=022                       #上传的文件默认权限
anon_mkdir_write_enable=YES          #允许创建目录
anon_other_write_enable=YES          #允许其他权限
#......

#输入:wq保存,配置完毕!
#admin用户的权限就不单独配置了,原理一样
  • 然后重启服务,完毕! 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值