当前位置:文档之家› VSFTPD配置详解

VSFTPD配置详解

VSFTPD配置详解
VSFTPD配置详解

vsftpd配置详解

Linux 2008-01-23 18:42 阅读1724 评论2

字号:大大中中小小

一、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(这仅仅是很少很少的一部分站点)

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

ftp-stud.fht-esslingen.de

gd.tuwien.ac.at

ftp.sunet.se

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

https://www.doczj.com/doc/7d10801643.html,

以上内容摘自vsftpd官方网站https://www.doczj.com/doc/7d10801643.html,/ 二、软件安装和卸载获得软件vsftpd目前最新版本为 2.0.5,下载地址:ftp://https://www.doczj.com/doc/7d10801643.html,/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

RETV AL=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 &

RETV AL=$?

[ $RETV AL -eq 0 ] && {

touch /var/lock/subsys/$prog

success $"$prog $site"

}

echo

done

else

RETV AL=1

fi

return $RETV AL

}

stop() {

# Stop daemons.

echo -n $"Shutting down $prog: "

killproc $prog

RETV AL=$?

echo

[ $RETV AL -eq 0 ] && rm -f /var/lock/subsys/$prog return $RETV AL

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

restart|reload)

stop

start

RETV AL=$?

;;

condrestart)

if [ -f /var/lock/subsys/$prog ]; then

stop

start

RETV AL=$?

fi

;;

status)

status $prog

RETV AL=$?

;;

*)

echo $"Usage: $0 {start|stop|restart|condrestart|status}"

exit 1

esac

exit $RETV AL

保存文件,再给该文件加上执行权限:

# 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 服务是以明文传输的,如果允许管理员登陆的话,这种机制显然不好。又或者我们想让一些本地用户可以登陆,或者一些不能登陆我们的ftp 服务器,这样我们可以怎么设置呢?

Vsftpd 提供了userlist 功能。它使用一个文件来保存一些用户名,然后根据配置来决定是文件中的用户可以登录还是文件中没有列出的用户可以登陆ftp 服务器,这样就对本地用户的登陆起到了限制作用。其配置参数有如下几个:

userlist_enable=yes/no //是否启用userlist 功能模块

userlist_deny=yes/no //是否拒绝userlist 文件中用户登陆ftp 服务

userlist_file=/path/to/file //指定的userlist 文件名

当第1个参数值为yes时,第2、3行才起作用。我们将配置文件加上如下3行:

userlist_enable=yes

userlist_deny=yes

userlist_file=/etc/vsftpd/https://www.doczj.com/doc/7d10801643.html,erlist 然后再新建一个文件/etc/vsftpd/https://www.doczj.com/doc/7d10801643.html,erlist,在里面加入用户名,每个用户名一行,比如我这里加入用户root,再登录服务时出现以下信息:

# ftp 127.0.0.1

Connected to 127.0.0.1.

……

Name (127.0.0.1:root): root

530 Permission denied.

Login failed. root用户已经不能登录了,在输入密码之前就被拒绝,但其它用户还可以登录的。如果把userlist_deny的值改为no,则只有文件中的用户才可以登录服务器。2.3 本地用户的根目录参数

大家再来看下面这一段:

# ftp 127.0.0.1

……

Name (127.0.0.1:root): ioo

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> pwd

257 "/home/ioo"

ftp> cd /

250 Directory successfully changed.

ftp> ls

227 Entering Passive Mode (127,0,0,1,163,193)

150 Here comes the directory listing.

drwxr-xr-x 2 0 0 4096 May 12 21:22 bin

drwxr-xr-x 3 0 0 4096 Apr 30 19:57 boot

drwxr-xr-x 12 0 0 3840 May 13 10:29 dev

……是不是感到吃惊了!我们用本地用户登录ftp服务器,却可以看到整个服务器

的目录和文件,甚至还可以把/etc/passwd文件下载下来,这是非常不安全的,我们应该禁止这个功能,限制用户只能在自己的目录里浏览,这就要用到chroot功能。看下面三个参数:chroot_list_enable=yes/no //是否启用chroot_list 文件

chroot_local_user=yes/no //是否限制本地用户的根目录为自己的主目录

chroot_list_file=/path/to/file //设置chrootlist 文件名我们新建一个用户woo,再新建一个文件/etc/vsftpd/vsftpd.chroot_list,其中加入woo。然后在配置文件中添加以下几行:

chroot_list_enable=yes

chroot_local_user=yes

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list 登录服务器测试:

# ftp 127.0.0.1

……

Name (127.0.0.1:root): woo

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> pwd

257 "/home/woo" Name (127.0.0.1:root): ioo

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> pwd

257 "/" 我们看到,在文件中的用户woo根目录仍然是系统根目录,但文件外的用户根目录已经变成了“/”,就是说列在文件外的用户已经不能在自己主目录范围外浏览了。

更改chroot_list_enable和chroot_local_user的值,得到以下几种组合:

参数取值取值取值取值

chroot_list_enable yes yes no no

chroot_local_user yes no yes no

意义文件中列出的用户根

目录为系统根目录,其

它用户根目录为自己

主目录。

文件中列出的用户根

目录为自己主目录,其

它用户根目录为系统

根目录。

全部用户根

目录都是自

己主目录。

全部用户根

目录都是系

统根目录。

3. 匿名用户参数

我们可以认为,本地用户进入自己主目录本身就应有比较大的权限,所以我们看到本地用户受限的语句不多。但是匿名用户通常涉及到一个公开、公共的互联网环境,所以限制匿名用户的权限语句就比较多,限制也比较细致。看看这一组参数:

anon_upload_enable=yes/no //是否允许匿名用户上传

anon_mkdir_write_enable=yes/no //是否允许匿名用户建立文件夹

anon_other_write_enable=yes/no //是否允许匿名用户可以使用除了建立文件夹和上传

文件以外其他的ftp写操作命令。例如:delete、rename 等等

anon_world_readable_only=yes/no //匿名用户是否允许下载所有用户都可以访问的文件我们先把配置文件清理一下,现在配置文件只有下面几行:

listen=yes

anonymous_enable=yes

write_enable=yes

download_enable=yes

dirlist_enable=yes

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

我们希望匿名用户有上传文件的权限,但这里还只是在ftp服务里给了写权限,还必须在文件权限考虑实现。于是我们给/var/ftp加上写权限:

chmod a+w /var/ftp

然后登录服务器:

# ftp 127.0.0.1

……

Name (127.0.0.1:root): ftp

331 Please specify the password.

Password:

500 OOPS: vsftpd: refusing to run with writable anonymous root

Login failed.

421 Service not available, remote server has closed connection 结果我们连服务器都登陆不了了!这是因为vsftpd出于在安全方面的考虑,不允许匿名用户对根目录有写权限。为此,我们只有去掉/var/ftp的写权限,再在其中新建一个目录,给予其写权限,让匿名用户上传文件到这个目录中。

# chmod 755 /var/ftp

# mkdir /var/ftp/upload

# chmod 777 /var/ftp/upload 现在我们可以匿名在upload里上传文件、建立文件夹、还可以删除改名等,但是却无法将上传的文件下载回来。如果你上传的文件是在一个新建的文件夹里,那么上传的文件不但下载不下来,而且连看都看不到:

ftp> mkdir asm

257 "/upload/asm" created

ftp> cd asm

250 Directory successfully changed.

ftp> put file1

local: file1 remote: file1

227 Entering Passive Mode (127,0,0,1,135,56)

150 Ok to send data.

226 File receive OK.

5 bytes sent in 0.063 seconds (0.077 Kbytes/s)

ftp> get file1

local: file1 remote: file1

227 Entering Passive Mode (127,0,0,1,20,101)

550 Failed to open file.

ftp> ls

227 Entering Passive Mode (127,0,0,1,133,186)

150 Here comes the directory listing.

226 Transfer done (but failed to open directory).

ftp>

这就要研究anon_world_readable_only这个参数了,它的默认值是yes。如果其值为yes,则匿名用户只可以下载所有用户都可访问的文件。比如:

# ll

total 40

-rw----r-- 1 ftp ftp 34935 05-13 17:38 install.log

-rw------- 1 ftp ftp 209 05-13 18:16 scsrun.log

这里install.log文件权限其它位上有r权限,那么这个文件就可以被下载;scsrun.log文件其它位上没有任何权限,所以这个文件就不能被匿名用户下载。

