vsftp完全解析

vsftp的含义就是Very Security Ftp,其实就是一款FTP软件。每个人安装软件的时候都有自己不同的方法,不过大多大同小异,以下是本人安装VSFTPD的方法

1、下载:
    从网上下载软件,我的版本是2.0.5,软件名为vsftpd-2.0.5.tar.gz

2、编译源代码:
          tar xvzf  vsftpd-2.0.5.tar.gz (解压,并进入解压后目录vsftpd-2.0.5)
          make
          make install

3、安装配置:
          cp vsftpd.conf /etc

 

          为了认vsftpd支持本地用户登录,我们将身份认证模块文件考入系统中。
          cp RedHat/vsftpd.pam /etc/pam.d/ftp (用户身份识别)

 

4、编辑配置:
           用vi打开vsftpd.conf,默认的用不用管他了
           直接在最后一行加上Listen=YES(独立的VSFTPD服务器)

5、启动服务:
           /usr/local/bin/vsftpd &
           用netstat -tnl查看,如果有21端口证明已经安装配置成功
           这个时候已经能用FTP,但不能使用匿名访问。

6、匿名访问:
            mkdir /var/ftp
            chown root.root /var/ftp
            chmod og-w /var/ftp
            这样就能匿名访问。如果还不清楚的话可以参考安装 帮助more INSTALL

7、开机自启动
            用vi打开、etc/rc.local在里面加入/usr/local/bin/vsftpd & 即可。

以下是vsftpd.conf的参数程序代码:
Anonymous_enable=yes                        允许匿名登陆
Dirmessage_enable=yes                         切换目录时,显示目录下.message的内容
Local_umask=022                                 FTP上本地的文件权限,默认是077
Connect_form_port_20=yes                   启用FTP数据端口的数据连接
Xferlog_enable=yes                               激活上传和下传的日志
Xferlog_std_format=yes                         使用标准的日志格式
Ftpd_banner=XXXXX                           显示欢迎信息
Pam_service_name=vsftpd                      验证方式
Listen=yes                                             独立的VSFTPD服务器
Anon_upload_enable=yes                        匿名用户上传权限
Anon_mkdir_write_enable=yes                创建目录的同时可以在此目录中上传文件
Write_enable=yes                                  本地用户写的权限
Anon_other_write_enable=yes                匿名帐号可以有删除的权限
Anon_world_readable_only=no                匿名用户浏览权限
Ascii_upload_enable=yes                         启用上传的ASCII传输方式
Ascii_download_enable=yes                     启用下载的ASCII传输方式
Banner_file=/var/vsftpd_banner_file          用户连接后欢迎信息使用的是此文件中的相关信息
Idle_session_timeout=600(秒)              用户会话空闲后10分钟
Data_connection_timeout=120(秒)       将数据连接空闲2分钟断
Accept_timeout=60(秒)                      将客户端空闲1分钟后断
Connect_timeout=60(秒)                    中断1分钟后又重新连接
Local_max_rate=50000(bite)             本地用户传输率50K
Anon_max_rate=30000(bite)              匿名用户传输率30K
Pasv_min_port=5000                             将客户端的数据连接端口改在
Pasv_max_port=6000                             5000—6000之间
Max_clients=200                                    FTP的最大连接数
Max_per_ip=4                                       每IP的最大连接数
Listen_port=5555                                  从5555端口进行数据连接
Local_enble=yes                                    本地帐户能够登陆
Write_enable=no                                   本地帐户登陆后无权删除和修改文件
Chroot_local_user=yes                            本地所有帐户都只能在自家目录
Chroot_list_enable=yes                           文件中的名单可以调用
Chroot_list_file=/etc/vsftpd.chroot_list      前提是chroot_local_user=no
Userlist_enable=yes                                在指定的文件中的用户不可以访问
Userlist_deny=yes
Userlist_file=/etc/vsftpd.user_list
Banner_fail=/路径/文件名                      连接失败时显示文件中的内容
Ls_recurse_enable=no
Async_abor_enable=yes
one_process_model=yes
Listen_address=10.2.2.2                          将虚拟服务绑定到某端口
Guest_enable=yes                                   虚拟用户可以登陆
Guest_username=所设的用户名              将虚拟用户映射为本地用户
Chown_uploads=yes                                改变上传文件的所有者为root
Chown_username=root
Deny_email_enable=yes                           是否允许禁止匿名用户使用某些邮件地址
Banned_email_file=//任意指定的路径/xx/
Pasv_enable=yes                                     服务器端用被动模式
User_config_dir=/任意指定的路径//任意文件目录 指定虚拟用户存放配置文件的路径
上传的ASCII传输方式Ascii_download_enable=yes                     启用下载的ASCII传输方式Banner_file=/var/vsftpd_banner_file          用户连接后欢迎信息使用的是此文件中的相关信息Idle_session_timeout=600(秒)              用户会话空闲后10分钟Data_connection_timeout=120(秒)       将数据连接空闲2分钟断Accept_timeout=60(秒)                      将客户端空闲1分钟后断Connect_timeout=60(秒)                    中断1分钟后又重新连接Local_max_rate=50000(bite)             本地用户传输率50K Anon_max_rate=30000(bite)              匿名用户传输率30K Pasv_min_port=5000                             将客户端的数据连接端口改在Pasv_max_port=6000                             5000—6000之间Max_clients=200                                    FTP的最大连接数Max_per_ip=4                                       每IP的最大连接数Listen_port=5555                                  从5555端口进行数据连接Local_enble=yes                                    本地帐户能够登陆Write_enable=no                                   本地帐户登陆后无

 

 ================================================================================= 

 

