打印

vsftpd架设匿名FTP,本地用户和虚拟用户mysql登录

vsftpd架设匿名FTP,本地用户和虚拟用户mysql登录

本文参考了vsftpd安装文档,vsftpd的EXAMPLE及网上众多网友的文章。
环境:
匿名及本地用户:REDhat9+vsftpd1.1.3(或vftpd2.0.1)。
虚拟用户:vsftpd1.1.3+mysql3.23.54+pam_mysql0.5
不适用于vsftpd2.0.1+mysql4+pam0.5。

请注意:不要直接copy我这里的配置文件,可以造成ftp启动不正常,所以还是多费点事,自己输入吧

本文对本地用户、虚拟用户目录进行了限制,每个用户拥有自己独立的目录。
本文中所使用的参数具体意义请参数回贴。
配置不外就是修改vsftpc.conf,并指定用户目录,权限等。
对虚拟用户则用pam验证方式。

另:mkdir建立目录,chown更改权限。vi编辑文件。这些命令请参考man文档

vsftpd类别:

1、PORT FTP
首先会建立控制频道,默认值是port 21,也就是跟port 21 建立联机,并透过此联机下达指令。
第二,由FTP server 端会建立数据传输频道,默认值为20,也就是跟port 20 建立联机,并透过port 20 作数

据的传输。

2、PASVFTP
首先会建立控制频道,默认值是port 21,也就是跟port 21 联机,并透过此联机下达指令。
第二,会由client 端做出数据传输的请求,包括数据传输port 的数字。

3、差别:
PORT FTP 当中的数据传输port 是由FTP server 指定,
而PASV FTP 的数据传输port 是由FTP client 决定。
通常我们使用PASV FTP,是在有防火墙的环境之下,透过client 与server 的沟通,决定数据传输的port。



vsftpd安装篇:


1、rpm安装:
引用:
[root@Linux_win vsftpd]#rpm -ivh vsftpd-1.1.3-8.i386.rpm
2、tar.gz的安装
解压后查看README和INSTALL文档

安装前的条件:

进入vsftpd目录
编辑 "builddefs.h"文件,里面定义了pam功能,tcp_wrappers功能,ssl功能,根据需要定义pam或tcpwrapper功能,以消ssl功能

然后键入 "make" .将编译出相应的二进制文件,你可以用以下命令查看
[chris@localhost vsftpd]$ ls -l vsftpd
-rwxrwxr-x    1 root    root       61748 Sep 27 00:26 vsftpd

a、增加“nobody”用户。在系统中添加此用户,如果用户已经存在,useradd命令有相应提示。
引用:
[root@Linux_win vsftpd]# useradd nobody
useradd: user nobody exists

b、建立“/usr/share/empty”目录。在系统中此目录,如果目录已经存在,mkdir命令有相应提示。
引用:
[root@hpe45 root]# mkdir /usr/share/empty/
mkdir: cannot create directory '/usr/share/empty': File exists

c、匿名服务帐号:“ftp”用户和一个有效的匿名目录(默认为/var/ftp)。
引用:
[root@Linux_win vsftpd]# mkdir /var/ftp/
[root@Linux_win vsftpd]# useradd -d /var/ftp ftp
d、更改目录的所有者为root,并让ftp用户对自己的主目录不可写
引用:
[root@Linux_win vsftpd]# chown root.root /var/ftp
[root@Linux_win vsftpd]# chmod og-w /var/ftp
编译VSFTPD
引用:
[root@Linux_win vsftpd]# tar zxvf vsftpd-1.2.0.tar.gz
[root@Linux_win vsftpd]# cd vsftpd-1.2.0
[root@Linux_win vsftpd]# make
安装编译好的VSFTPD

执行“make,make install”将编译好的二进制文件、手册等复制到相应目录。可能需要手动执行以下复制:
引用:
[root@Linux_win vsftpd]# cp vsftpd /usr/local/sbin/vsftpd
[root@Linux_win vsftpd]# cp vsftpd.conf.5 /usr/local/share/man/man5
[root@Linux_win vsftpd]# cp vsftpd.8 /usr/local/share/man/man8
如果不存在man5和man8目录,要先建立这两个目录
引用:
[root@Linux_win vsftpd]#mkdir /usr/local/share/man/man5
[root@Linux_win vsftpd]#mkdir /usr/local/share/man/man8
make不会自己copy配置文件,如果make install有错,则必须手工更改
[root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc

为本地用户设置PAM
如果允许本地用户登录VSFTPD,执行以下操作:
引用:
[root@Linux_win vsftpd]# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd
3、pam_mysql安装
如果使用mysql的二进制包,那么必须加个开始包,且要修改Makefile文件,指定mysql的lib位置。
引用:
[root@Linux_win vsftpd]# tar xvzf pam_mysql-0.5.tar.gz
[root@Linux_win vsftpd]# cd pam_mysql
[root@Linux_win vsftpd]# make
[root@Linux_win vsftpd]# cp pam_mysql.so /lib/security
4、mysql安装。请查看其它文档



vsftpd启动篇

vsftpd 有两种运行方式,一种是standalone 一种是 via an inetd (或者 inetd or xinetd).
1、如何启动
1)系统自带的
引用:
[root@Linux_win software]# service vsftpd restart
2)源包安装:
[root@Linux_win software]# /安装路径/vsftpd &
引用:
[root@Linux_win vsftpd]# /sbin/service xinetd restart  
或 
[root@Linux_win vsftpd]# /usr/local/sbin/vsftpd &
2、standlone启动
具体的运行方式由参数listen决定。当listen参数值为YES时,VSFTPD单独运行,我们可以使用脚本/etc/rc.d/init.d/vsftpd来启动、关闭以及重启VSFTPD。命令如下:
  
引用:
/etc/rc.d/init.d/vsftpd start|stop|restart
3、xinetd启动,首先要将vsftpd.conf配置文件中的listen参数值改为NO。
其次,生成一个/etc/xinetd.d/vsftpd文件
引用:
[root@Linux_win vsftpd]#vi /etc/vsftpd/vsftpd.conf或vi /etc/vsftp.conf
listen=NO
引用:
[root@Linux_win vsftpd]vi /etc/xinetd.d/vsftpd
内容如下:
service vsftpd
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
port = 21
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
通过修改disable值为no或yes,并重新启动xinetd,从而启动或停止VSFTPD。



配置安全匿名服务器

所要做的就是用vi修改vsftpd.conf文件
引用:
[root@Linux_win vsftpd]#vi /etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf
修改后的vsftpd.conf文件看附件:
引用:
#使用单独模式,并指定监听的IP地址
listen_address=ip address

#只允许匿名访问,不允许本地用户访问
anonymous_enable=YES
local_enable=NO

#取消写权限
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

#启用详细的日志记录格式,设定记录传输日志的文件名。默认值为/var/log/vsftpd.log。
xferlog_enable=YES
xferlog_file=/var/log/vsftp.log

#对连接进行控制,还有超时时间,那就根据具体情况再说了。
connect_from_port_20=YES
pasv_min_port=50000
pasv_max_port=60000

#控制FTP最大并发数,限定每个IP地址的并发数。
max_clients=numerical value
max_per_ip=numerical value

#限定下载速度
anon_max_rate=80000


#使用ftpd_banner取代VSFTPD默认的欢迎词,免得泄漏相关信息
ftpd_banner=Welcome to this FTP Server

#只让匿名用户浏览可阅读的文件,不可以浏览整个系统
anon_world_readable_only=YES

#隐藏文件的所有者和组信息,匿名用户看到的文件的所有者和组全变为ftp
hide_ids=YES
引用:
附:vsftpd.conf
[root@Linux_win vsftpd]# cat vsftpd.conf
listen=YES
listen_address=192.168.1.2

anonymous_enable=YES
local_enable=NO

write_enable=NO
anon_root=/home
anon_upload_enable=NO
anon_other_write_enable=NO
anon_mkdir_write_enable=NO
anon_world_readable_only=YES

#dirmessage_enable=YES
ftpd_banner=welcome to this FTP server

xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log

connect_from_port_20=YES
#pasv_mix_port=50000
#pasv_max_port=60000
#xferlog_std_format=YES

max_clients=10
max_per_ip=10

hide_ids=YES

#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#chroot_local_user=NO
#pam_service_name=/etc/pam.d/vsftpd

#guest_enable=YES
#guest_username=vsftpdvirtual
#virtual_use_local_privs=NO
#user_config_dir=/etc/vsftpd/vsftpd_user_conf
配置可上传匿名服务器
[root@Linux_win vsftpd]#vi /etc/vsftpd/vsftpd.conf
修改文件,改后如下
引用:
[root@Linux_win ftp]# cat /etc/vsftpd/vsftpd.conf
listen=YES
listen_address=192.168.1.2

anonymous_enable=YES
local_enable=NO

write_enable=YES
#anon_root=
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
#anon_world_readable_only=YES


#dirmessage_enable=YES
ftpd_banner=welcome to this FTP server

xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log

connect_from_port_20=YES
#pasv_mix_port=50000
#pasv_max_port=60000
#xferlog_std_format=YES

max_clients=10
max_per_ip=10

hide_ids=YES

#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#chroot_local_user=NO
#pam_service_name=/etc/pam.d/vsftpd

#guest_enable=YES
#guest_username=vsftpdvirtual
#virtual_use_local_privs=NO
#user_config_dir=/etc/vsftpd/vsftpd_user_conf
引用:
[root@Linux_win ftp]# mkidr /var/ftp/upload
[root@Linux_win ftp]# chmod o+w /var/ftp/upload
anon_root参数指定的目录或默认的/var/ftp主目录,ftp匿名用户不可有写权限,否则会出错。
办法是在/var/ftp下建立一个新目录,使得该目录对ftp匿名用户可写。才能上传。
或不用匿名上传,而使用本地用户或虚拟用户 。




配置本地用户
修改vsftpd.conf
引用:
[root@Linux_win vsftpd]# cat /etc/vsftpd/vsftpd.conf
listen=YES
listen_address=192.168.1.2

anonymous_enable=NO
local_enable=YES
#local_root=

write_enable=YES
#anon_root=
#anon_upload_enable=YES
#anon_other_write_enable=YES
#anon_mkdir_write_enable=YES
#anon_world_readable_only=YES
#anon_umask=777

#dirmessage_enable=YES
ftpd_banner=welcome to this FTP server

xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log

connect_from_port_20=YES
#pasv_mix_port=50000
#pasv_max_port=60000
#xferlog_std_format=YES

max_clients=10
max_per_ip=10

hide_ids=YES

#limit all users in it's owner dir
#chroot_local_user=YES

#or limit some
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

#use ownwer conf file
user_config_dir=/etc/vsftpd/vsftpd_user_conf

pam_service_name=/etc/pam.d/vsftpd

#guest_enable=YES
#guest_username=vsftpdvirtual
#virtual_use_local_privs=NO
由于上面了用户列表,因此须建立chroot_list文件,
引用:
[root@Linux_win vsftpd]# touch /etc/vsftpd/chroot_list
并加入以下内容,查看chroot_list文件内容,结果如下
引用:
[root@Linux_win vsftpd]# cat /etc/vsftpd/chroot_list
sam
gem
配置文件中指定了用户配置文件,因此建立此文件
引用:
[root@Linux_win vsftpd]# mkdir /etc/vsftpd/vsftpd_user_conf
并根据用户名建立文件
引用:
[root@Linux_win vsftpd]# touch sam
[root@Linux_win vsftpd]# touch gem
[root@Linux_win vsftpd]# ls -l /etc/vsftpd/vsftpd_user_conf
总用量 8
-rw-r--r--    1 root     root           21  1月  8 00:25 sam
-rw-r--r--    1 root     root           25  1月  8 00:17 gem
并在sam,gem文件加加入以下内容,可用vi编辑并保存,下面的虚拟用户也一样,不过只须更改文件内容就可以了
引用:
[root@Linux_win vsftpd]# cat /etc/vsftpd/vsftpd_user_conf/sam
local_root=/home/sam
引用:
[root@Linux_win vsftpd]# cat /etc/vsftpd/vsftpd_user_conf/gem
local_root=/home/gem
本地用户验证要用pam文件,内容是默认的。
引用:
[root@Linux_win vsftpd]# cat /etc/pam.d/vsftpd
#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers

onerr=succeed
auth       required     pam_stack.so service=system-auth
auth       required     pam_shells.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
配置虚拟用户(mysql)

  VSFTPD的本地用户本身是系统的用户,除了可以登录FTP服务器外,还可以登录系统使用其他系统资源,而

VSFTPD的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。对于只需要通过FTP对系统有读

写权限,而不需要其他系统资源的用户或情况来说,采用虚拟用户方式是很适合的。

  VSFTPD的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了

系统的安全性。VSFTPD可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器

中,如MySQL等。VSFTPD验证虚拟用户,则采用PAM方式。由于虚拟用户的用户名/口令被单独保存,因此在验证

时,VSFTPD需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正

如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是用于映射虚拟用户。

  配置虚拟用户分为几部分:guest用户的创建、用户/口令的保存、PAM认证配置、vsftpd.conf文件设置等

。在后面的例子中,假定存在虚拟用户win和wingger.



1、在系统中添加vsftpdvirtual用户,作为虚拟用户在系统中的代表。
引用:
[root@Linux_win vsftpd]# useradd vsftpdvirtual
  当虚拟用户登录后,所在的位置为vsftpdvirtual的自家目录/home/vsftpdvirtual。

2、配置文件vsftpd.conf: 加入以下内容
guest_enable=YES
guest_username=vsftpdvirtual
virtual_use_local_privs=YES|NO

3、虚拟用户的权限配置。
virtual_use_local_privs参数,
当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。所有虚拟用户的权限使用local参数。
当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限,所有虚拟用户的权限使用anon参数。
这两者种做法相比,后者更加严格一些,特别是在有写访问的情形下。默认情况下此参数是关闭的(NO)。

由于本人的vsftpd为1.1.3,只好用virtual_use_local_privs=NO了:
因此匿名用户的设置即是虚拟用户的设置,在改参数权限时,同时也要修改目录权限
如:让用户不能浏览目录,但仍可以对文件操作且虚拟用户目录的权限改为只能由vsftpdvirtual操作:
引用:
[root@Linux_win vsftpd]# chown vsftpdvirtual.vsftpdvirtual /home/vsftpdvirtual
[root@Linux_win vsftpd]# chmod 700 /home/vsftpdvirtual
由于这些设置对匿名用户生效。最好是禁止匿名用户登录。


在VSFTPD-1.2.0以上版本,当virtual_use_local_privs=YES时,只需write_enable=YES,虚拟用户就可以就拥

有写权限。应该与本地用户使用相同,有兴趣的可以去验证。

如果不同用户使用不同的目录,须加入权限
引用:
chown vsftpdvirtual.vsftpdvirtual /home/win
chown vsftpdvirtual.vsftpdvirtual /home/wingger
4、用MySQL保存虚拟用户

  1、虚拟用户的用户名/口令的保存。这部分在MySQL数据库中完成。
首先,创建数据库vsftpdvirtual以及表users,并插入虚拟用户win、wingger。执行以下命令:
引用:
[root@Linux_win vsftpd]# #mysql -uroot -p
mysql>create database vsftpdvirtual;
mysql>use vsftpdvirtual;
mysql>create table users(name char(16) binary,passwd char(16) binary);
mysql>insert into users (name,passwd) values ('win',password('123456'));
mysql>insert into users (name,passwd) values ('wingger',password('123456'));
mysql>quit
然后,授权vsftpdvirtual只能读vsftpdvirtual数据库的users表。执行以下命令:
引用:
[root@Linux_win vsftpd]# mysql -u root mysql -p
mysql>grant select on vsftpdvirtual.users to vsftpdvirtual@localhost identified by '123456';
mysql>quit
验证刚才的操作是否成功可以执行下面命令:
引用:
[root@Linux_win vsftpd]# mysql -u vsftpdvirtual -p123456 ftpdvirtual
mysql>select * from users;
如果成功,将会列出wing、wingger和加密后的密码。
如下所示:
引用:
mysql> select * from users;
+---------+------------------+
| name    | passwd           |
+---------+------------------+
| win     | 23932fe477657768 |
| wingger | 23932fe477657768 |
+---------+------------------+
2 rows in set (0.00 sec)
  2、设置PAM认证。这里我们要用到一个利用mysql进行pam验证的开源项目(http://sourceforge.net/proj

ects/pam-mysql/)。首先从网站下载它的程序包pam_myql-0.5.tar.gz。在编译安装之前,要确保mysql-devel

的RPM包已经安装在你的机器上,如果没有请从RHL安装光盘中安装该包。然后,执行以下命令:
引用:
[root@Linux_win vsftpd]# tar xvzf pam_mysql-0.5.tar.gz
[root@Linux_win vsftpd]# cd pam_mysql
[root@Linux_win vsftpd]# make
[root@Linux_win vsftpd]# cp pam_mysql.so /bli/security
接下来,我们要设置vsftpd的PAM验证文件。打开/etc/pam.d/vsftpd文件,加入以下内容:
引用:
  auth required pam_mysql.so user=vsftpdvirtual passwd=123456 host=localhost db=vsftpdvirtual  

table=users usercolumn=name passwdcolumn=passwd crypt=2
  account required pam_mysql.so user=vsftpdvirtual passwd=123456 host=localhost

db=vsftpdvirtual  table=users usercolumn=name passwdcolumn=passwd crypt=2
具体可查看vsftpd源包里的EXAMPLE中的例子。



附:虚拟用户文档
1、vsftpd.conf配置文件
引用:
[root@Linux_win vsftpd]# cat vsftpd.conf
listen=YES
listen_address=192.168.1.2

anonymous_enable=NO
local_enable=YES

write_enable=YES
#anon_root=
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
#anon_world_readable_only=YES
#anon_umask=777

#dirmessage_enable=YES
ftpd_banner=welcome to this FTP server

xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log

connect_from_port_20=YES
#pasv_mix_port=50000
#pasv_max_port=60000
#xferlog_std_format=YES

max_clients=10
max_per_ip=10

