vsFTP 基础实战
vsFTP登录方式及FTP数据连接
FTP可以有三种登入方式分别是:
- 匿名(anonymous)登录方式:不需要用户密码,匿名用户默认全部都映射
ftp
用户,其目录在/var/ftp
- 本地用户登入:使用本地用户和密码登入,使用的是
PAM
认证(/etc/pam.d/vsftpd
),其默认目录为系统用户的家目录
- 虚拟用户方式:也是使用用户和密码登入,但是该用户不是linux中创建的用户
FTP的两个连接,分别是命令连接和数据连接,其中数据连接的建立方式又分为主动和被动连接两种:
FTP服务端会监听2个端口, 控制进程20,数据进程21(主动模式) 数据连接,站在服务器角度,有2种模式:
主动模式:ftp server从20端口主动向客户端发起连接,由于源端口固定,所以适用于模式防火墙模式.
被动模式:ftp server被动等待客户端来连我的这个端口(控制连接后会告知会将passive ip/port告知了客户端) 一般情况下默认都是被动模式
vsFTP安装及其程序环境
源码和二进制包下载地址:https://pkgs.org/download/vsftpd
主要文件目录:
- 主程序:
/usr/sbin/vsftp
- 启动脚本文件:
/etc/rc.d/init.d/vsftpd
- 系统服务单元目录:
/usr/lib/systemd/system/vsftpd.service
- 主配置文件:
/etc/vsftp/vsftp.conf
/etc/pam.d/vsftpd
:PAM认证文件(此文件中file=/etc/vsftpd/ftpusers
字段,指明阻止访问的用户来自该文件中的用户)
/etc/vsftpd/ftpusers
:禁止使用vsftpd的用户列表文件【黑名单】
/etc/vsftpd/user_list
:禁止或允许使用vsftpd的用户列表文件,这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf
中设置userlist_deny=YES
)下也不能访问FTP服务器,在设置了userlist_deny=NO
时,仅允许user_list中指定的用户访问FTP服务器
- 匿名用户数据根目录:
/var/ftp
- 匿名用户的下载上传目录:
/var/ftp/pub
此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)
- vsFTP的日志文件:
/etc/logrotate.d/vsftpd.log
vsFTP配置文件参数
基本选项
FROM:https://www.jb51.net/article/94223.htm
欢迎语设置
dirmessage_enable=YES/NO(YES)
:如果启动这个选项,那么使用者第一次进入一个目录时,会检查该目录下是否有.message这个档案,如果有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。默认值为开启。
message_file=.message
:设置目录消息文件,可将要显示的信息写入该文件。默认值为.message。
banner_file=/etc/vsftpd/banner
:当使用者登入时,会显示此设定所在的档案内容,通常为欢迎话语或是说明。默认值为无。如果欢迎信息较多,则使用该配置项。
ftpd_banner=Welcome to AGou's FTP server
:这里用来定义欢迎话语的字符串,banner_file是档案的形式,而ftpd_banner 则是字符串的形式。预设为无。
限制最大连接数和传输速率
max_client
:用于设置FTP服务器所允许的最大客户端连接数,值为0时表示不限制。例如max_client=100
表示FTP服务器的所有客户端最大连接数不超过100个。
max_per_ip
: 用于设置对于同一IP地址允许的最大客户端连接数,值为0时表示不限制。例如max_per_ip=5
表示同一IP地址的FTP客户机与FTP服务器建立的最大连接数不超过5个。
local_max_rate
: 用于设置本地用户的最大传输速率,单位为B/s,值为0时表示不限制。例如local_max_rate=500000
表示FTP服务器的本地用户最大传输速率设置为500KB/s.
anon_max_rate
:用于设置匿名用户的最大传输速率,单位为B/s,值为0表示不限制。例如ano_max_rate=200000
,表示FTP服务器的匿名用户最大传输速率设置为200KB/s.
指定用户的权限设置
vsftpd.user_list
文件需要与vsftpd.conf
文件中的配置项结合来实现对于vsftpd.user_list
文件中指定用户账号的访问控制:
(1)设置禁止登录的用户账号(黑名单)
当vsftpd.conf
配置文件中包括以下设置时,vsftpd.user_list
文件中的用户账号被禁止进行FTP登录:
userlist_enable设置项设置使用vsftpd.user_list文件,userlist_deny设置为YES表示vsftpd.user_list文件用于设置禁止的用户账号。
(2)设置只允许登录的用户账号(白名单,建议方式)
当vsftpd.conf
配置文件中包括以下设置时,只有vsftpd.user_list
文件中的用户账号能够进行FTP登录:
控制用户是否允许切换到上级目录
在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录:
chroot_list_enable=YES/NO(NO)
:设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
chroot_list_file=/etc/vsftpd.chroot_list
:用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
chroot_local_user=YES/NO(NO)
:用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
通过搭配能实现以下几种效果:
①当chroot_list_enable=YES
,chroot_local_user=YES
时,在/etc/vsftpd.chroot_list
文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
②当chroot_list_enable=YES
,chroot_local_user=NO
时,在/etc/vsftpd.chroot_list
文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③当chroot_list_enable=NO
,chroot_local_user=YES
时,所有的用户均不能切换到其他目录。
④当chroot_list_enable=NO
,chroot_local_user=NO
时,所有的用户均可以切换到其他目录。
设置用户组
简单示例:
说明:由于本地用户登录FTP服务器后进入自己主目录,而ftpuser1
,ftpuser2
, ftpuser3
对主目录/home/ftpuser
分配的权限不同,所以通过FTP访问的权限也不同,ftpuser1
访问权限为:上传,下载,建目录;ftpuser2
,ftpuser3
访问权限为下载,浏览,不能建目录和上传。实现了群组中用户不同访问级别,加强了对FTP服务器的分级安全管理。
连接超时设定
配置空闲的用户会话的中断时间:如下配置将在用户会话空闲5分钟后被中断,以释放服务器的资源
配置空闲的数据连接的中断时间:如下配置将在数据空闲连接1分钟后被中断,同样也是为了释放服务器的资源
配置客户端空闲时的自动中断和激活连接的时间:如下配置将使客户端空闲1分钟后自动中断连接,并在30秒后自动激活连接
虚拟用户使用 pam_mysql.so 模块认证
- 创建用户,并建立数据库
- 为虚拟用户添加家目录
- 安装认证所需的
pam_mysql.so
模块
- 建立pam认证所需文件
- 修改vsftp的配置文件
- 为虚拟用户添加所需权限(对用户单独配置权限)
出现的一些小问题:
- 登录被拒绝,解决方法:
- 使用
ls
命令出现226 Transfer done (but failed to open directory).
无法使用等问题,解决方法: