FTP之vsftpd
1. FTP概述
1. ftp连接及传输模式
(1)控制连接
TCP21,用于发送FTP命令信息
(2)数据连接
TCP20,用于上传、下载数据
(3)数据连接的建立类型
主动模式:服务端从20端口主动向客户端发起连接
命令连接:客户端>1024端口 --> 服务器 21端口
数据连接:客户端>1024端口 <-- 服务器 20端口
被动模式:服务端在指定范围内某个端口被动等待客户端连接
命令连接:客户端>1024端口 --> 服务器 21端口
数据连接:客户端>1024端口 --> 服务器>1023端口
2. FTP传输模式
(1)文本模式
ASCII模式,以文本序列传输数据
(2)二进制模式
Binary模式,以二进制序列传输数据
3. FTP用户的类型
(1)匿名用户
anonymous或ftp
(2)本地用户
账号名称、密码等信息保存在passwd、shadow文件
(3)虚拟用户
使用独立的账号/密码数据文件
4. 常见的FTP服务器程序
IIS、Serv-U
wu-ftpd、Proftpd
vsftpd(Very Secure FTP Daemon)
5. 常见的FTP客户端程序
ftp命令
CuteFTP、FlashFXP、LeapFTP、Filezilla
gftp、kuftp
2. Vsftpd使用
1. Vsftpd软件包
(1)官方站点
http://vsftpd.beasts.org/
(2)主程序
/usr/sbin/vsftpd
(3)服务名
vsftpd
(4)用户控制列表文件
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
(5)主配置文件
/etc/vsftpd/vsftpd.conf
2. 安装后目录解读
解读生成的目录