hide_ids=YES

#limit all users in it's owner dir
#chroot_local_user=YES

#or limit some
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

#use ownwer conf file
user_config_dir=/etc/vsftpd/vsftpd_user_conf

pam_service_name=/etc/pam.d/vsftpd

guest_enable=YES
guest_username=vsftpdvirtual
#virtual_use_local_privs=NO
引用:
2、[root@Linux_win vsftpd]# cat /etc/pam.d/vsftpd
#%PAM-1.0
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers

onerr=succeed
#auth       required    pam_stack.so service=system-auth
#auth       required    pam_shells.so
#account    required    pam_stack.so service=system-auth
#session    required    pam_stack.so service=system-auth
auth       required     /lib/security/pam_mysql.so user=vsftpdvirtual    passwd=123456  

host=localhost   db=vsftpdvirtual table=users  usercolumn=name  passwdcolumn=passwd  crypt=2
account    required     /lib/security/pam_mysql.so user=vsftpdvirtual     passwd=123456   

host=localhost   db=vsftpdvirtual table=users  usercolumn=name  passwdcolumn=passwd  crypt=2
引用:
3、[root@Linux_win vsftpd]# cat /etc/vsftpd/chroot_list
win
wingger
引用:
4、[root@Linux_win vsftpd]# ls -l /etc/vsftpd/vsftpd_user_conf
总用量 8
-rw-r--r--    1 root     root           21  1月  8 00:25 win
-rw-r--r--    1 root     root           25  1月  8 00:17 wingger
引用:
5、[root@Linux_win vsftpd]# cat /etc/vsftpd/vsftpd_user_conf/win
local_root=/home/win
[root@Linux_win vsftpd]# cat /etc/vsftpd/vsftpd_user_conf/wingger
local_root=/home/wingger
引用:
6、drwx------    6 vsftpdvirtual vsftpdvirtual    4096  1月  8 00:16 vsftpdvirtual
drwxrwxrwx    5 vsftpdvirtual vsftpdvirtual     4096  1月  8 01:47 win
drwxrwxrwx    3 vsftpdvirtual vsftpdvirtual     4096  1月  8 20:19 wingger
7、版本:(vsFTPd 1.1.3)、pam_mysql-0.5.tar.gz、mysql3.23.54

8、[root@Linux_win vsftpd]# mysql -u vsftpdvirtual -pchenwy vsftpdvirtual

mysql> select * from users;
+---------+------------------+
| name    | passwd           |
+---------+------------------+
| win     | 23932fe477657768 |
| wingger | 23932fe477657768 |
+---------+------------------+
2 rows in set (0.00 sec)
从明天起,做一个幸福的人
喂马,劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我也愿面朝大海,春暖花开
Work like you don't need the money
love like you've never been hurt
and dance like no one is watching.

TOP

另外,转一篇收藏

转:
VSFTPD的设置选项

  VSFTPD的配置文件/etc/vsftpd/vsftpd.conf是个文本文件。以“#”字符开始的行是注释行。每个选项设置为一行,格式为“option=value”,注意“=”号两边不能留空白符。除了这个主配置文件外,还可以给特定用户设定个人配置文件,具体介绍见后。
  VSFTPD包中所带的vsftpd.conf文件配置比较简单,而且非常偏执狂的(文档自称:-))。我们可以根据实际情况对其进行一些设置,以使得VSFTPD更加可用。



1、连接选项

  本部分主要是一些与建立FTP链接相关的选项。

1.1、监听地址与控制端口

  listen_address=ip address
  此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了在主机的哪个IP地址上监听FTP请求,即在哪个IP地址上提供FTP服务。对于只有一个IP地址的主机,不需要使用此参数。对于多址主机,不设置此参数,则监听所有IP地址。默认值为无。

  listen_port=port_value
  指定FTP服务器监听的端口号(控制端口),默认值为21。此选项在standalone模式下生效。