因此解决方法有两个,一是把参数anon_world_readable_only的值改为no;二是把上传文件默认权限的其它位上加上执行权限,这就用到下面这个参数:

anon_umask=八进制数

这个参数值的计算方法与本地用户local_umask参数一样,不在赘述。在以上的实验中,大家可能已经注意到匿名用户上传的档案所有者为ftp,这们也可能用下面两个参数来改变档案所有者:

chown_uploads=yes/no //是否开启修改默认匿名上传档案所有者的功能

chown_username=本地用户名 //匿名上传档案的所有者名匿名用户使用任何密码都是可以登陆服务器的,那么我们可以免了匿名用户登陆必须输入密码的步骤,只要我们在配置文件中加入:

no_anon_password=yes 匿名用户的参数还有很多,我们就不一一介绍了到此,我们已经可以达建出的ftp服务器已经可以满足很多场合的需要了,如果有要求更加苛刻的场合,那就还需要进一步设置。

4. IP监听与连接控制

vsftpd工作在独立模式(standalone)下的启动参数有两项:

listen=yes/no

listen_ipv6=yes/no

其中第一条已经前面已经提过了,第二条应用在ipv6网络环境中,这两相参数只能有一条值为yes。

在实际的网络环境中,服务器通常都有多个IP地址,而每个IP地址连接不同的网段,我们可能并不希望在所有网段的上的计算机都能访问服务器。而默认情况下,vsftpd将在所有的IP地址上监听,因此,我们需要下面两行:

listen_address=监听ip

listen_address6=监听ip

这两行分别是针对IPv4和IPv6环境的。下面的两项是vsftpd并发连接控制:

max_clients=数字

max_per_ip=数字

参数max_clients设置了服务器可以接受的最大并发连接数量,max_per_ip设置了每个客

户端IP可以发起的最大连接数。针对服务器性能适当设置这两个参数,可以在服务器可接受的连接数量和连接速度之间找到平衡点。这两项默认值均为0,表示无限制。 accept_timeout=数字

connect_timeout=数字

data_connection_timeout=数字

idle_session_timeout=数字

上面的数字都是以秒为单位的。其中access_timeout 代表以pasv数据连接模式的时候,数据连接的超时;connect_timeout 表示以port模式连接数据连接时的超时时间;关于ftp 服务连接模式下面会有详细介绍。data_connection_timeout 表示数据连接后数据连接等待的空闲时间超时,超过时间后,数据连接将断开连接;idle_session_timeout 设置发呆时间,也就是客户端隔多长时间不与服务器有交互ftp 命令,将自动断开ftp 服务连接。5. 关于连接端口设置

我们知道ftp 服务有一点是不同于其他的服务的是,ftp 服务使用的是tcp 双连接通道,也就是ftp-server 和ftp-data 连接。我们可以这么理解:ftp-server 连接接受客户端连接请求、并发控制、身份和权限认证以及传输客户端下达的命令。ftp-data连接负责传输数据,也就是说当有数据传输的时候才会有这条连接。我们先来看一下ftp-server 的设置:

listen_port=端口号

那么这条设置可以设置ftp-server 端口号,默认为21,如果我们指定了其它端口号,那么客户端连接服务器上时就得使用指定端口号了。我们将这一行加入主配置文件中:

listen_port=2121

# ftp 127.0.0.1

ftp: connect: Connection refused

ftp> open 127.0.0.1 2121

Connected to 127.0.0.1.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

……

已经看到效果了,接下来我们讨论ftp-data连接的问题。

FTP数据传输有两种模式:FTP Port模式和FTP Passive模式,两种工作方式截然不同。 FTP Port模式

在FTP Port模式下,客户端与服务器建立ftp-server连接之后,如果某条指令涉及到数据传送,就需要建立ftp-data连接。其实连接步骤如下:

(1) 客户端启用另一个高于1024的空闲端口xx做连接准备,并且使用port命令利用ftp-server信道向服务器发送一个数据包,数据包里包含客户端的IP地址和xx端口,告诉服务器客户端xx端口已做好连接准备。Port命令还支持第三方(third-party)模式,第三方模式是客户端告诉服务器端打开与另台主机的连接。

(2) 服务器以ftp-data端口(默认为20)主动向客户端xx端口进行连接。

(3) 客户端响应服务器连接,并继续完成三次握手后,ftp-data连接建立,开始传送数据。当数据传输完毕后,服务器ftp-data端口就处于等待关闭状态。

我们看到,Port模式下ftp-data连接请求是由服务器发起的。现在来看一下vsftpd中关于Port模式的语句设置:

port_enable=yes/no //是否启用port 模式

connect_from_port_20=yes/no //port 模式下是否默认使用固定的20 端口 ftp_data_port=port_number //指定port 模式的端口号

port_promiscuous=yes/no //是否使用安全的port 模式

将port_enable 设置为yes,就采用port 模式。在port 模式下端口如果采用固定的20 端口,就把connect_from_port_20选项就设为yes,这是很多服务器默认的设置规则。我们也可以指定其他的端口,那么这也就由ftp_data_port 来指定固定端口。port_promiscuous 默认值为no,表示ftp-data连接之前检验一下数据连接的目标ip 的是否是真正客户端的IP,反之则不检查。除非你确保服务器是与真正的客户端进行连接,否则不要将此参数值改为yes。

我们将下面两行加入配置文件中:

port_enable=yes

connect_from_port_20=no

登录服务器运行3次ls(显示文件列表)命令,再在服务器端运行netstat命令查看效果: # ftp 127.0.0.1

Connected to 127.0.0.1.

……

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> passive

Passive mode off.

ftp> ls

……

226 Directory send OK.

ftp> ls

……

ftp> ls

……

ftp> bye

# netstat -an|more

……

tcp 0 0 127.0.0.1:1069 127.0.0.1:1068 TIME_WAIT

tcp 0 0 127.0.0.1:21 127.0.0.1:1065 TIME_W AIT

tcp 0 0 127.0.0.1:1071 127.0.0.1:1070 TIME_WAIT

tcp 0 0 127.0.0.1:1067 127.0.0.1:1066 TIME_WAIT

……

我们看到服务器开了3个大于1024的端口去连接客户端,这3个连接就是3次ls命令产生的。如果我们把connect_from_port_20参数的值改为yes,再做上述实验,就会发现服务器3次连接都固定打开20端口。如果我们再加上ftp_data_port=2020语句,再做上述实验,服务器就会固定开启2020端口。[attach]167[/attach] 大家来看这张图,局域网客户机使用私有IP地址,并采用出口路由器做的NAT(网络地址转换)连到internet。ftp 服务器采用的是port模式。当客户端使用port命令向服务器发出包含自身IP地址和端口的包,此包通过路由器时路由器必须检查其内容,把包中的IP地址和端口翻译成分配给客户的地址和端口,而这个操作要求路由器必须工作在应用层!我们不可能要求每个客户的路由器都有此功能,但如果路由器没有正常完成这步工作,ftp数据传输就失败了。

另外,由于第三方third-party模式的支持,黑客还可能在PORT命令中设置IP地址和端口号参数来指定一台其它主机的地址和端口号来发动攻击(称为FTP反弹攻击)。虽然有的

防火墙设备已经修正了该问题,但对于大多数防火墙和路由器来说这个问题还是一个非常严重的。 FTP Passive模式

下面描述了Passive模式的ftp-data连接建立的步骤:

(1) 当用户请求数据传输的时候,客户端软件发送PASV命令给服务器端表明客户端希望进入Passive模式;

(2) 服务器端进行应答,应答数据包内有服务器的IP地址和一个临时端口,这个临时的端口是客户端在打开数据传输连接时应该使用的端口;

(3) 客户端服务器发出连接请求,源端口为客户端自己选择的一个临时端口,目的端口为服务器在PASV应答命令中指定的临时端口号;

(4) 服务器响应客户端请求,并继续完成TCP三次握手之后,ftp-data连接建立,开始传送数据。

接下来我们来看看vsftpd中关于Passive模式中设置语句:

pasv_enable=yes/no

pasv_min_port=yes/no

pasv_max_port=yes/no

pasv_promiscuous=yes/no

pasv_address=ip_address