一、vsftpd 简介
    Vsftpd是一个基于GPL发布的类UNIX系统的ftp服务器软件。其全称是Very Secure FTP Deamon,在安全性、速度和稳定性都有着不俗的表现。在安全性方面,vsftpd针对程序的权限来设计,以一般身份启动服务,对Linux系统的使用权限较低;在千兆以太网上,vsftpd的速度可以达到86MB/s;在稳定性上更是优秀,资料表明,完全工作24小时,传输数据达2.6TB,平均并发连接为1500用户,峰值达4000用户,而这些还是在单机上实现的。此外,vsftpd 还包括以下特性:
    基于IP的虚拟服务器
    虚拟用户,结合数据库的用户验证
    每个用户独立配置文件
    速率限制
    IPV6支持
    支持SSL加密传输
    ……
哪些站点在使用vsftpd
    以下站点一直在使用vsftpd(这仅仅是很少很少的一部分站点)
   
ftp.redhat.com
   
ftp.suse.com
   
ftp.debian.org
   
ftp.openbsd.org
   
ftp.freebsd.org
   
ftp.gnu.org
   
ftp.gnome.org
   
ftp.kde.org
   
ftp.kernel.org
    rpmfind.net
   
ftp.linux.org.uk
   
ftp.gimp.org
    ftp-stud.fht-esslingen.de
    gd.tuwien.ac.at
   
ftp.sunet.se
   
ftp.ximian.com
   
ftp.engardelinux.org
   
ftp.sunsite.org.uk
   
ftp.isc.org
    以上内容摘自vsftpd官方网站