1.2、FTP模式与数据端口

  FTP 分为两类,PORT FTP和PASV FTP,PORT FTP是一般形式的FTP。这两种FTP在建立控制连接时操作是一样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)建立控制链接,并通过此链接进行传输操作指令。它们的区别在于使用数据传输端口(ftp-data)的方式。PORT FTP由FTP服务器指定数据传输所使用的端口,默认值为20。PASV FTP由FTP客户端决定数据传输的端口。PASV FTP这种做法,主要是考虑到存在防火墙的环境下,由客户端与服务器进行沟通(客户端向服务器发出数据传输请求中包含了数据传输端口),决定两者之间的数据传输端口更为方便一些。

  port_enable=YES|NO
  如果你要在数据连接时取消PORT模式时,设此选项为NO。默认值为YES。

  connetc_from_port_20=YES|NO
  控制以PORT模式进行数据传输时是否使用20端口(ftp-data)。YES使用,NO不使用。默认值为NO,但RHL自带的vsftpd.conf文件中此参数设为YES。

  ftp_data_port=port number
  设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT FTP模式。

  port_promiscuous=YES|NO
  默认值为NO。为YES时,取消PORT安全检查。该检查确保外出的数据只能连接到客户端上。小心打开此选项。

  pasv_enable=YES|NO
  YES,允许数据传输时使用PASV模式。NO,不允许使用PASV模式。默认值为YES。

  pasv_min_port=port number
  pasv_max_port=port number
  设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。默认值为0。把端口范围设在比较高的一段范围内,比如50000-60000,将有助于安全性的提高。

  pasv_promiscuous=YES|NO
  此选项激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO。

  pasv_address=
  此选项为一个数字IP地址,作为PASV命令的响应。默认值为none,即地址是从呼入的连接套接字(incoming connectd socket)中获取。

1.3 ASCII模式

  默认情况下,VSFTPD是禁止使用ASCII传输模式。即使FTP客户端使用asc命令,指明要使用ASCII模式,但是,VSFTPD表面上接受了asc命令,而在实际传输文件时,还是使用二进制方式。下面选项控制VSFTPD是否使用ASCII传输模式。

  ascii_upload_enable=YES|NO
  控制是否允许使用ascii模式上传文件,YES允许,NO不允许,默认为NO。

  ascii_download_enable=YES|NO
  控制是否允许使用ascii模式下载文件,YES允许,NO不允许,默认为NO。



2、性能与负载控制

2.1、超时选项

  idle_session_timeout=
  空闲(发呆)用户会话的超时时间,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线。单位为秒,默认值为300。

  data_connection_timeout=
  空闲的数据连接的超时时间。默认值为300 秒。

  accept_timeout=numerical value
  接受建立联机的超时设定,单位为秒。默认值为60。

  connect_timeout=numerical value
  响应PORT方式的数据联机的超时设定,单位为秒。默认值为60。以上两个选项针对客户端的,将使客户端空闲1分钟后自动中断连接,并在中断1分钟后自动激活连接。

2.2 负载控制

  max_clients=numerical value
  此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了FTP服务器最大的并发连接数,当超过此连接数时,服务器拒绝客户端连接。默认值为0,表示不限最大连接数。

  max_per_ip=numerical value
  此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义每个IP地址最大的并发连接数目。超过这个数目将会拒绝连接。此选项的设置将影响到象网际快车这类的多进程下载软件。默认值为0,表示不限制。

  anon_max_rate=value
  设定匿名用户的最大数据传输速度value,以Bytes/s为单位。默认无。

  local_max_rate=value
  设定用户的最大数据传输速度value,以Bytes/s为单位。默认无。此选项对所有的用户都生效。此外,也可以在用户个人配置文件中使用此选项,以指定特定用户可获得的最大数据传输速率。
  步骤如下:
  ①在vsftpd.conf中指定用户个人配置文件所在的目录,如:
  user_config_dir=/etc/vsftpd/userconf
  ②生成/etc/vsftpd/userconf目录。
  ③用户个人配置文件是在该目录下,与特定用户同名的文件,如:
  /etc/vsftpd/userconf/xiaowang
  ④在用户的个人配置文件中设置local_max_rate参数,如:
  local_max_rate=80000
  以上步骤设定FTP用户xiaowang的最大数据传输速度为80KBytes/s。

  VSFTPD 对于速度控制的变化范围大概在80%到120%之间。比如我们限制最高速度为100KBytes/s, 但实际的速度可能在80KBytes/s 到120KBytes/s 之间。当然,若是线路带宽不足时,速率自然会低于此限制。




3 用户选项

  VSFTPD的用户分为三类:匿名用户、本地用户(local user)以及虚拟用户(guest)。