第一行设置是否启用pasv 模式。pasv_min_port 和pasv_max_port 是设置在pasv 模式下开启的端口范围。一般情况下,如果设置成pasv 模式,我们最好指定端口范围,便于防火墙设置开启这个范围的端口以接受客户端的连接请求。pasv_promiscuous与port_promiscuous参数一样是设置在pasv下是否设置安全的传输,我们也要将其值设为no (默认值即为no)。pasv_address 后接一个有效的ip地址,来指定pasv打开端口的ip地址。但是默认情况下这行是取消的,因为服务会在tcp 连接的套接字中知道连接的ip地址。我们把主配置文件改成这样然后看一下设置效果:

listen=yes

anonymous_enable=yes

pasv_enable=yes

pasv_min_port=3000

pasv_max_port=3003 登录服务器运行3次ls命令,再在服务器端运行netstat命令查看效果:

# netstat -an

……

tcp 0 0 192.168.0.105:3000 192.168.0.122:11066 TIME_W AIT

tcp 0 0 192.168.0.105:3002 192.168.0.122:11065 TIME_W AIT

tcp 0 0 192.168.0.105:3001 192.168.0.122:11063 TIME_W AIT 我们看到,每次ls命令产生了一个连接,服务器开的端口是3000和3003之间。在vsftpd2.0.3 以后的版本中,pasv 端口允许我们重复开启,在之前的版本里是不允许的,也就是说同一个端口可以同时与客户端建立多条连接,大家可以自己试验一下。

大多数人认为在防火墙网络环境中Passive模式比Port模式的问题少,但我们注意到在Passive模式下,客户端向服务器端一个临时的目的端口发起连接,一些防火墙或者设备的访问控制列表(ACL)可能会阻止这种连接;同样服务器的回应也是从一个临时的端口到另一个临时的端口,防火墙或者访问列表也会阻止这种连接。在许多路由器和防火墙上(包括iptables)允许你使用访问列表关键字"established"来避免第二个问题,"established"关键字告诉路由器允许带ACK标志的包通过。而对于第一个问题,我们虽然使用pasv_min_port和

pasv_max_port语句来限制服务器开设临时端口的范围,从而在防火墙上打开这些端口,但这样做还是存在一定的安全漏洞。好在多数状态检测防火墙例如Linux netfileters支持ftp协议的深层状态检测,进行准确的PASV动态端口过滤。五、vsftpd高级操作这一节我们介绍一下vsftpd的其它一些知识,其中包括:双模式切换、基于ip的虚拟ftp 站点、基于数据库虚拟用户建立及管理、基于OpenSSL 的加密数据传输。

1. vsftpd双模式切换

前面我们提过,vsftpd 服务是支持在linux下的两种服务模式:独立(standalone)模式和守护进程(xinetd)模式。在standalone模式下,vsftpd进程启动后会一直占用系统资源,当有连接请求时,它会迅速反应;在xinetd模式下,ftp服务是由守护进程统一管理,当出现ftp 连接请求时,守护进程才将ftp服务启动,这种方式最大的优点是没有连接的时候ftp服务不会占用系统资源,处于睡眠状态,但因为要花费时间去唤醒该服务,所以响应时间较长。

之前做的试验一直是把vsftpd 做在独立模式下,下面我们把它移到守护进程下。注意在工作在守护进程下时,有的参数并不起作用,详细请查阅vsftpd帮助信息(man vsftpd.conf)。

我们需要在守护进程配置目录/etc/xinetd.d/里建立vsftpd 的守护进程文件。我们在安装时已经将该文件考到/etc/xinetd.d/目录下了。我们稍稍修改其内容:

#vi /etc/xinetd.d/vsftpd

service ftp

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/vsftpd

server_args = /etc/vsftpd/vsftpd.conf

nice = 10

}

接下来把配置文件中的listen=yes或listen_ipv6=yes去掉,停掉vsftpd服务,重启xinetd 服务:

# sesrvice vsftpd stop

# service xinetd restart

重新启动守护进程后,vsftpd 服务就会让守护进程来管理了。在守护进程管理过程中,我们再修改主配置文件的话,就不需要重新启动服务了。2. 基于IP的虚拟ftp站点这一小节我们来讨论在同一服务器上建立多个ftp站点,每个站点相互独立,拥有独立的配置文件。当然服务器必须有两个以上的IP地址。在standalone模式下,我们可以考虑启动多个ftp服务进程;在xinetd模式下,可以让守护进程来管理。下面我们分别讨论这两种情况。为简单起见,我们在服务器上建立两个匿名虚拟站点。下面是这两个站点的信息:

站点1 站点2 ip地址 192.168.0.105 192.168.0.106

主配置文件 /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd2.conf

匿名用户映射的本地用户

默认为ftp 新建立ftp2

匿名用户主目

/var/ftp/ /var/ftp2/

standalone模式下虚拟站点的建立

首先我们修改站点1的配置文件/etc/vsftpd/vsftpd.conf为下面所示:

listen=yes

listen_address=192.168.0.105

anonymous_enable=yes

local_enable=yes

pam_service_name=vsftpd

write_enable=yes

ftpd_banner=This is ftp1 site

站点1就这样配置完毕了。接下来为站点2建立ftp2的用户:

# mkdir /var/ftp2/

# useradd -d /var/ftp2/ ftp2 为了让站点2知道匿名用户的主目录为/var/ftp2,我们需要在配置文件中手动指定站点2使用ftp2用户登录,于是我们要用到下面这条语句:

ftp_username=local_username

建立站点2的配置文件/etc/vsftpd/vsftpd2.conf,内容如下:

listen=yes

listen_address=192.168.0.106

anonymous_enable=yes

local_enable=yes

pam_service_name=vsftpd

write_enable=yes

ftp_username=ftp2

ftpd_banner=This is ftp2 site

接下来我们启动vsftpd服务,就可以看到效果了。需要注意的是这里就不能用service vsftpd start命令来启动服务了,必须用第三节前面介绍的方式启动。

# /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &

[1] 2287

# /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd2.conf &

[1] 2288 # ftp 192.168.0.105

Connected to 192.168.0.105.

220 This is ftp1 site

530 Please login with USER and PASS.

……

# ftp 192.168.0.106

Connected to 192.168.0.106.

220 This is ftp2 site

……

我们在各自的配置文件设置了不同的banner,上面已经看到效果了。守护进程模式下虚拟站点的建立

在standalone模式下,IP的绑定在配置文件里配置了,配置文件名及其位置在启动服务的命令参数里指定;在xinetd模式下,这两步需要在守护进程配置文件里配置。这样在守护进程里面我们就得用到这两个设置:

bind=绑定的ip

server_args=每个站点的配置文件

那么我们来做守护进程文件,首先来写站点1的守护进程文件:

# vi /etc/xinetd.d/vsftpd

service ftp

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/vsftpd

server_args = /etc/vsftpd/vsftpd.conf

nice = 10

bind = 192.168.0.105

} 再建立站点2的守护进程文件,并输入下面的内容

# vi /etc/xinetd.d/vsftpd2

service ftp

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/vsftpd

server_args = /etc/vsftpd/vsftpd2.conf

nice = 10

bind = 192.168.0.106

}

这样两个守护进程文件就写完了,用户也在上个试验已经建立完了。接下来继续修改两个站点的配置文件,均是把listen、listen_address两行删去即可。现在我们可以重新启动xinetd 服务,测试结果就不贴出来了。

3. 关于TCP Wrappers

TCP Wrappers的作用,就是通过分析TCP网络数据包,根据其包头的IP地址和端口号,决定是否让这个数据进入到主机之中,因此我们也可以把它当成一个最内层的防火墙。数据包要进入ftp服务器,首先经过netfilter的过滤,通过TCP Wrappers筛选,守护进程(xinetd 模式)限制,最后才能交由vsftpd进程来处理。

我们可以设置TCP Wrappers来限制某些主机能或者不能访问ftp服务器,这需要编辑两个文件:

/etc/hosts.allow

/etc/hosts.deny

当数据包通过TCP Wrappers筛选时,/etc/hosts.allow文件会首先读取,然后再读取/etc/hosts.deny文件,就是说/etc/hosts.allow优先级要高一些。这两个文件设置规则如下: ::

字段是服务名,也就是/etc/rc.d/init.d/目录下存在的文件名;第二个字段是可以是IP、域名、一台主机或者一个网段;第三个字段表示允许通过或者禁止。具体看下面的例子:

vsftpd:192.168.0.111:allow //允许主机192.168.0.111访问vsftpd服务器

httpd:10.100.1.0/255.255.255.0:deny //禁止10.100.1.0/24这个子网访问www服务