http://vsftpd.beasts.org/
二、软件安装和卸载
获得软件
    vsftpd目前最新版本为2.0.5,下载地址:
ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.5.tar.gz
软件安装
    解压软件,编辑builddefs.h文件
    # tar zxvf vsftpd-2.0.5.tar.gz
    # cd vsftpd-2.0.5
    # vi builddefs.h
    找到下面三行,其含义如右所示
    #undef VSF_BUILD_TCPWRAPPERS             //是否允许使用TCP Wrappers
    #define VSF_BUILD_PAM                    //是否允许使用PAM认证
    #undef VSF_BUILD_SSL                     //是否允许使用SSL
    如果要允许以上所示某项功能,使把undef改为define即可,注意每行前的“#“号不是注释,不能去掉(熟悉C语言的同志应该知道这个“#”是什么意思)。其中TCP Wrappers是一个验证IP地址合法性的程序,PAM认证让vsftpd支持本地用户登陆服务器,使用SSL可以建立一个加密的数据传输。这里我们把三项都启用。
    编译安装。如果系统中安装有旧版vsftpd,请先卸载它。默认安装执行文件在/usr/local/sbin中,man page放在/usr/local/man/man5与/usr/local/man/man8中。
    # make
    # make install
    将默认配置文件考贝到/etc/vsftpd/
    # mkdir /etc/vsftpd/
    # cp vsftpd.conf /etc/vsftpd/                   
    为了认vsftpd支持本地用户登录,我们将身份认证模块文件考入系统中。
    # cp RedHat/vsftpd.pam /etc/pam.d/vsftpd
    建立ftp用户及主目录:
    # mkdir /var/ftp
    # useradd -d /var/ftp ftp
   
    如果本来就已经存在ftp用户,则执行下面两条命令:
    # chown root:root /var/ftp
    # chmod 755 /var/ftp
    建立vsftpd需要的特殊目录:
    # mkdir /usr/share/empty/
软件卸载
    如果需要卸载,使用如下命令:
    # rm /usr/local/sbin/vsftpd
    # rm /usr/local/man/man5/vsftpd.conf.5
    # rm /usr/local/man/man8/vsftpd.8
    # rm /etc/xinetd.d/vsftpd
    # rm -rf /etc/vsftpd
三、配置vsftpd服务
服务的启动与停止
    启动服务之前,我们先编辑配置文件/etc/vsftpd/vsftpd.conf. 打开配置文件后可以看到许多以“#”开始的行,这些行都是注释行,大多是帮助信息,可以仔细阅读。vsftpd.conf文件的所有项目都是以“参数=值 ”来设置的,对格式要求比较严格,必须严格区分大小写,等号两边不能有空格,每行的最后也不能有空格。每个参数都有一个默认值,没有在配置文件中明确指定的参数就会使用默认值。我们这里不理会配置文件本来的信息,把所有内容都删掉或注释掉,最后加上下面四行,每行右边的//及后的文字是含义说明,不要输入到文件中:
    listen=yes                        //vsftpd工作在standalone 模式下
    anonymous_enable=yes                //允许匿名用户登陆服务器
    local_enable=yes                    //允许本地用户登录到服务器
    pam_service_name=vsftpd            //使用PAM认证
    vsftpd有两种工作模式,standalone模式和xinetd守护进程模式,第1行就是让其工作在standalone模式下。此种模式中,每次修改配置文件必须重新启动vsftpd服务才能生效,关于两种模式在后面有详细介绍。我们安装时还把 Redhat 目录下的 vsftpd.pam 文件复制成了/etc/pam.d/vsftpd 文件。这个文件就是本地用户登陆的 pam 验证配置文件。关于这个文件我们会在后面具体介绍。这里我们要知道,必须得有这个配置文件,而且主配置文件里要加上 pam_service_name=vsftpd语句,我们才能让本地用户登陆。用以下命令启动服务:
    # /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &
    为保证服务确实启动,我们用如下命令检测:
    # netstat -an |grep 21
    tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN
    我们看到服务器已经打开了tcp21端口,表明ftp确实已经启动。再登录服务器:
    # ftp 127.0.0.1
    Connected to 127.0.0.1.
    220 (vsFTPd 2.0.5)
    530 Please login with USER and PASS.
    530 Please login with USER and PASS.
    KERBEROS_V4 rejected as an authentication type
    Name (127.0.0.1:root): ftp
    331 Please specify the password.
    Password:
    230 Login successful.
    这时我们已经用匿名用户(用户名ftp或anonymous,密码任意)登录到服务器了,还可以用本地用户登录。我们做测试时建议使用如上所示的ftp命令(windows、Linux及Unix都带这个命令,用法都是一样的)来登录服务器,这样可以看到更详细的信息,对于我们调试服务器是非常有帮助的。最简单的ftp服务器就已经达建起来了。使用如下命令关闭ftp服务:
    # killall vsftpd
