vsftpd服务配置

  • 1.原理介绍

1.1 基本原理
VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。
安全性是编写VSFTP的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是VSFTP的两个重要特点。
1.2 主动模式和被动模式

(参考文章:http://www.360doc.com/content/13/1129/16/4228225_333218025.shtml
1.2.1 主动模式:
ftp采用两个端口控制:
20端口用于数据传输;21端口用于控制,或指建立TCP连接.
主动方式连接过程:
[注意]:C表示客户端 S表示服务器端
S端要开启20、21端口;
C端一个随机端口连接S端21,这个随机范围1024-65536,同时发送命令port+x,指明数据端口C(X)->S(21);
S端收到命令后,将返回一个ACK,S(21)->C(X);
S端将用自己的20端口与C端的X+1端口相连,S(20)->C(X+1);
C给S返回ACT,C(X+1)->S(20).
1.2.2 被动模式:
被动方式连接过程:
[注意]:C表示客户端 S表示服务器端、
S服务器端要开启21端口和大于1024tcp端口;
C以一个随机端口X与S的21端口相连, 这个随机端口范围为1024~65535, 并发送命令 PASV. C(X) -> S(21)
S收到命令, 返回一个ACK, 并在其中指明一个新的高位端口y. S(21) -> C(x)
C发起 x+1端口到S的y的端口的连接.C(x+1) -> S(y)
S返回一个ACK. S(y) ->C(x+1)
1.2.3 主动模式的配置方法 
connect_from_port_20=YES
#主动式连接使用的数据通道 
pasv_enable=NO
#支持数据流的被动式连接模式
其余配置,可根据需求而定
1.2.4 被动模式的配置方法
connect_from_port_20=NO
#主动式连接使用的数据通道  
pasv_enable=YES
#支持数据流的被动式连接模式
  pasv_min_port=1024
  pasv_max_port=65536  
pasv_address (Default: (none - the address is taken from the incoming connected  socket) ) pasv模式中服务器传回的ip地址
其余配置,可根据需求而定
1.2.5 启动
chkconfig --level 2345 vsftpd on
/etc/init.d/vsftpd start
1.2.6 查看连接状态
其中S是服务端IP,C是客户端IP
被动模式
# netstat -an |grep C 
tcp        0      0 S:52160         C:16091          TIME_WAIT  
tcp        0      0 S:21            C:15354          TIME_WAIT  
tcp        0 434064 S:43407         C:16220          ESTABLISHED 
tcp        0      0 S:21            C:16090         ESTABLISHED 

主动模式
# netstat -an |grep C
tcp        0 268488 S:20            C:18434          ESTABLISHED 
tcp        0      0 S:21            C:18433          TIME_WAIT  
tcp        0      0 S:20            C:18426          TIME_WAIT  
tcp        0      0 S:21            C:18425          TIME_WAIT  
tcp        0      0 S:21            C:18418          TIME_WAIT  
tcp        0      0 S:20            C:18420          TIME_WAIT  
tcp        0      0 S:21            C:18369          TIME_WAIT  
tcp        0      0 S:20            C:18397          TIME_WAIT  
tcp        0      0 S:21            C:18387          ESTABLISHED

[注意:]
Vsftp主动模式和被动模式是可以共存的。
主动模式和被动模式的区别在于,主动模式下,ftp采用的是20端口传送数据,而被动模式下,ftp采用的是大于1024的随机端口。所以被动模式下,必要关闭防火墙!

  • 2.安装配置

2.1 基本组件安装
一般来说,我们的系统都是自带了安装包的,事先可以通过下面的命令查看一下是否存在安装包:
    rpm -qa |grep vsftpd
    如果提示有安装包,即选择安装即可,诸如下面这样
    rpm –ivh vsftpd-2.0.5-16.el5_4.1.i386.rpm
    接下来我们要认识几个关键的文件:
    ftpusers        该文件用来指定那些用户不能访问ftp服务器,通常是一些系统默认的用户
    user_list       该文件用来指示的默认账户在默认情况下也不能访问ftp
    vsftpd.conf     vsftpd的主配置文件
如果系统里面没有安装包,可以通过yum来安装:
安装vsftpd相关组件
#yum install vsftpd*
安装PAM服务相关组件
#yum install pam*
安装DB4部件包,用来支持文件数据库
# yum install db4*
2.2 基本配置调整
2.2.1 建立vsftpd服务的宿主用户
默认的宿主用户是root,但不符合安全要求,为此需要新建一个名为virtual_user的宿主用户,并且使它不能登录系统
# useradd virtual_user -d /home/virtual_user -s /sbin/nologin
2.2.2 调整vsftpd的主配置文件
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
vi /etc/vsftpd/vsftpd.conf
#设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,
#一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同
user_config_dir=/etc/vsftpd/vuserconf
#使得vsftp时间和系统时间一致
use_localtime=YES
local_root=/home/virtual_user
#不允许匿名用户访问
anonymous_enable=NO
#设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问
local_enable=YES
#对本地用户来说,设定上传后文件的权限掩码
local_umask=022
#对虚拟用户来说,设定上传后文件的权限掩码
anon_umask=022
#设定开启日志记录功能
#如果启用,两个LOG文件会各自产生,默认的是/var/log/xferlog和/var/log/vsftpd.log。前一个是wu-ftpd格式的LOG,能被通用工具分析。
后一个是VSFTPD的专用LOG格式。
dual_log_enable=YES
xferlog_enable=YES
#Vsftpd的服务日志保存路径
xferlog_file=/var/log/xferlog.log
#设定日志使用标准的记录格式
xferlog_std_format=YES
#vsftpd服务日志文件路径
vsftpd_log_file=/var/log/vsftpd.log

#设定端口20进行数据连接
connect_from_port_20=YES
设定该Vsftpd服务工作在StandAlone模式下。顺便展开说明一下,所谓StandAlone模式就是该服务拥有自己的守护进程支持,
在ps -A命令下我们将可用看到vsftpd的守护进程名。如果不想工作在StandAlone模式下,则可以选择SuperDaemon模式,
在该模式下 vsftpd将没有自己的守护进程,而是由超级守护进程Xinetd全权代理,与此同时,Vsftp服务的许多功能将得不到实现。
listen=YES
#设定可以进行写操作
write_enable=YES
#禁止虚拟用户上传
anon_upload_enable=YES
#禁止虚拟用户建立目录
anon_mkdir_write_enable=NO
#设定可以进行其他操作
anon_other_write_enable=YES
#当设定为 YES 时,表示每个建立的联机都会拥有一支 process 在负责,除非硬件资源比较高的情况下设为YES,一般都是设为NO,不然容易耗尽系统资源
one_process_model=NO
#是否要将使用者限制在自己的家目录之内
chroot_local_user=YES
#设定Vsftpd的登陆标语
ftpd_banner=Welcom to my FTP server.
#仅允许匿名用户具有下载可读档案的权限,预设是 YES
anon_world_readable_only=NO
#指定访客身份
guest_enable=YES
#指定虚拟用户的宿主用户
guest_username=virtual_user
#这个是 pam 模块的名称,用来做登录验证
pam_service_name=vsftp.vu
#cmds_allowed=ABOR,APPE,CWD,CDUP,FEAT,LIST,MKD,MDTM,PASS,PASV,PWD,QUIT,RETR,REST,STOR,STRU,TYPE,USER,XMKD,XPWD,XCUP,PUT
##secure config ##
#设定空闲连接超时时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值600,单位秒
idle_session_timeout=600                  #(用户会话空闲后10分钟)
#设定单次最大连续传输时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值120,单位秒
data_connection_timeout=120               #(将数据连接空闲2分钟断)
accept_timeout=60                         #(将客户端空闲1分钟后断)
connect_timeout=60                        #(中断1分钟后又重新连接)
#max_clients=50                            #(FTP的最大连接数)
#max_per_ip=25                             # (每IP的最大连接数)
2.3 制作虚拟用户数据库文件
2.3.1 建立虚拟用户名单文件
#touch /etc/vsftpd/vuser.txt
编辑这个虚拟用户名单文件,在其中加入用户的用户名和口令信息。格式很简单:“一行用户名,一行口令”。
2.3.2 生成虚拟用户数据文件
#db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
#chmod 600 /etc/vsftpd/vuser.db
2.3.3 创建生成虚拟用户数据文件的脚本
#vi addvuser.sh
#!/bin/bash
db_load -T -t hash -f /etc/vsftpd/vuser.txt  /etc/vsftpd/vuser.db
以后每次新加或者修改虚拟用户名单以后,直接运行上面脚本就可以搞定了。
2.4 设定PAM验证文件,并指定虚拟用户数据库文件进行读取
#vi /etc/pam.d/vsftp.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
2.5 虚拟用户配置
vi /etc/vsftpd/vsftpd_config/tsy
#用户登陆后直接进入自己目录不能浏览别家目录
local_root=/data/ftpdata/tsy
#只允许读权限
anon_world_readable_only=NO
#允许在文件系统写入权限
write_enable=YES  
#开启上传权限
anon_upload_enable=YES 
#开启创建文件夹权限
anon_mkdir_write_enable=YES 
#开启其他权限,如重命名,删除文件及文件夹
anon_other_write_enable=YES 

  • 3  启动服务

#service vsftpd start

  • 4 常见问题

转载于:https://my.oschina.net/shuiyuantao/blog/792627

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值