没有截完!
(1)用户控制列表文件
/etc/vsftpd/ftpusers 不允许登录ftp的系统账号
/etc/vsftpd/user_list 如果userlist_deny=NO,只此文件的用户登录;如果userlist_deny=YES,不允许此文件的用户登录ftp
(2)主配置文件
/etc/vsftpd/vsftpd.conf
(3)利用service启动的执行文件
/etc/rc.d/init.d/vsftpd
(4)ftp用户默认工作目录(宿主目录)
/var/ftp 匿名用户登录的根目录
(5)ftp用户默认登录的目录
/var/ftp/pub
( 6 )vsftpd使用PAM模块时的相关配置文件。主要用来作为身份认证之用,还有一些用户身份的抵挡功能
可以参考https://blog.csdn.net/yingqianmeng/article/details/100901401
3. vsftpd.conf配置文件详解
#是否允许匿名登录vsftpd anonymous_enable=NO #是否允许匿名用户上传数据 anon_upload_enable=NO #是否允许匿名用户创建目录 anon_mkdir_write_enable=NO #允许本地用户登录vsftpd local_enable=YES #如果你允许用户上传数据 write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO #当用户进入某个目录时,会显示该目录需要注意的内容 dirmessage_enable=YES #记录上传与下载信息 xferlog_enable=YES #设定日志路径 xferlog_file=/ftp/log/vsftpd.log #设定格式 xferlog_std_format=YES #ftp-data的端口 connect_from_port_20=YES chown_uploads=NO async_abor_enable=YES #设定为yes,client使用ASCII格式上传文件 ascii_upload_enable=YES #设定为yes,client使用ASCII格式下载文件 ascii_download_enable=YES #一些文字说明 ftpd_banner=Welcome to blah FTP service. #是否将使用者限制在自己的家目录之内 chroot_local_user=YES #是否启用chroot写入列表的功能 chroot_list_enable=YES #设置列表文件 chroot_list_file=/etc/vsftpd.chroot_list #vsftpd以独立方式运行 listen=YES #ftp命令通道端口 listen_port=5521 tcp_wrappers=YES #任何实体账号均会假设为guest用户 guest_enable=YES #指定访客的身份 guest_username=vftp user_sub_token=$USER user_config_dir=/etc/vsftpd/vconf pam_service_name=vsftpd #是否使用vsftpd的抵挡机制处理不受欢迎的账号 userlist_enable=YES #上面参数设置YES以后,这个参数才会生效 userlist_deny=YES #上面参数设置YES以后,这个参数才生效 userlist_file=/etc/vsftpd/user_list tcp_wrappers=YES #是否使用本地时间 use_localtime=YES
#限速配置单位是Bps,是每秒字节大小 anon_max_rate=500000 #同一个IP同一时间可以允许多少联机 max_per_ip=5 #同一时间最多有多少client可以连上vsftpd max_clients=5 #支持数据流的被动模式 pasv_enable=YES #在主动模式下,在60秒内得不到客户端的相应,则不等待并强制断线 connect_timeout=60 #在被动模式下,等待client60秒无回应,就强制断线 accept_time=60 #如果服务器与客户端的数据连接已经成功建立,但是由于线路问题导致300秒内还是无法顺利的完成数据的传送,那么客户端的连接会被我们的vsftpd强制删除 data_connection_timeout=300 #使用者在300秒内都没有命令动作,强制脱机 idle_session_timeout=300 #设置被动连接的端口范围 pasv_min_port=0, pasv_max_port=0
4. 匿名用户配置
anonymous_enable=YES <==支持匿名者的登入使用 FTP 功能 # 2. 与实体用户有关的设定 local_enable=YES <==支持本地端的实体用户登入 write_enable=YES <==允许用户上传数据 (包括档案与目录) local_umask=022 <==建立新目录 (755) 与档案 (644) 的权限 # 3. 与服务器环境有关的设定 dirmessage_enable=YES <==若目录下有 .message 则会显示该档案的 内容 xferlog_enable=YES <==启动登录文件记录,记录于 /var/log/xferlog connect_from_port_20=YES <==支持主动式联机功能 xferlog_std_format=YES <==支持 WuFTP 的登录档格式 listen=YES <==使用 stand alone 方式启动 vsftpd pam_service_name=vsftpd <==支持 PAM 模块的管理 userlist_enable=YES <==支持 /etc/vsftpd/user_list 档案内的 账号登入管控! tcp_wrappers=YES <==支持 TCP Wrappers 的防火墙机制
5. 本地用户配置
# 1. 与匿名者相关的信息,在这个案例中将匿名登录取消: anonymous_enable=NO # 2. 与实体用户相关的信息:可写入,且 umask 为 002 喔! local_enable=YES write_enable=YES local_umask=002 userlist_enable=YES userlist_deny=YES userlist_file=/etc/vsftpd/user_list <==这个档案必须存在!还好,预设 有此档案! # 3. 与服务器环境有关的设定 use_localtime=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd tcp_wrappers=YES banner_file=/etc/vsftpd/welcome.txt
6. 虚拟账户配置
1. 安装vsftpd
2. 修改配置文件

3. 创建实体用户
useradd -s /sbin/nologin vftp
4. 创建虚拟账户文件

5. 将该文件生成数据库文件
db_load -T -t hash -f virtusers virtusers.db
-t hash 使用hash码加密
-f 指定包含用户名和密码文本文件
[root@dbbackup-server-50 vsftpd]# file virtusers.db
virtusers.db: Berkeley DB (Hash, version 9, native byte-order)
6. 编写pam模块
vi /etc/pam.d/vsftpd 文件名称与配置文件pam_service_name指定的保持一致
#%PAM-1.0i auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 其中virtusers是上一步生成的数据库文件的文件名,不要后缀名
7. 重启vsftpd
systemctl restart vsftpd
8. 设置虚拟用户权限
配置文件中,指定目录名称user_config_dir=/etc/vsftpd/vconf
在这个目录下,创建与用户名相同的文件,里面可以针对用户设置单独的权限
local_root=/caiwu_u8/ftp anonymous_enable=NO write_enable=YES anon_upload_enable=YES anon_umask=022 anon_other_write_enable=YES anon_mkdir_write_enable=YES idle_session_timeout=600 data_connection_timeout=120 max_clients=10 max_per_ip=5 local_max_rate=50000

浙公网安备 33010602011771号