服务启动脚本的制作
    在standalone 模式中,经常用上面的命令启动服务比较麻烦,我们做一个脚本来启动和停止服务。
建立一个新文件/etc/rc.d/init.d/vsftpd,把以下内容复制到文件中:
#!/bin/bash
#
# vsftpd      This shell script takes care of starting and stopping
#             standalone vsftpd.
#
# chkconfig: - 60 50
# description: Vsftpd is a ftp daemon, which is the program /
#              that answers incoming ftp service requests.
# processname: vsftpd
# config: /etc/vsftpd/vsftpd.conf
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x /usr/local/sbin/vsftpd ] || exit 0
RETVAL=0
prog="vsftpd"
start() {
        # Start daemons.
        if [ -d /etc/vsftpd ] ; then
                for i in `ls /etc/vsftpd/*.conf`; do
                        site=`basename $i .conf`
                        echo -n $"Starting $prog for $site: "
                        /usr/local/sbin/vsftpd $i &
                        RETVAL=$?
                        [ $RETVAL -eq 0 ] && {
                           touch /var/lock/subsys/$prog
                           success $"$prog $site"
                        }
                        echo
                done
        else
                RETVAL=1
        fi
        return $RETVAL
}
stop() {
        # Stop daemons.
        echo -n $"Shutting down $prog: "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
        return $RETVAL
}
# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
            RETVAL=$?
        fi
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac
exit $RETVAL
    保存文件,再给该文件加上执行权限:
    # chmod 755 /etc/rc.d/init.d/vsftpd
    这样我们就可以通过下面的方法来管理服务了:
    # service vsftpd {start|stop|restart|condrestart|status}
    例如重新启动服务:
    # service vsftpd restart
    Shutting down vsftpd:                   [OK ]
    Starting vsftpd for vsftpd:             [OK ]
四、配置文件详解
    vsftpd配置文件只有一个,就是/etc/vsftpd/vsftpd.conf,上一小节我们就已经加入了两行参数了。在修改了配置文件之后,需要重新启动服务才能生效。下面我们就来详细解释其中的参数。
1. 匿名及本地用户共同参数
    write_enable=yes/no             //是否允许全局可写
    download_enable=yes/no            //是否允许所有用户可以下载
    dirlist_enable=yes/no             //是否允许所有用户可以浏览(列出文件列表)
    我们将write_enable=no、download_enable=yes两行加入配置文件,再测试:
    # ftp 127.0.0.1
    ……
    ftp> ls
    227 Entering Passive Mode (127,0,0,1,230,192)
    150 Here comes the directory listing.
    -rw-r--r--    1 0        0               4 May 13 11:43 ioo_file
    226 Directory send OK.
    ftp> get ioo_file
    local: ioo_file remote: ioo_file
    227 Entering Passive Mode (127,0,0,1,160,26)
    150 Opening BINARY mode data connection for ioo_file (4 bytes).
    226 File send OK.
    4 bytes received in 0.062 seconds (0.063 Kbytes/s)
    ftp> put scsrun.log
    local: scsrun.log remote: scsrun.log
    227 Entering Passive Mode (127,0,0,1,176,84)
    550 Permission denied.
    如上所示,我们看到了ftp上的文件,可以下载文件,但不可以上传文件。如果把dirlist_enable=no 也加上,便无法看到ftp上的文件(无法列出文件列表),但是如果你知道具体的文件名及路径,仍然可以下载文件的。实验结果就不贴上来了。
    再看下一组:
    ftpd_banner=欢迎语字符串
    banner_file=文件
    dirmessage_enable=yes/no
    message_file=文件
    参数ftpd_banner设置的欢迎语字符串将在登录时看到,如果想做出多行欢迎语,就要把内容单独存为banner_file参数指定的文件,应用中这两个参数二选一即可。dirmessage_enable和message_file参数是进入某个目录后显示的欢迎信息,用法与前两个参数一样。