3.1、匿名用户

  anonymous_enable=YES|NO
  控制是否允许匿名用户登录,YES允许,NO不允许,默认值为YES。

  ftp_username=
  匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp。

  no_anon_password=YES|NO
  控制匿名用户登入时是否需要密码,YES不需要,NO需要。默认值为NO。
  
  deny_email_enable=YES|NO
  此参数默认值为NO。当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。即,当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒绝。显然,这对于阻击某些Dos攻击有效。当此参数生效时,需追加banned_email_file参数

  banned_email_file=/etc/vsftpd.banned_emails
  指定包含被拒绝的e-mail地址的文件,默认文件为/etc/vsftpd.banned_emails。

  anon_root=
  设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/。

  anon_world_readable_only=YES|NO
  控制是否只允许匿名用户下载可阅读文档。YES,只允许匿名用户下载可阅读的文件。NO,允许匿名用户浏览整个服务器的文件系统。默认值为YES。

  anon_upload_enable=YES|NO
  控制是否允许匿名用户上传文件,YES允许,NO不允许,默认是不设值,即为NO。除了这个参数外,匿名用户要能上传文件,还需要两个条件:一,write_enable参数为YES;二,在文件系统上,FTP匿名用户对某个目录有写权限。

  anon_mkdir_write_enable=YES|NO
  控制是否允许匿名用户创建新目录,YES允许,NO不允许,默认是不设值,即为NO。当然在文件系统上,FTP匿名用户必需对新目录的上层目录拥有写权限。

  anon_other_write_enable=YES|NO
  控制匿名用户是否拥有除了上传和新建目录之外的其他权限,如删除、更名等。YES拥有,NO不拥有,默认值为NO。

  chown_uploads=YES|NO
  是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。此选项默认值为NO。

  chown_username=whoever
  指定拥有匿名用户上传文件所有权的用户。此参数与chown_uploads联用。不推荐使用root用户。



3.2、本地用户

  在使用FTP服务的用户中,除了匿名用户外,还有一类在FTP服务器所属主机上拥有账号的用户。VSFTPD中称此类用户为本地用户(local users),等同于其他FTP服务器中的real用户。

  local_enable=YES|NO
  控制vsftpd所在的系统的用户是否可以登录vsftpd。默认值为YES。

  local_root=
  定义所有本地用户的根目录。当本地用户登入时,将被更换到此目录下。默认值为无。

  user_config_dir=
  定义用户个人配置文件所在的目录。用户的个人配置文件为该目录下的同名文件。个人配置文件的格式与vsftpd.conf格式相同。例如定义 user_config_dir=/etc/vsftpd/userconf,并且主机上有用户xiaowang,lisi,那我们可以在 user_config_dir的目录新增名为xiaowang、lisi的两个文件。当用户lisi 登入时,VSFTPD则会读取user_config_dir下lisi这个文件中的设定值,应用于用户lisi。默认值为无。

3.3、虚拟用户

  guest_enable=YES|NO
  若是启动这项功能,所有的非匿名登入者都视为guest。默认值为关闭。

  guest_username=
  定义VSFTPD的guest用户在系统中的用户名。默认值为ftp。




4、安全措施

4.1、用户登录控制

  pam_service_name=vsftpd
  指出VSFTPD进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件是/etc/pam.d/vsftpd。

  /etc/vsftpd.ftpusers
  VSFTPD禁止列在此文件中的用户登录FTP服务器。这个机制是在/etc/pam.d/vsftpd中默认设置的。

  userlist_enable=YES|NO
  此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,VSFTPD查到该用户名在列表,VSFTPD就直接禁止掉该用户,不会再进行询问密码等后续步聚。默认值为NO。

  userlist_file=/etc/vsftpd.user_list
  指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list。

  userlist_deny=YES|NO
  决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示。NO,只允许在文件中的用户登录FTP服务器。
  
  tcp_wrappers=YES|NO
  在VSFTPD中使用TCP_Wrappers远程访问控制机制,默认值为YES。

4.2、目录访问控制

  chroot_list_enable=YES|NO
  锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。

  chroot_list_file=/etc/vsftpd/chroot_list
  指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。通常该文件是/etc/vsftpd/chroot_list。此选项默认不设置。

  chroot_local_users=YES|NO
  将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、 shell访问等权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认值为NO。

  passwd_chroot_enable
  当此选项激活时,与chroot_local_user选项配合,chroot()容器的位置可以在每个用户的基础上指定。每个用户的容器来源于/etc/passwd中每个用户的自家目录字段。默认值为NO。

4.3、文件操作控制

  hide_ids=YES|NO
  是否隐藏文件的所有者和组信息。YES,当用户使用"ls -al"之类的指令时,在目录列表中所有文件的拥有者和组信息都显示为ftp。默认值为NO。

  ls_recurse_enable=YES|NO
  YES,允许使用"ls -R" 指令。这个选项有一个小的安全风险,因为在一个大型FTP站点的根目录下使用"ls -R"会消耗大量系统资源。默认值为NO。

  write_enable=YES|NO
  控制是否允许使用任何可以修改文件系统的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。默认值为NO,不过自带的简单配置文件中打开了该选项。

  secure_chroot_dir=
  这选项指向一个空目录,并且ftp用户对此目录无写权限。当vsftpd不需要访问文件系统时,这个目录将被作为一个安全的容器,用户将被限制在此目录中。默认目录为/usr/share/empty。

