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
posted @ 2019-06-12 17:49  奋斗史  阅读(461)  评论(0)    收藏  举报