最后一个字段的:allow或:deny可以省略,写在/etc/hosts.allow文件里默认就是allow,/etc/hosts.deny文件里默认是deny。其实我们可以把所有语句都写在hosts.allow文件中,但建议大家把allow和deny的语句分别写到两个文件之中。

TCP Wrappers默认规则是允许所有数据包通过,所以大家在填写允许条目之后,一定还要加一条deny语句来拒绝其它的包。比如:

# vi /etc/hosts.allow

vsftpd:192.168.1.0/255.255.255.0 //允许192.168.1.0/24网段可以访问ftp

# vi /etc/hosts.deny

vsftpd:ALL //拒绝其它所有主机访问ftp 如果vsftpd工作在守护进程模式下,不但可以受到TCP Wrappers的筛选,还可以设置守护进程配置文件来进行同样的过滤,这使用下面两条语句:

only_from = //限制可以访问的IP、主机、网络 no_access = //限制不能访问的IP、主机、网络下面我们将only_from语句加入/etc/xinetd.d/vsftpd文件中,实现只有子网192.168.0.128/25才可以登录ftp服务器:

service ftp

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/vsftpd

server_args = /etc/vsftpd/vsftpd.conf

nice = 10

only_from = 192.168.0.128/25

} 如果vsftpd工作在standalone模式下,必须在编译vsftpd之前修改头文件builddefs.h 以支持TCP Wrappers,详情请参加软件安装小节。另外还需要在vsftpd主配置文件中加入tcp_wrappers=yes参数。4. 结合MySql数据库

将vsftpd与MySql相结合,我们可以把用户和日志信息放到数据库里面去,如果再结合php来管理数据库,则可以使vsftpd管理更加方便。下面我们就来讨论一下基于MySql 的虚拟户和日志功能。使用MySql来实现虚拟用户

前面我们介绍了两类用户,关于匿名用户的语句比较多,权限限制比较灵活;而本地用户的特点是每个用户对应一个密码和主文件夹,登录控制比较灵活。可不可以将两者的优点结合一下呢?答案是肯定的,这就是虚拟用户。关于虚拟用户的启用,需要使用以下两条语句:

guest_enable=yes/no

guest_username=user_name 上述guest_enable表示是否开启虚拟用户功能,guest_username表示虚拟用户登录后映射的本地用户名。如果开启虚拟用户功能,本地用户登录后将映射到guest_username参数指定的用户,主目录也变成该用户的主目录。

我们修改vsftpd主配置文件,变为下面的样子:

listen=yes

anonymous_enable=yes

local_enable=yes

pam_service_name=vsftpd

write_enable=yes

dirlist_enable=yes

download_enable=yes

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=no

anon_umask=073

guest_enable=yes

guest_username=virftp

再新建一个用户virftp改变一下其主目录的权限:

# useradd -d /var/virftp -s /sbin/nologin virftp

# chmod 704 /var/virftp

这时再以/etc/passwd中的用户登录ftp,通过查看内容,会发现主目录已经切换到/var/virftp/,可以下载和上传文件,但不能改名和删除。这就是说,限制匿名用户的参数也同样适用于本地用户。

如果想让虚拟用户像本地用户那样拥有每个用户独立的主目录、独立的配置文件和权限,又该怎么办呢?还记得user_config_dir参数吧!在每个用户独立的配置文件里设定不同的权限和local_root参数就可以了。再来看看这个参数:

virtual_use_local_privs=yes/no

从刚才的实验可以看到,虚拟用户登录后,受到匿名用户参数的限制。我们可以通将此参数的值改为yes,则虚拟用户会变得和本地用户一样,拥有和本地用户一样的特权。由于我们平常都是看中了匿名用户限制参数比较细致这个特点才启用虚拟用户的,所以此参数默认值为no!下面我们结合MySql,把用户登录信息放到数据库里面去。首先我们需要安装MySql。

到https://www.doczj.com/doc/7d10801643.html,/downloads/mysql/5.1.html下载MySql,为了简单起见,我们下载在linux下已经编译好的版本。我下载的版本是mysql-5.1.18-beta-linux-i686-glibc23.tar.gz,然后照下面的步骤来安装MySql。

# groupadd mysql

# useradd -g mysql mysql

如果系统中已经有了mysql用户,就可以省掉这步操作。 # cd /usr/local

# tar zxvf mysql-5.1.18-beta-linux-i686-glibc23.tar.gz

# ln -s mysql-5.1.18-beta-linux-i686-glibc23 mysql

如果原来系统中已经安装旧版mysql,最好将它卸载,除非你有足够的把握很好地面对系统中的两个mysql;通常习惯将mysql安装在/usr/local/mysql中,但为了将来版本升级的需要,建议使用链接方式使用mysql。 # cd mysql

# chown -R mysql:mysql .

# scripts/mysql_install_db --user=mysql

初始化mysql数据库,这步之前必须保证mysql用户有权限访问mysql目录。 # chown -R root .

# chown -R mysql data

最好做这两步,至少官方文档是这么建议的。 MySql的命令和man文档并不在PATH和MANPATH中,所以我们要手动加入。打开vi /etc/profile文件,找到export PATH ...那一行,大约在40行左右,在它的前面加上一行:

PATH=”$PATH”:/usr/local/mysql/bin

打开/etc/man.config(有的版本为/etc/man.conf),在它的任何地方加入一行:

MANPATH /usr/local/mysql/man 到这时mysql就已经安装好了,通过这个命令启动mysql:

/usr/local/mysql/bin/mysqld_safe --user=mysql & 为了让mysql支持开机启动,执行下面的命令:

# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

# chkconfig –add mysqld

这样就可以让mysql以服务的方式开机启动,且还可以使用如下命令管理mysql服务: # service mysqld {start|stop|restart|reload|force-reload|status} 启动mysql服务,检测下是否正常运行:

# netstat -l|grep mysql

tcp 0 0 *:mysql *:* LISTEN

unix 2 [ ACC ] STREAM LISTENING 25534 /tmp/mysql.sock

看到了吧,mysql已经在监听了,但它的socket file在/tmp/下,郁闷!默认情况下,mysql没有密码,任何人都可以登入。为了加强安全性,我们给mysql加上root帐号密码:

# mysqladmin -u root password 'your_P@ssw0rd'

这样以后登录就需要密码了:

# mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 5

Server version: 5.1.18-beta MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> 建立数据库ftpdb:

mysql> create database ftpdb; 在数据库ftpdb中建立一个表ftpuser,表中有username和password字段:

mysql> use ftpdb;

Database changed

mysql> create table ftpuser(username char(20) not null, password char(64) not null);

Query OK, 0 rows affected (0.15 sec)

这里要注意密码字段的长度,不同的算法生成的密文长度是不一样的,建议不要少于50位,否则可能导致密文在存储时被截短。我们插入两条记录作为两个ftp的登录名和密码,使用mysql自带的password函数来加密密码:

mysql> insert into ftpuser values('test1',password('abc'));

Query OK, 1 row affected, 1 warning (0.08 sec)

mysql> insert into ftpuser values('test2',password('123'));

Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select * from ftpuser;

+----------+-------------------------------------------+

| username | password |

+----------+-------------------------------------------+

| test1 | *0D3CED9BEC10A777AEC23CCC353A8C08A633045E |

| test2 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |

+----------+-------------------------------------------+

2 rows in set (0.00 sec) 然后我们再建立一个可以让ftp服务登陆数据库的用户:

mysql> grant select on ftpdb.ftpuser to ftpdb_query@localhost identified by 'P@ssw0rd';

这个用户只能浏览ftpdb 数据库下的ftpuser 表中内容,我们如果想以后分配一个可以完全管理ftpdb 数据库的用户,再这样:

mysql> grant all on ftpdb.* to ftpdb_all@localhost identified by 'P@ssw0rd'; 到这里MySql的设置就算完了,接下来安装PAM 基于mysql 数据库的认证插件,我们可以到http: //https://www.doczj.com/doc/7d10801643.html,/projects/pam-mysql/下载得到。我下载的文件是pam_mysql-0.7RC1.tar.gz。

# tar zxvf pam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

# ./configure –with-mysql=/usr/local/mysql

# make

# make install

这里要注意两点,一是我们的mysql是手动安装在/usr/local/mysql下的,因此./configure 命令需要指定mysql安装目录;二是安装好之后,pam_mysql.so被安装到了/usr/lib/security. 如果make过程出现错误,不要理会,只要产生pam_mysql.so文件即可,我们可以直接将此文件考入/lib/security/目录。然后来编写PAM认证文件: # vi /etc/pam.d/ftpdb