4.4、新增文件权限设定

  anon_umask=
  匿名用户新增文件的umask 数值。默认值为077。

  file_open_mode=
  上传档案的权限,与chmod 所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。默认值为0666。

  local_umask=
  本地用户新增档案时的umask 数值。默认值为077。不过,其他大多数的FTP服务器都是使用022。如果您的用户希望的话,可以修改为022。在自带的配置文件中此项就设为了022。




5、提示信息

  ftpd_banner=login banner string
  此参数定义了login banner string(登录欢迎语字符串)。用户可以自行修改。预设值为无。当ftpd_banner设置后,将取代系统原来的欢迎词。

  banner_file=/directory/vsftpd_banner_file
  此项指定一个文本文件,当使用者登入时,会显示此该文件的内容,通常为欢迎话语或是说明。默认值为无。与ftpd_banner相比, banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file选项将取代ftpd_banner选项。

  dirmessage_enable=YES|MO
  控制是否启用目录提示信息功能。YES启用,NO不启用,默认值为YES。此功能启用后,当用户进入某一个目录时,会检查该目录下是否有message_file选项所指定的文档,若是有,则会出现此文档的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。

  message_file=
  此选项,仅在dirmessage_enable选项激活方生效。默认值为.message。




6、日志设置

  xferlog_enable=YES|NO
  控制是否启用一个日志文件,用于详细记录上传和下载。该日志文件由xferlog_file选项指定。默认值为NO,但简单配置文件中激活此选项。

  xferlog_file=
  这个选项设定记录传输日志的文件名。默认值为/var/log/vsftpd.log。

  xferlog_std_format=YES|NO
  控制日志文件是否使用xferlog的标准格式,如同wu-ftpd一样。使用xferlog格式,可以重新使用已经存在的传输统计生成器。然而,默认的日志格式更为可读性。默认值为NO,但自带的配置文件中激活了此选项。

  log_ftp_protocol=YES|NO
  当此选项激活后,所有的FTP请求和响应都被记录到日志中。提供此选项时,xferlog_std_format不能被激活。这个选项有助于调试。默认值为NO。




7、其他设置

  setproctitle_enable=YES|NO
  YES,VSFTPD将在系统进程列表中显示每个会话(session)的状态。也就是说,进程报告将显示每个vsftpd会话在做什么(挂起、下载等),如用ps -ef|grep ftp。出于安全的目的,可以考虑将此选项关闭。NO,进程报告只显示一个vsftpd进程在运行。默认值为NO。

  text_userdb_names=YES|No
  当使用者登入后使用ls -al 之类指令时,目录列表的用户和组信息域,默认是出现拥有者的UID,而不是该档案拥有者的名称。若是希望出现拥有者的名称,则将此功能开启。默认值为NO。

  user_localtime=YES|NO
  默认为NO。YES,VSFTPD显示目录列表时使用你本地时区的时间。默认是显示GMT时间。同样,由ftp命令“MDTM”返回的时间值也受此选项影响。

  check_shell=YES|NO
  此选项仅对不使用PAM方式的VSFTPD生效。当此选项关闭后,当本地用户登录时,VSFTPD不会检查/etc/shells文件以寻找一个有效的用户shell。默认为YES。

  nopriv_user=
  指定一个用户,当VSFTPD不想要什么权限时,使用此用户身份。这用户最好是一个专用的用户,而不是用户nobody。在大多数的机器上,nobody用户被用于大量重要的事情。默认值为nobody。

  pam_service_name=
  指明VSFTPD使用用PAM验证服务时的PAM配置文件名。默认值为ftp。
从明天起,做一个幸福的人
喂马,劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我也愿面朝大海,春暖花开
Work like you don't need the money
love like you've never been hurt
and dance like no one is watching.

TOP

呵呵,风子的帖子都值得看,谢谢风子哦!
. 太阳当空照,章章对我笑,小鸟说:早早早,你为什么背上炸药包?! 我去炸商店,老虎不知道,爱抢章,爱灌水,长大要为IX立功劳! [url=http://blog.54master.com/index.php/282118][color=red]我的客栈[/color][/url]

TOP

好文啊  收藏 呵呵 谢谢
努力学习,每天进步一点!

TOP

不错,比较全面,
新手必备

TOP

好些字符是见过的可是不知道什么意思哈哈
坚持每一个决定

TOP

老帖也值得一看

TOP

  总结的不错

TOP

dddddd

TOP

我的那个顶啊
要把 Linux Oracle Mysql 做得更好!

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-7-6 08:11 京ICP证060528 号

Designed By 17DST