2. 本地用户管理
2.1 本地用户常规配置参数
    local_root=/path                  //本地用户登陆服务器后直接进入的目录
    local_umask=八进制数       //本地用户上传档案权限的 umask值
    local_max_rate=数字            //本地用户传输速率单位为 bps
    chmod_enable=yes/no            // 是否允许本地用户改变ftp 服务器上档案的权限
    我们知道使用本地用户登录ftp后进入的是用户的主目录,locla_root这个参数允许我们登录服务器后直接进入其它的目录。此功能结合Apache 的userdir模块来实现网站内容更新上传是非常方便的。Linux系统中的任何文件都是有权限值的,上传的文件也不例外,这个默认的权限值就由 local_umask参数指定。其计算方法为:
    默认建立文件的权限+local_umask =0666
    默认建立目录的权限+local_umask =0777
    由此我们可以看出,上传的文件无论如何都不可能有执行权限的。这也是vsftp安全性的体现啊!
    local_max_rate参数限定了数据传输速率,包括上传和下载。chmod_enable参数限制用户是否可以改变档案权限(使用chmod, site命令)。
    我们可能想让为每个用户进行单独的配置,或者想配置个别用户的权限。这样就得为每个本地用户配置一个文件。这些配置文件必须是在同一个目录下,所以我们可以设置本地用户单独配置文件所在的目录:
    user_config_dir=/path        //用户单独配置文件所在目录
    我们在配置文件中加入以下几行:
    local_umask=077
    local_max_rate=20000
    user_config_dir=/etc/vsftpd/vsftpd_user_dir
    给予用户上传权限:
    write_enable=yes
    新建一个普通用户ioo,再新建一个目录/etc/vsftpd/vsftpd_user_dir,其下建一个文件ioo,里面加入下面几行:
    local_root=/var/www/html
    local_umask=022
    local_max_rate=50000
    把/var/www/html的所有者改为ioo:
    chown ioo:ioo /var/www/html
    测试之后我们发现,使用ioo用户登录后就直接进入var/www/html了,上传的文件(夹)权限为644(755),传输速率为50k,自定义的设置覆盖了主配置文件中的设置。
2.2 本地用户登录限制参数
    在我们的服务器上本来就有很多的本地用户,这些本地用户应该都是可以登陆 ftp 服务器的。但是 ftp 服务是以明文传输的,如果允许管理员登陆的话,这种机制显然不好。又或者我们想让一些本地用户可以登陆0

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/octobereva/archive/2009/04/27/4128269.aspx 

 

 

 

=================================================================================== 

 

vsftp  500 oops解释

[root@192 pam.d]# 500 OOPS: could not bind listening IPv4 socket 500 OOPS: unrecognised variable in config file: pam_server_name

 

需要注销 xinetd运行模式 disable = no socket_type = stream wait = no 即使xinetd 没有运行

 像其它守护程序一样,vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式。

简单解释一下,standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的专业FTP服务器。

inetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此不适合应用在同时连接数量较多的系统。

此外,inetd模式不占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd还提供了一些额外的高级功能,如inetd模式支持per_IP(单一IP)限制,而standalone模式则更有利于PAM验证功能的应用。

 1.xinetd运行模式大多数较新的系统采用的是xinetd超级服务守护进程。使用“vi /etc/xinetd.d/vsftpd” 看一下它的内容,如下: disable = no socket_type = stream wait = no # 这表示设备是激活的,它正在使用标准的TCP Sockets。 如果“/etc/vsftpd.conf”中的有选项为“listen=YES”,注销它 最后,重启xinetd,命令如下: $ /etc/rc.d/init.d/xinetd restart 需要注意的是,“/etc/xinetd.d”目录中仅能开启一个FTP服务。

 2.standalone模式   standalone模式便于实现PAM验证功能。进入这种模式首先要关闭xinetd下的vsftpd,设置 “disable = yes”,或者注销掉“/etc/inetd.conf”中相应的行。然后修改“/etc/vsftpd.con f”中的选项为“listen=YES”。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值