auth required /usr/lib/security/pam_mysql.so user=ftpdb_query passwd=P@ssw0rd host=localhost db=ftpdb table=ftpuser usercolumn=username passwdcolumn=password crypt=2 account required /usr/lib/security/pam_mysql.so user=ftpdb_query passwd=P@ssw0rd host=localhost db=ftpdb table=ftpuser usercolumn=username passwdcolumn=password crypt=2 注意,整个这个文件中只有auth和account两行内容,中途不要加回车换行;文件中不要再有包含其它pam模块的行;如果pam_mysql.so文件没有在/lib/security目录,就需要指定文件路径。文件中其它字段的意思是:

user 访问数据库用户名

passwd 访问数据库用户密码

host 数据库主机

db 数据库名

table 表名

usercolumn 用户列名

passwdcolumn 密码列名

crypt 密码验证机制;0 代表明文,1 代表DES 加密,2 代表Mysql的password()函数加密,3代表md5算法,4代表sha加密。现在我们修改vsftpd主配置文件/etc/vsftpd/vsftpd.conf,把pam_service_name的值改为ftpdb,也就是我们刚才建立的那个PAM 认证文件的名字。再登录服务器测试,可以发现/etc/passwd中的用户已经无法登录到服务器了,而数据库中存储的用户名是可以登录的。我们还可以按前面所述的方法为每个虚拟用户建立独立的配置文件,指定独立的主目录;还可以结合apache服务建立php页面,然后实现让用户在web界面注册帐号、修改密码,这要比原来的认证方式灵活得多。

在MySql中记录日志

接下来我们看一下如何利用刚才的PAM 模块来结合mysql 数据库记录vsftpd 服务的日志。在介绍之前,我们来看看vsftp中关于日志记录的参数。

xferlog_enable=yes/no //是否启用xferlog 日志格式

Linux系统vsftpd安装及设置步骤

1.安装 1. 在要创建FTP的服务器上输入命令: ps -ef |grep vsftpd 查一下系统有没有安装vsftpd这个服务器,如果出现如下图所示的界面说明已经安装,否则没有。 2. 然后再执行:yum install vsftpd -y 进行在线安装vsftpd 服务。 如上图看到Complete! ,表示安装完成。 3. 安装成功以后需要把匿名登陆的这个功能关闭了。 使用命令:vim /etc/vsftpd/vsftpd.conf 然后在里面找到: anonymous_enable=YES,改成anonymous_enable=NO 4. 然后再查看一下vsftpd这个服务有没有启动。 使用命令:chkconfig --list 如果如下图所示表示没有启动。

使用以下命令启动:chkconfig --level 35 vsftpd on 5. 用客户端连接ftp后提示500 OOPS:cannot change directory: /home/xxx 问题很奇怪,百度了一下,发现可能是由于启用了SELinux引起的问题 输入命令:vi /etc/sysconfig/selinux 将SELINUX=enforcing 修改为SELINUX=disabled,关闭SELINUX后, 重新启动机器,问题解决。 6. 再接下来就是创建用户名。创建用户名:useradd jiuyang123 useradd -d /home/... -s /sbin/nologin myusername# /home/... 替换为你想让该用户访问到的路径# myusername 替换为你自己取的用户名 #/sbin/nologin意思是用户不允许登录(通过ftp可以连接) 7. 再然后就是创建密码。命令:passwd jiuyang123 再输入两次密码就可以了。 8.更改目录的所有者 chmod -R 755 /home/... 1.登录FTP 1. 关闭防火墙:/etc/init.d/iptables stop 1.重启服务:setsebool ftpd_disable_trans 1 # setsebool -P ftpd_disable_trans 1 #关闭SELINUX对ftpd的保护 /sbin/service vsftpd restart 注意上一阶段第5步,将SELINUX中关于ftp服务传输控制的默认设置修改后再将vsftp服务重新启动一下

vsftpd服务器设置

1.vsftpd服务软件包 vsftpd-2.0.5-10.el5.i386.rpm:vsftpd主程序包 2.vsftpd相关文档 /etc/vsftpd/vsftpd.conf:vsftpd的核心配置文件 /etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP服务器 /etc/vsftpd/user_list:指定允许使用vsftpd的用户列表文件 /etc/vsftpd/vsftpd_conf_migrate.sh:是vsftpd操作的一些变量和设置脚本/var/ftp/:默认情况下匿名用户的根目录 FTP常规配置应用案例1: 需求: 公司技术部准备搭建一台功能简单的FTP服务器,允许所有员工上传和下载文件,并允许创建用户自己的目录。 分析: 允许所有员工上传和下载文件需要设置成允许匿名用户登录并且需要将允许匿名用户上传功能开启,最后anon_mkdir_write_enable字段可以控制是否允许匿名用户创建目录。 解决方案: (1)配置vsftpd.conf主配置文件(服务器配置支持上传) 允许匿名用户访问 anonymous_enable=YES

允许匿名用户上传文件并可以创建目录anon_upload_enable=YES anon_mkdir_write_enable=YES

保存退出 (2)上传目录ftp用户的写入权限 大家注意,默认匿名用户家目录的权限是755,这个权限是不能改变的。切记!切记!! 下面我们来一步一步的实现,先修改目录权限,创建一个公司上传用的目录,叫companydata,分配ftp用户所有,目录权限是755 OK了 (3)修改selinux(selinux支持上传)这个也是很多教程没有的一步 使用getsebool -a | grep ftp命令可以找到ftp的bool值,然后我们来改getsebool -a 是显示所有的selinux的布尔值,通过管道,查找与ftp相关的

第6季 Vsftpd服务全攻略之高级配置

第6季 Vsftpd服务全攻略之高级配置 企业环境 公司为了宣传最新的产品信息,计划搭建FTP服务器,为客户提供相关文档的下载。对所有权互联网开放共享目录,允许下载产品信息,禁止上传。公司的合作单位能够使用FTP服务器进行上传和下载,但不可以删除数据。并且保证服务器的稳定性,进行适当优化设置哈~ 需求分析 根据企业的需求,对于不同用户进行不同的权限限制,FTP服务器需要实现用户的审核。需考虑到服务器的安全性,所以关闭实体用户登录,使用虚拟帐号验证机制,并对不同虚拟帐号设置不同的权限。为了保证服务器的性能,还需要根据用户的等级,限制客户端的连接数及下载速度。 解决方案 1、创建用户数据库 (1)创建用户文本文件 先建立用户文本文件vsftpd_virtualuser.txt,添加两个虚拟帐号,公共帐号ftp及客户帐号vip touch /etc/vsftpd/vsftpd_virtualuser.txt vim /etc/vsftpd/vsftpd_virtualuser.txt 格式: 虚拟帐号1 密码 虚拟帐号2 密码 保存退出哈~ (2)生成数据库

保存虚拟帐号和密码的文本文件无法被系统帐号直接调用哈~我们需要使用 db_load命令生成db数据库文件 db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db 注意: rhel5默认只安装db4-4.3.29-9.fc6.i386.rpm和 db4-devel-4.3.29-9.fc6.i386.rpm, 要使用db_load需要将db4-utils-4.3.29-9.fc6.i386.rpm包安装上哈~否则会出现下图的错误:找不到db_load命令。 (3)修改数据库文件访问权限 数据库文件中保存着虚拟帐号的密码信息,为了防止非法用户盗取哈,我们可以修改该文件的访问权限。生成的认证文件的权限应设置为只对root用户可读可写,即600 chmod 600 /etc/vsftpd/vsftpd_virtualuser 2、配置PAM文件 为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块.PAM(Plugable Authentication Module)为可插拔认证模块,不必重新

Ubuntu下vsftpd的配置与使用

