9.0自带vsftp的示例配置文件翻译与详解
1、配置文件vsftpd.conf
一般在/etc/vsftpd目录下,也有可能在/etc下面,自己找找。里面的条目不少,不过都有详细的英文注解,英文不好的可以去网上找译得好的,这里给出我的理解:
# Example config file /etc/vsftpd/vsftpd.conf
示例配置文件 /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.
这些默认设置是相当宽松的,目的只是让FTP能跑起来,这意味着你需要自己来加一些
限制,以达到你对服务器的安全性、性能及稳定性的要求。
vsftpd.conf.5 里有所有编译时刻确定的默认值。
# 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.
注意:本示例文件并未包含所有vsftpd的设置选项,如有需要,可以参考vsftpd.conf.5
手册,其下载地址为:
ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.0.3/vsftpd.conf.5
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
允许匿名用户访问则设为YES(注意:如果你仅仅注释掉了这句话,那也等效于允许匿名访问)
注:YES、Yes或者yes都可以,但是等号与YES之间不可以有空格,否则FTP服务器无法正常工作。
错误用法: anonymous_enable= YES (不允许中间有空格)
# Uncomment this to allow local users to log in.
local_enable=YES
允许本地用户访问则设为YES,不允许则设为NO或注释掉这句话。
注:所谓“本地用户”是指在系统中保存有用户信息(用户名及密码)的用户,指所有
除匿名用户以外的用户。
# Uncomment this to enable any form of FTP write command.
write_enable=YES
允许写权限则设为YES,注意这是针对所有用户的,即如果设为NO或注释掉这句话,那么
所有用户都将没有可能进行写类的操作。
注1:这里设为YES并不意味着所有用户就可以进行写操作了,后面还有对各种用户的特定
设置。但如果这里设成了NO或被注释掉,那么后面怎么设也没用,所有用户都不可以进行
写操作了。
注2:写类操作包括上传、修改、删除、创建目录等。
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
本地用户的默认umask值是077,你可以在这里把它设为022,大多数ftp使用此umask值。
关于umask值,又可以写好多,这里简单介绍一下:
注:umask大概是user mask的意思,登录到服务器的每个用户都有自己的mask,umask
的值决定了这个用户所产生的目录和文件的默认权限。比如mmpire用户的umask值是022,
那么他创建的目录和文件的默认权限分别是755和644,注意目录和文件是被区分开的。
这个转化规则很简单,就是利用下面的这个表:
umask值
文件属性值
目录属性值
0
6
7
1
6
6
2
4
5
3
4
4
4
2
3
5
2
2
6
0
1
7
0
0
其实在linux系统里也有umask,可以通过umask命令来查看:
[root@mmpire vsftpd]#umask
0022
[root@mmpire vsftpd]#su mmpire
[mmpire@mmpire vsftpd]umask
0002
注意到了吧,root用户和mmpire用户的umask值是不一样的,也就决定了他们俩创建的目
录和文件的默认权限是不一样的,你自己算算是多少吧!
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES
允许匿名用户上传则设为YES,不允许则设为NO或注释掉这句话。
注意:这个设置有效的前提是前面的write_enable设为YES,不然谁也没有写权限,更不
用说匿名用户了。
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
允许匿名用户新建目录则设为YES,不允许则设为NO或注释掉这句话。
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
意思是激活目录消息,当用户访问特定文件时给出提示消息。具体使用方法是:
1,将此值设为YES,如上所示,然后保存vsftpd.conf,重启FTP服务器。
2,比如要使pub目录提示消息,则在pub目录下增加一个.message文件,里面写上"hi!here
are pub!"
3,从用户端登录FTP服务器,进入pub目录时,系统将给出提示:“hi!here are pub!”
# Activate logging of uploads/downloads.
xferlog_enable=YES
需要保存上传/下载的日志则设为YES。日志文件的位置由后面的xferlog_file参数指定,
默认是/var/log/vsftpd.log。
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
允许从FTP数据端口20连接则设为YES。
注:一般FTP的数据传输端口都是20,而命令传输端口是21。
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
这两条命令必须一起用,且第一个为YES时第二个才有效。如果第一个设为YES,且第二
个设为root,那么所有由匿名用户上传的文件,其所有者就设为root,当然本地用户上传
的文件属性不受影响。
注:比较有意思的是服务器默认有一个系统用户ftp,密码也是ftp,它的权限跟匿名用户
差不多,在这里,它所上传的文件的所有者等属性也会变成root。
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/vsftpd.log
这是日志文件的位置,日志记载了所有的用户活动。
注:不过据我观察这里似乎只有本地用户的记录,而无匿名用户的记录。
# If you want, you can have your log file in standard ftpd xferlog format
xferlog_std_format=YES
如果需要标准格式的日志,则设为YES。
# You may change the default value for timing out an idle session.
idle_session_timeout=60
意思是如果某个用户在60s之内没有活动,则断开这个用户的连接。
注:用户活动包括上传、下载、操作文件、切换目录等。
# You may change the default value for timing out a data connection.
data_connection_timeout=120
意思是如果一个数据通道超时120s以上,则断开这个数据连接。
注:这里跟上面的超时不一样,上面是用户未做任何活动,而这里是用户在下载
或上传数据时,数据连接可能由于网络原因而间断,当超过这里设的时间时服务
器就自动断开这个连接。
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpscure
最好在系统里设置一个单独而且没有任何特权的用户来运行FTP服务器,这样能保证你
的系统更安全,不会因为FTP服务器被入侵而损害到整个系统的其他部分。不过我试过
更改此选项,但并未成功:设为系统中已有的mmpire用户后,进到mmpire中还是无法
启动FTP服务器,可能是由于我装vsftpd的时候用的是root用户的缘故。
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
开启支持早期FTP客户端“async ABOR”命令的能力,我不清楚这个命令的具体意思,
似乎是异步传输请求?不过软件作者不推荐把这个值设为YES,因为它可能会带来安全
上的问题。但禁用它可能会影响到一些用老FTP客户端连接服务器的用户,你自己考虑吧!
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that turning on ascii_download_enable enables malicious remote parties
# to consume your I/O resources, by issuing the command "SIZE /big/file" in
# ASCII mode.
# These ASCII options are split into upload and download because you may wish
# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
# on the client anyway..
#ascii_upload_enable=YES
#ascii_download_enable=YES
这两个值分别控制ASCII模式的上传与下载。系统默认情况下不支持ASCII模式,因为
服务器在这种模式下容易受到恶意攻击。你可以仅仅打开ASCII模式的上传功能而不
允许ASCII模式的下载,这样也还算是比较安全的。
注:
1.通过FTP传送的文件分为两类:文本文件(ASCII)和二进制文件(BINARY)。文本
文件的内容遵循ASCII的定义,由定义好的ASCII码组成,可以被显示和编辑。二进制
文件是指除文本文件以外的所有文件格式。不同操作系统之间的文本文件格式一般会
有一些差别,比如Linux下的换行符与Windows的就不一样,所以当FTP在进行ASCII
文件的传输时,可能会自动进行一些格式转换,而对于二进制文件来说,ftp不进行任
何转换。由此可知,当ASCII文件按二进制方式传输时,至多只是一些换行符未被替
换,大致内容还是对的,(128位ASCII码是通用的),使用编辑器如UltraEdit就可以
自动转换,所以问题不大,但决不能将二进制文件按ASCII方式传输,因为二进制文件
往往是可执行文件,一旦内容稍被修改就会导致无法使用。
默认情况下,vsftpd会在表面上允许客户使用ASCII传输模式,而实际上忽略了这个请
求,仍然以二进制模式传输,从上面可以知道,这并不会造成文本文件无效,最多只
会有一些小缺陷而已。
2.关于DoS攻击,参看中国IT认证实验室的文章:
http://www.chinaitlab.com/www/special/ciwddos.asp
# You may fully customise the login banner string:
ftpd_banner=Welcome to mmpire FTP service.  
在这里设置你的FTP服务器的进站欢迎词,发挥你的想像力,用字符画画。
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
这个email列表列出了所有禁止访问的邮件地址,据作者说可以有效防止DoS攻击,
当匿名用户登录时将被要求使用邮件地址来作为密码,而如果使用的是在这个列表
里的email地址,服务器将拒绝这个连接要求。
注:
1,如果设为YES,那么下面的banned_email_file也需要设置,用以指向包含所有
非法邮件地址的文件。
2,我不知道那些使用vsftpd的网站是怎么实现这个功能的,不过据我测试,一些声
称需要匿名用户使用邮件地址作为密码的FTP服务器,实际上输入任意密码都可以,
只要不是在拒绝邮址目录的条目,都可以登录进去。
3,在Wu-FTP、Serv-U等FTP服务器中都可以检测匿名用户输入的密码是否为邮件
地址格式,即是否含有@字符。更先进的vsftpd理应支持,等我以后知道了再补充,
如果你知道,请告诉我,谢谢:mmpire@gmail.com
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
这条命令必须在上一条为YES时才有效,它指定了一个非法邮件列表文件。
如果某个匿名用户输入的密码列在这个表里,那么服务器就会拒绝登录。
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
这两个命令必须与chroot_local_user一起使用:
1,当chroot_local_user=NO时,用户名在/etc/vsftpd.chroot_list文件里的用户将被
限制在自己的目录里,而无法访问除自己目录以外的目录。本地用户一般在
“/home/用户名/”目录下。
2,相反当chroot_local_user=YES时,用户名不在/etc/vsftpd.chroot_list文件里的
用户将被限制。
注:匿名用户只能在“/var/ftp/”目录下,不受上面的设定影响。
注:默认情况下没有vsftpd.chroot_list文件,需要自行添加,每行一个用户名即可,
注:vsftpd服务器通过调用chroot()函数来实现用户的目录更改操作,而不是直接调
用系统的函数,这样据说可以提高安全性。
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
ls_recurse_enable=YES
允许用户以递归方式来显示目录下的内容则设为YES。
注:以递归方式显示对用户来说比较方便,具体命令为:ls -R
用户可以一次性查看当前目录下的文件和子目录,以及子目录里面的文件和子
目录,如此递归下去...显然,如果是一个大的FTP服务器,那么这个过程可能会
很漫长,很耗资源,所以只推荐小型服务器使用。
pam_service_name=vsftpd
指定PAM身份确认服务的配置文件为vsftpd,指的是/etc/pam.d/vsftpd这个文件。
注:PAM是由SUN公司提出的一种身份认证机制,广泛应用于类UNIX系统中,
可用于telnet、login、ftp等服务的用户认证。欲详细了解请看下面这篇文章:
http://blog.chinaunix.net/article.php?articleId=12239&blogId=60
#userlist_enable=YES
与这个选项相关的有userlist_deny和userlist_file,关系很复杂,简单描述一下:
1,userlist_file的值指定一个文件,里面按行存放着一些用户名。
2,首先,如果userlist_enable=NO或被注释掉,那么其他两项无效。
3,否则,再看userlist_deny,如果为YES,则userlist_file文件是一个黑名单;
如果为NO,则为白名单(即不在此文件中的用户名无法登录)。
注:均指本地用户。
#enable for standalone mode
listen=YES
如果要使用standalone模式则设为YES。这两个模式前面已经讲过,不再赘述。
#tcp_wrappers=YES
TCP_Wrappers是一种数字过滤工具,可以用来实现访问控制和网络记录。
1,控制对系统提供的由inetd启动的服务的访问;
2,对访问/etc/inetd.conf文件中的服务请求进行记录;
跟前文一致,不推荐使用inextd模式来运行FTP服务器。
注:新版本vsftpd的standalone模式已经支持tcp_wrappers,见后面“针对单个IP的配置”。
|
2、推荐配置实例
①standalone运行模式下的针对InternetSite应用的配置文件vsftpd.conf:
# Standalone mode
listen=YES
max_clients=200
max_per_ip=4
# Access rights
anonymous_enable=YES
local_enable=NO
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# Security
anon_world_readable_only=YES
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
# Features
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
# Performance
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000
②针对单个IP的配置:
设置过程:
1,
在配置文件vsftpd.conf中加入:
tcp_wrappers=YES
2,
重启FTP服务器,单IP配置功能其实已经启动,试一试?
3,
在/etc/hosts.allow文件中加入这么一句:
vsftpd: 173.26.100.36: DENY
这是msmouse的IP地址,呵呵,他就登不上FTP服务器了。
4,
这还没完全发挥单IP配置的强大功能,再加上下面这条:
vsftpd: 173.26.100.31: setenv VSFTPD_LOAD_CONF /etc/vsftpd_mmpire.conf
这里的意思是:对于从173.26.100.31这个IP发过来的连接请求,使用特定的配置文件,这里指定是/etc/vsftpd_mmpire.conf文件,你预见到它的强大用处了吗?
注:这里使用了tcp_wrappers数字过滤工具。当用户试图登录FTP服务器时,服务器先调用tcp_wrappers,tcp_wrappers可以根据用户的IP进行特定配置,配置文件在/etc/hosts.allow中,注意这是tcp_wrappers的配置文件而不是vsftpd的。由于新版本vsftpd在standalone模式下也支持此工具,xinetd模式就更没有什么优势了。
还有几个配置实例,这里不一一详述,可以到这里下载:
ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.0.3/EXAMPLE/
搜索更多相关主题的帖子:
示例 vsftp 详解 文件 翻译