Ubuntu下安装FTP服务(以VSFTPD为例)(一)安装与配置 (1)安装vsftpd $sudo apt-get install vsftpd 这里会提示无法创建/home/ftp目录,手动创建一个 $sudo mkdir /home/ftp 如果提示已创建目录就不用理它了 (2)编辑配置文件/etc/vsftpd.conf $sudo gedit /etc/vsftpd.conf 也可以使用vi 主要配置: 将local_enable=YES前的#去掉,使其可用,表示允许本地用户登录; 将anonymous_enable=NO,即不允许匿名登录ftp; (3)启动vsftpd $sudo /etc/init.d/vsftpd start (4)添加用户lzftp $sudo useradd -m -d /home/lzftp -G root lzftp 编辑lzftp的密码: $sudo passwd lzftp 重启vsftpd服务 $sudo /etc/init.d/vsftpd restart (二)使用ftp服务 (1)ftp的文件存放 在/home/lzftp下放入文件Hello.txt以供下载 (2)ftp服务的使用 $ ftp $ ftp> open 192.168.48.10 提示输入用户名和密码,我这里用户名就是lzftp (3)使用ftp查看文件 (Linux下)$ ftp> ls –l (Windows下)$ftp> dir 注意:可以使用help命令查看命令,删除前一个字符使用delete键

(4)使用ftp服务下载文件 $ ftp> get Hello.txt /home/stander/Hello.txt 注意:stander为当前的用户 (三)具体配置参数详解 vsftpd 作为一个主打安全的FTP服务器,有很多的选项设置。下面介绍了vsftpd的配置文件列表,而所有的配置都是基于vsftpd.conf这个配置文件的。本文将提供完整的vsftpd.conf 的中文说明。学习本文的内容将有助于你初步了解vsftpd的配置文件,但针对具体情况还需要制定具体的配置方法。 Vsftpd的配置文件: /etc/vsftpd/vsftpd.conf主配置文件 /usr/sbin/vsftpd Vsftpd的主程序 /etc/rc.d/init.d/vsftpd启动脚本 /etc/pam.d/vsftpd PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户) /etc/vsftpd/ftpusers 禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4 中此文件在/etc/ 目录下) /etc/vsftpd/user_list 禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4 中此文件在/etc/ 目录下) /var/ftp 匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录 /var/ftp/pub 匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除) /etc/logrotate.d/vsftpd.log Vsftpd的日志文件 vsftpd的主配置文件/etc/vsftpd/vsftpd.conf说明(修改前先备份): # Example config file /etc/vsftpd/vsftpd.conf # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities. # Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=YES(是否允许匿名登录FTP服务器,默认设置为YES允许,即用户可使用用户名ftp或anonymous进行ftp登录,口令为用户的E-mail地址。如不允许匿名访问去掉前面#并设置为NO ) # Uncomment this to allow local users to log in. local_enable=YES(是否允许本地用户 ( 即 linux 系统中的用户帐号) 登录FTP服务器,默认

vsftpd配置文件详解

vsftpd配置文件详解 1.默认配置: 1>允许匿名用户和本地用户登陆。 anonymous_enable=YES local_enable=YES 2>匿名用户使用的登陆名为ftp或anonymous,口令为空;匿名用户不能离开匿名用户家目录/var/ftp,且只能下载不能上传。 3>本地用户的登录名为本地用户名,口令为此本地用户的口令;本地用户可以在自己家目录中进行读写操作;本地用户可以离开自家目录切换至有权限访问的其他目录,并在权限允许的情况下进行上传/下载。 write_enable=YES 4>写在文件/etc/ers中的本地用户禁止登陆。 2.配置文件格式: 的内容非常单纯,每一行即为一项设定。若是空白行或是开头为#的一行,将会被忽略。内容的格式只有一种,如下所示: option=value 要注意的是,等号两边不能加空白。 3.匿名用户(anonymous)设置 anonymous_enable=YES/NO(YES) 控制是否允许匿名用户登入,YES 为允许匿名登入,NO 为不允许。默认值为YES。write_enable=YES/NO(YES) 是否允许登陆用户有写权限。属于全局设置,默认值为YES。 no_anon_password=YES/NO(NO) 若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。 ftp_username=ftp 定义匿名登入的使用者名称。默认值为ftp。 anon_root=/var/ftp 使用匿名登入时,所登入的目录。默认值为/var/ftp。注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限。 anon_upload_enable=YES/NO(NO)

VSFTP搭建 配置文件详解 实例

关于VSFTP vsftpd是目前Linux最好的FTP服务器工具之一,其中的vs就是“Very Secure”的缩写,可见它的最大优点就是安全,除此之外,它还具有体积小,可定制强,效率高的优点。 它可运行在Linux、Solaris等系统中,支持很多其他的FTP 服务器不支持的特征: 非常高的安全性需求: 带宽限制 良好的可伸缩性 创建虚拟用户的可能性 分配虚拟IP地址的可能性: 一、安装vsftpd服务 在进行安装该服务之前,必须现将linux的环境装好才行: [root@testtimeslinux root]# rpm -qa|grep vsftpd//查看是否已经安装了该软件 vsftpd-1.2.0-4 [root@testtimeslinux root]# rpm -e vsftpd-1.2.0-4//卸载已经安装的软件 warning: /etc/vsftpd/vsftpd.conf saved as /etc/vsftpd/vsftpd.conf.rpmsave [root@testtimeslinux root]# [root@testtimeslinux root]# rpm -qa|grep vsftpd //再次查看是否完全卸载 [root@testtimeslinux /]# cd /mnt [root@testtimeslinux /]# mkdir cdrom [root@testtimeslinux /]# mount /dev/cdrom /mnt/cdrom//在根目录下进行挂载 mount: block device dev/cdrom is write-protected, mounting read-only 在Linux系统中,如果要使用硬盘、光盘、软盘或MO盘等存储设备,必须先进行挂装(Mount)。当存储设备挂装完成之后,就可以将其作为一个目录来进行访问了。挂装设备需要使用mount命令。执行这一命令,至少要先确定下列三种信息: 1. 要挂装(Mount)对象的文件系统类型; 2. 要挂装(Mount)对象的设备名称(/dev/...); 3. 要将设备挂装(Mount)到哪一目录。 [root@testtimeslinux /]# cd /mnt/cdrom/package [root@testti meslinux…]# rpm -ivh vsftpd-2.2.2-6.el6_0.1.i686.rpm //进行安装vsftpd-2.2.2-6.el6_0.1.i686.rpm,此操作相当于window下的双击setup文件。信息如下: warning: vsftpd-2.2.2-6.el6_0.1.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY Preparing... ########################################### [100%] 1:vsftpd ########################################### [100%] [root@testtimeslinux RPMS]# rpm -aq|grep vsftpd //查看是否安装vsftpd vsftpd-2.2.2-6.el6_0.1.i686 [root@testtimeslinux RPMS]# cd / [root@testtimeslinux /]# umount mnt/cdrom//退出挂载 [root@testtimeslinux /]# service vsftpd start//启动vsftpd 服务 为vsftpd 启动vsftpd:[ 确定]

linux下FTP服务器安装配置(VSftp)

环境: RedHat AS4 说明: 如果不做说明,一般安装命令均使用ROOT权限,用 # 表示 特别说明:无 以下文章介绍Liunx 环境下vsftpd的三种实现方法 一、前言 Vsftp(Very Secure FTP)是一种在Unix/Linux中非常安全且快速稳定的 FTP服务器,目前已经被许多大型站点所采用 Vsftpd的实现有三种方式 1、匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问 2、本地用户形式:以/etc/passwd中的用户名为认证方式 3、虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服 务器中。相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器 的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增 强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密 码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。 对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对 下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来说, 虚拟用户是一种极好的解决方案。

默认情况下vsftp上传之后文件的权限是600,目录权限是700 想要修改上传之后文件的权限,有两种情况 如果使用vsftp的是本地用户 则要修改配置文件中的 local_umask的值 如果使用vsftp的是虚拟用户 则要修改配置文件中的 anon_umask的值 二、vsftp配置大全-三种方式的实现 1、匿名用户形式: 任务实现匿名用户上传,下载,删除,重命名,新建目录,删除目录,重命名目录; 第一步:在/var/ftp/下,新建一个目录share; chmod –R 777 /var/ftp/share/ chown –R nobody:nobody /var/ftp/share/ 第二步:更改/etc/vsftpd/vsftpd.conf anonymous_enable=YES local_enable=YES

Linux下vsftp配置笔记!!!

这些咚咚只是我在看书时记录下来的一些简单的配置命令和说明,有些地方也许写的不是很详细,大家可以在参考其他资料来学习! 1.vsftpd 服务软件包 vsftpd-2.0.5-10.el5.i386.rpm:vsftpd 主程序包 2.vsftpd 相关文档 /etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件 /etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器 /etc/vsftpd/user_list:指定允许使用vsftpd 的用户列表文件 /etc/vsftpd/vsftpd_conf_migrate.sh:是vsftpd 操作的一些变量和设置脚本/var/ftp/:默认情况下匿名用户的根目录 (1)配置vsftpd.conf 主配置文件(服务器配置支持上传) 允许匿名用户访问 anonymous_enable=YES 允许匿名用户上传文件并可以创建目录 anon_upload_enable=YES anon_mkdir_write_enable=YES 大家注意,默认匿名用户家目录的权限是755,这个权限是不能改变的。切记!切记!! 2FTP 常规配置应用案例: 需求: 公司内部现在有一台FTP和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文件、创建目录、更新网页等等哈~公司现有两个部门负责维护任务,他们分别适用team1和team2帐号进行管理。先要求仅允许team1和team2 帐号登录FTP 服务器,但不能登录本地系统,并将这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。 分析: 将FTP和WEB服务器做在一起是企业经常采用的方法,这样方便实现对网站的维护,为了增强安全性,首先需要使用仅允许本地用户访问,并禁止匿名用户登录。其次使用chroot 功能将team1和team2 锁定在/var/www/html目录下。如果需要删除文件则还需要注意本地权限~ 解决方案: (1)建立维护网站内容的ftp 帐号team1 和team2 并禁止本地登录,然后设置其密码useradd -s /sbin/nologin 用户名 (2)配置vsftpd.conf 主配置文件并作相应修改 vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO:禁止匿名用户登录

vsftpd配置文件的详细说明

vsftpd配置文件的详细说明 /etc/vsftpd/vsftpd.conf 本身就是一个挺详细的配置文件,且使用『man 5 vsftpd.conf 』则可以得到完整的参数说明。 与主机较相关的设定值 connect_from_port_20=YES (NO) ftp-data 的端口; listen_port=21 vsftpd 使用的命令通道之端口号,如果您想要使用非正规的端口,在这个设定项目修改吧!不过你必须要知道,这个设定值仅适合以stand alone 的方式来启动(对于super daemon 无效) dirmessage_enable=YES (NO) 当用户进入某个目录时,会显示该目录需要注意的内容,显示的文件默认是.message ,你可以使用底下的设定项目来修改! message_file=.message 当dirmessage_enable=YES 时,可以设定这个项目来让vsftpd 寻找该文件来显示信息! listen=YES (NO) 若设定为YES 表示vsftpd 是以standalone 的方式来启动的 pasv_enable=YES (NO) 启动被动式联机模式(passive mode),一定要设定为YES 的 use_localtime=YES (NO) 是否使用本地时间?vsftpd 预设使用GMT 时间(格林威治) write_enable=YES (NO) 如果你允许用户上传数据时,就要启动这个设定值; connect_timeout=60 单位是秒,在数据连接的主动式联机模式下,我们发出的连接讯号在60 秒内得不到客户端的响应,则不等待并强制断线。 accept_timeout=60 当用户以被动式PASV 来进行数据传输时,如果主机启用passive port 并等待client 超过60 秒而无回应,那么就给他强制断线!这个设定值与connect_timeout 类似,不过一个是管理主动联机,一个管理被动联机。

超详细linux vsftpd配置大全文档

FTP服务的配置 ftp服务器的软件——vsftpd,其全称是“Very Secure FTP Daemon”。Vsftpd的配置文件在/etc/vsftpd/目录下 1 ftpusers PAM模块 /etc/pam.d/vsftpd 所指定的那个无法登录的用户配置文件。 2 user_list 默认的情况下,写在这个文件里帐号都不允许登录vsftpd,它能否生效与vsftpd.conf中的参数userlist_enable 、userlist_deny有关。 本地用户管理: 1)selinux布尔值ftp_home_dir 改为on, setsebool -P ftp_home_dir on 2)配置文件vsftpd.conf中的local_enable=YES,即默认设置 此时,这些实体用户能可以离开他们默认的目录即/home/~,如果需要将实体用户限制在他们的默认目录下,不允许他们到其他目录需要进行一下设置: Chroot_local_user=NO,(默认此行被注释,即不启动),修改这行下面的参数 Chroot_list_enable=YES和chroot_list_file=/etc/vsftpd/chroot_list,然后 在/etc/vsftpd/目录下创建chroot_list文件,将需要限制离开默认目录的实体用户的名字写进去。 修改user_list_enable=YES user_deny=YES,则可将不允许登录的用户写入/vsftpd目录下的user_list。 实体用户能上传、下载、删除默认目录下的文件。 修改默认发布目录 1)建立发布目录。mkdir -p /share/doc 2)修改发布目录权限、属主和selinux安全上下文。

vsftpd配置讲解

vsftpd配置文件讲解 vsftpd作为一个主打安全的FTP服务器,有很多的选项设置。下面介绍了vsftpd的配置文件 列表,而所有的配置都是基于vsftpd.conf这个配置文件的。本文将提供完整的vsftpd.conf 的中文说明。 本文根据RedKing的帖子整理节选而来。原文地址在vsftpd作为一个主打安全的FTP服务器, 有很多的选项设置。下面介绍了vsftpd的配置文件列表,而所有的配置都是基于vsftpd.conf 这个配置文件的。本文将提供完整的vsftpd.conf的中文说明。学习本文的内容将有助于你 初步了解vsftpd的配置文件,但针对具体情况还需要制定具体的配置方法。 vsftpd的配置文件 /etc/vsftpd/vsftpd.conf主配置文件 /usr/sbin/vsftpd Vsftpd的主程序 /etc/rc.d/init.d/vsftpd启动脚本 /etc/pam.d/vsftpd PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用 户来自/etc/vsftpd/ftpusers文件中的用户) /etc/vsftpd/ftpusers 禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。 /etc/vsftpd/user_list 禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP 服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问

实验五vsFTPd服务的配置

实验报告 首都师范大学信息工程学院 课程名称:网络设计与应用管理实践 实验名称:vsFTPd服务的配置 任课教师:刘羽实验时间:2010-04-17 姓名:张蕴喆学号:1081000051 ---专业:计算机科学与技术 一、实验目的及要求 1、熟练掌握Ubuntu下vsftpd的基本配置方法 二、实验环境 (操作系统、软件、硬件等)

三、实验内容、步骤、现象 实验内容: 1、下载、安装vsftpd 2、配置本地用户模式的ftp服务 3、配置虚拟用户模式的ftp服务 实验步骤: 1、下载,安装vspdf

配置ftp服务 编译Vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES 重启vsftpd服务,用户登陆

配置虚拟用户模式的ftp服务 1、首先通过sudo useradd –d /home/work workers命令创建用户workers并且制定用户目录 2、在home目录下建立work目录 3、通过chown命令将目录权限付给workers用户

在etc目录下创建vsftpd目录,并在vsftpd目录下再创建vusers 通过vi编辑器更改vsftpd.conf里面的内容如下

anonymous_enable=NO local_enable=YES pam_service_name=ftp 并在vsftpd.conf文件中添加如下内容 guest_enable=YES guest_username=workers user_config_dir=/etc/vsftpd/vusers 在/etc/pam.d目录下建立ftp文件,并在里面添加如下内容 auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd/ vsftpd_login

vsftpd.conf默认配置

根据/etc/vsftpd/vsftpd.conf默认配置给出设定功能 过滤掉那些注释,以便我们日后修改配置,大家可以删除vsftpd.conf内容,拷贝以下: anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 #anon_upload_enable=YES #anon_mkdir_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES #chown_uploads=YES #chown_username=whoever #xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES #idle_session_timeout=600 #data_connection_timeout=120 #nopriv_user=ftpsecure #async_abor_enable=YES #ascii_upload_enable=YES #ascii_download_enable=YES

#ftpd_banner=Welcome to blah FTP service. #deny_email_enable=YES #banned_email_file=/etc/vsftpd/banned_emails #chroot_list_enable=YES #chroot_list_file=/etc/vsftpd/chroot_list #ls_recurse_enable=YES listen=YES #listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES

CentOS搭建vsftpd服务器详解

1.查看有没有安装vsftpd: rpm -qa | grep vsftpd 2.yum安装vsftpd: yum install vsftpd 3.rpm安装vsftpd: 可以从下面两个地方获得最新的vsftpd的RPM包https://https://www.doczj.com/doc/7d10801643.html,/或者 https://www.doczj.com/doc/7d10801643.html,/ 安装命令: rpm -Uvh vsftpd-1.1.3-8.i386.rpm 4.设置每次开机时自动运行及手工启动它: chkconfig vsftpd on service vsftpd start netstat -tl 可以查看ftp端口是否在侦听了! 5.为vsftpd添加ftp账号 用useradd建立的用户,如果后面不加参数,建立的用户为普通用户,有系统登陆权限,所以要在useradd命令后面加上参数,为虚拟主机添加不可以登录系统的ftp专用账号,命令如下: # useradd –s /sbin/nologin –d /var/www -g ftp ftpadmin 如果显示如下信息: Creating mailbox file: File exists useradd: warning: the home directory already exists. Not copying any file from skel directory into it. 表示用户家目录已经存在(/var/www),不可再新建此目录,并非添加用户失败,接下来给用户设置密码,否则此账号不能使用,命令如下: # passwd ftpadmin 这样就为linux系统添加用户ftpadmin,用户目录指定为/var/www,属于ftp 用户组,且此用户不能登陆系统。 注: -s /sbin/nologin是让其不能登陆系统 -d 是指定用户目录为/var/www -g ftp 把用户加入到ftp组中 修改/var/www目录属性: $ chmod -R 777 /var/www递归地给此目录下所有文件和子目录的读、写、执行权限

阿里云服务器Linux下vsftpd配置详细介绍

Linux下vsftpd配置详细介绍 VSFTPD的文件结构主要包括: /usr/sbin/vsftpd ---- VSFTPD的主程序。 /etc/rc.d/init.d/vsftpd ---- 启动脚本。 /etc/vsftpd/vsftpd.conf ---- 主配置文件。 /etc/pam.d/vsftpd ---- PAM认证文件。 /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件。 /etc/https://www.doczj.com/doc/7d10801643.html,er_list ---- 禁止或允许使用VSFTPD的用户列表文件。 /var/ftp ---- 匿名用户主目录。 /var/ftp/pub---- 匿名用户的下载目录。 此外VSFTPD的日志文件位于/etc/logrotate.d/vsftpd.log。 二:.vsftpd的关闭与启动。 如果你不会配置的话建议关闭吧!虽然我不知道开启会有什么影响,但是我觉得多了一个对外的服务,就多了一份安全隐患,(个人认为哈!) 1. 启动:/etc/rc.d/init.d/vsftpd start 或者service vsftpd start 2. 停止:/etc/rc.d/init.d/vsftpd stop 或者service vsftpd stop 3. 重启:/etc/rc.d/init.d/vsftpd stop 或者service vsftpd restart 分别对应的状态是: root@test ~]# service vsftpd start Starting vsftpd for vsftpd: [ OK ] [root@test ~]# service vsftpd stop Shutting down vsftpd: [ OK ] [root@test ~]# service vsftpd restart Shutting down vsftpd: [FAILED] Starting vsftpd for vsftpd: [ OK ] [root@test ~]# /etc/rc.d/init.d/vsftpd start Starting vsftpd for vsftpd: [ OK ] [root@test ~]# /etc/rc.d/init.d/vsftpd stop Shutting down vsftpd: [ OK ] [root@test ~]# /etc/rc.d/init.d/vsftpd restart Shutting down vsftpd: [FAILED] Starting vsftpd for vsftpd: [ OK ] [root@test ~]# /etc/rc.d/init.d/vsftpd status vsftpd (pid 3931) is running...

vsftpd配置手册

如有帮助,欢迎下载支持vsftpd 配置手册 VSFTPD 施文建 0 关于本文档 1 VSFTPD简述 2 VSFTPD的安装 2.1 RHL9+vsftpd-1.1.3-8.i386.rpm包的安装 2.2 vsftpd-1.2.0.tar.gz的安装 3 VSFTPD的文件结构 4 VSFTPD的启动与停止 5 VSFTPD的设置选项 5.1 连接选项 5.1.1 监听地址与控制端口 5.1.2 FTP模式与数据端口 5.1.3 ASCII模式 5.2 性能与负载控制 5.2.1 超时选项 5.2.2 负载控制 5.3 用户选项 5.3.1 匿名用户 5.3.2 本地用户 5.3.3 虚拟用户 5.4 安全措施 5.4.1 用户登录控制 5.4.2 目录访问控制 5.4.3 文件操作控制 5.4.4 新增文件权限设定 5.5 提示信息 5.6 日志设置 5.7 其他设置 6 VSFTPD应用 6.1 允许匿名用户上传文件 6.2 限制用户在自家目录 6.3 配置高安全级别的匿名FTP服务器 6.4 基于IP地址的虚拟FTP服务器 6.5 虚拟用户的配置 6.5.1 VSFTPD的虚拟用户介绍 6.5.2 用户创建和目录设置 6.5.3 配置文件的设置 6.5.3.1 基本设置 6.5.3.2 权限设置

如有帮助,欢迎下载支持 6.5.3.3 虚拟用户的其他配置 6.5.3.4 虚拟用户个人目录设置 6.5.4 MySQL保存虚拟用户 ------------------------------------------- 0、关于本文档 本文档是个人的学习整理。允许大家翻阅,摘抄,引用。更欢迎指出其中不对之处。文档的内容主要来自VSFTPD自身文档、个人学习心得以及网络资料,若有类同,实属正常,∶)。 本文档基于RedHat Linux 9和VSFTPD-1.1.3-8。如果有不同版本,则有专门文字说明。 1、VSFTPD简述 如果试问哪种FTP服务器最安全?那么在UNIX和Linux中,首推的就是VSFTP(Very Secure FTP Daemon,非常安全的FTP服务器)。顾名思义,VSFTPD设计的出发点就是安全性。同时随着版本的不断升级,VSFTPD在性能和稳定性上也取得了极大的进展。象RedHat、SUSE、Debian、GNU、GNOME、KDE等一些大型站点都采用VSFTPD作为它们的FTP服务器。大家可以到https://www.doczj.com/doc/7d10801643.html,/了解它的最新情况。 2、VSFTPD的安装 2.1、RHL9+vsftpd-.1.1.3-8.i386.rpm包的安装 VSFTPD的安装很简单。在RHL9中,在图形界面下依次执行“Main Menu”-“System Settings”-“Add/Remove Applications”-选择FTP服务器-“更新”,或者在字符界面中执行以下命令,就可以完成安装。 rpm -ivh vsftpd-1.1.3-8.i386.rpm 2.2、vsftpd-1.2.0.tar.gz的安装 ⑴准备条件 VSFTPD默认配置中需要“nobody”用户。在系统中添加此用户,如果用户已经存在,useradd命令有相应提示。 [root@hpe45 root]# useradd nobody useradd: user nobody exists VSFTPD默认配置中需要“/usr/share/empty”目录。在系统中此目录,如果目录已经存在,mkdir命令有相应提示。 [root@hpe45 root]# mkdir /usr/share/empty/ mkdir: cannot create directory '/usr/share/empty': File exists

vsftpd配置参数详细整理

vsftpd配置参数详细整理 1、vsftpd配置参数详细整理 #接受匿名用户 anonymous_enable=YES #匿名用户login时不询问口令 no_anon_password=YES #匿名用户主目录 anon_root=(none) #接受本地用户 local_enable=YES #本地用户主目录 local_root=(none) #如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的 用户不能登录 deny_email_enable=YES #仅在没有pam验证版本时有用,是否检查用户有一个有效的shell来登录 check_shell=YES #若启用此选项,userlist_deny选项才被启动 userlist_enable=YES #若为YES,则userlist_file中的用户将不能登录,为NO则只有userlist_file 的用户可以登录 userlist_deny=NO #如果和chroot_local_user一起开启,那么用户锁定的目录来自/etc/passwd每个用户指定的目录(这个不是很清楚,很哪位熟悉的指点一下) passwd_chroot_enable=NO #定义匿名登入的使用者名称。默认值为ftp。 ftp_username=FTP #################用户权限控制############### #可以上传(全局控制). write_enable=YES #本地用户上传文件的umask local_umask=022 #上传文件的权限配合umask使用 #file_open_mode=0666 #匿名用户可以上传 anon_upload_enable=NO #匿名用户可以建目录 anon_mkdir_write_enable=NO 匿名用户其它的写权利(更改权限?) anon_other_write_enable=NO 如果设为YES,匿名登入者会被允许下载可阅读的档案。默认值为YES。 anon_world_readable_only=YES #如果开启,那么所有非匿名登陆的用户名都会被切换成guest_username指定的

相关主题
文本预览
相关文档 最新文档