关于主机的设定值:
listen_port=21
-命令通道的端口设置
Connect_from_port_20=YES
-启动主动连接的端口20
Listen=YES
-表示vsftpd是以standalone方式启动的
write_enable=YES (NO)
-是否允许使用者具有写入权限,包括删除与修改
connect_timeout=60
-单位是秒,如果client尝试连接我们的vsftpd命令通道超过 60 秒,则不等待,强制 断线咯。
data_connection_timeout=300
-如果 client与Server间的资料传送在 300 秒內都无法传送成功,
-那 Client 的连线就会被我们的 vsftpd 强制剔除!
idle_session_timeout=300
-如果使用者在 300 秒內都沒有命令动作,强制离线!
max_clients=0
-如果 vsftpd 是以 stand alone 方式启动的,那么这个设定项目可以设定
-同一时间,最多有多少 client 可以同時连上 vsftpd 哩
max_per_ip=0
-与上面 max_clients类似,这里是同一个 IP 同一时间可允许多少连线?
关于本地用戶登入者的设定值:
local_enable=YES (NO)
-这个设定值必须要为 YES 时,在 /etc/passwd 內的帐号才能以
-本地用戶的方式登入我们的 vsftpd 主机喔!
local_root=
-定义所有本地用户的根目录。当本地用户登入时,将被更换到此目录下。默认值为无。
local_max_rate=0
-实体用戶的传输速度限制,单位为 bytes/second, 0 为不限制。
chroot_local_user=YES (NO)
-将使用者限制在自己的家目录之內(chroot)!这个设定在 vsftpd
-当中预设是 NO,因为有底下两个设定项目的辅助喔!
-所以不需要改动他!!
chroot_list_enable=YES (NO)
-是否启用将某些实体用戶限制在他们的家目录内?!预设是 NO ,
-不过,如果您想要让某些使用者无法离开他门的家目录时,
-可以考虑将这个设定为 YES ,并且规定下个设定值
chroot_list_file=/etc/vsftpd.chroot_list
-如果 chroot_list_enable=YES 那么就可以设定这个项目了!他里面可以规定
-那一个实体用戶会被限制在自己的家目录內而无法离开!(chroot)
-一行一个帐号即可!
userlist_enable=YES (NO)
-若此设定值为 YES 时,则当使用者帐号被列入到某个档案时,在该档案內
-的使用者将无法登入 vsftpd 服务器!该档案名与下列设定项目有关。
userlist_file=/etc/vsftpd.user_list
-若上面 userlist_enable=YES 时,则这个档案就有用处了!在这个档案內的
-帐号都无法使用 vsftpd 喔!
userlist_deny=YES|NO
-决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示。NO,只允许在文件中的用户登录FTP服务器。
关于匿名者登入的设定值:
anonymous_enable=YES
-设定为允许 anonymous 登入我们的 vsftpd 主机!预设是 YES ,底下的所有
-相关設定都需要将这个设定为anonymous_enable=YES 之后才会生效!
anon_world_readable_only=YES
-允許 anonymous 具有下载可读文件的权限。
anon_other_write_enable=YES (NO)
-控制匿名用户是否拥有除了上传和新建目录以外的其他权限,如删除,更名等。
anon_mkdir_write_enable=YES (NO)
-是否让 anonymous 具有建立目录的权限?预设值是 NO!如果要设定为 YES,
-那么 anony_other_write_enable 必须设定为 YES !当然在文件系统上,
-FTP匿名用户必需对新目录的上层目录拥有写权限。
anon_upload_enable=YES (NO)
-是否让 anonymous 具有上传资料的功能,预设是 NO,如果要能上传,要要满足另两个条件:
-write_enable=YES 必须设定;在文件系统上,FTP匿名用户对某个目录有写权限。
deny_email_enable=YES (NO)
-将某些特殊的 email address 抵挡住,不让那些 anonymous 登入!
-如果以 anonymous 登入主机时,不是会要求输入密码吗?密码不是要您
-输入您的 email address吗?如果你很讨厌某些 email address ,
-就可以使用这个设定來将他取消登入的权限!需与下个设定项目配合:
banned_email_file=/etc/vsftpd.banned_emails
-如果 deny_email_enable=YES 時,可以利用这个设定项目來规定那个
-email address 不可登入我们的 vsftpd 喔!在上面设定的档案內,
-一行输入一个 email address 即可!
no_anon_password=YES (NO)
-当设定为 YES时,表示 anonymous 将会略过密码检验步骤,
-而直接进入 vsftpd 伺服器內喔!所以一般预设都是 NO 的!
anon_max_rate=0
-这个设定值后面接的数值单位为 bytes/秒 ,限制 anonymous 的传输速度,
如果是 0 则不限制(由最大带宽所限制),如果您想让 anonymous 有
30 KB/s 的速度,可以设定『anon_max_rate=30000』
anon_umask=077
-限制 anonymous 的权限!如果是 077 则 anonymous 传送过來的档案
-权限是 -rw------- 喔!
ftp_username=
- 匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp。
anon_root=
-设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。
-主配置文件中默认无此项,默认值为/var/ftp/。
chown_uploads=YES|NO
-是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。此选项默认值为NO。
chown_username=whoever
-指定拥有匿名用户上传文件所有权的用户。此参数与chown_uploads联用。
不推荐使用root用户。
系统安全设置:
ascii_download_enable=YES (NO)
-如果设定为YES ,那么 client 就可以使用 ASCII 格式下载档案。
一般來说,由于启动了这个设定项目可能会导致 DoS 的攻击,因此预设是NO。
ascii_upload_enable=YES (NO)
-与上一個设定类似的,只是这个设定针对上传而言!预设是 NO。
async_abor_enable=YES (NO)
-如果您的 FTP client 有 "async ABOR" 这个指令时,这个设定才需要启用
-一般來说,由这个设定并不安全,所以通常都是将他取消的!
check_shell=YES (NO)
-如果您想让拥有任何奇怪的 shell 的使用者(在 /etc/passwd 的 shell )
-可以使用 vsftpd 的話,这个设定可以为 NO 喔!
one_process_model=YES (NO)
-这个设定项目比较危险一点~当为 YES 时,表示每个建立的连线
-都会拥有一支 process 在负责,可以增加 vsftpd 的效能。不过,
-除非您的系统比较安全,而且硬件配置比较高,否则容易耗尽系统资源喔!
一般建议为 NO 啦!
tcp_wrappers=YES (NO)
-当然我们都习惯支援 TCP Wrappers !所以预设为 YES 吧!
xferlog_enable=YES (NO)
-当设定为 YES 时,使用者上传下载档案都会被记录起來。记录档案
-与下一个设定项目有关:
xferlog_file=/var/log/vsftpd.log
-如果上一个 xferlog_enable=YES 的话,这个就可以设定了!
-这个是登陆档的档名啦!
nopriv_user=nobody
-我们的 vsftpd 预设以 nobody 作为此一服务执行者的权限。因为 nobody 的权限
-相当的低,因此即使被入侵,入侵者只能取得 nobody 的权限喔!
pam_service_name=vsftpd
-这个是 pam 模组的名称,我们放置在 /etc/pam.d/vsftpd 即是这个东东!
以上大多数默认即可,具体按自己的需求来调整
虚拟FTP帐号
首先编辑一个users.txt文本
[root@redhatlinux9 root]# vi users.txt
tom
123
jack
123 (填加两个密码都为123的用户)
将此文本转换为数据库文件
[root@redhatlinux9 root]# db_load -T -t hash -f users.txt /etc/vsftpd_login.db
更改权限
[root@redhatlinux9 root]# chmod 600 /etc/vsftpd_login.db
修改下面的配置
[root@redhatlinux9 root]# vi /etc/pam.d/ftp
将默认的模块全部注释点,然后填加制定的配置
auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
填加个虚拟帐号要映射的系统用户
[root@redhatlinux9 root]# useradd vuser
编辑下面配置
[root@redhatlinux9 root]# vi /etc/vsftpd.conf
local_enable=YES
guest_enable=YES
guest_username=vuser
因为是通过系统用户vuser访问的,所以要打开本地访问。并且禁止所有有关匿名用户的配置
现在就可以通过tom和jack来访问FTP了,进入的是用户vuser的home目录
实例
useradd -G test –d /tmp/test –M usr1
注:G:用户所在的组 d:表示创建用户的自己目录的位置给予指定
M:不建立默认的自家目录,也就是说在/home下没有自己的目录
(R)读-----下载(W)写----上传 (X)执行----如果不开FTP的目录都进不去
不可修改/var/ftp这个目录的权限(系统为了安全禁止更改),否则匿名用户不能登陆,
可以在它下面建一个专门的子目录来设置权限。匿名用户是不能在/var/ftp下上传文件的,
只能上传到其子目录。如:
mkdir /var/ftp/shangchuan
chgrp ftp /var/ftp/shangchuan
chmod g+w /var/ftp/shangchuan 匿名登陆,可以用ftp或anonymous帐号
若:chmod g-r /var/ftp/shangchuan 则匿名用户不能浏览到文件,也不可下载,保护作用
默认拒绝/etc/ftpusers下列出的用户登陆,但可以通过修改/etc/pam.d/ftp中的sense值为allow,就表示只允许登陆的用户。可以快速的把服务器关起来,然后设置允许登陆的用户。
允许匿名用户上传文件
在vsftpd.conf文件中修改或增加以下选项:
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
然后创建供匿名用户上传文件的目录,并设定权限:
# mkdir /var/ftp/incoming
# chmod o+w /var/ftp/incoming
由于匿名用户(ftp)上传文件,需要对incoming目录进行操作,而incoming为root所有,匿名用户(ftp)对于incoming来说是其他用户,所以要加入其他用户(o)的写权限。
允许匿名拥护下载文件
anon_umask=077 #确定上传的文件对匿名用户可写
限制用户在自家目录
在默认配置中,本地用户可以切换到自家目录以外的目录进行浏览,并在权限范围内进行上传和下载,这无疑是个不安全因素。
我们可以设置chroot,让本地用户登录后只能访问自家目录,无法访问其他目录。
相关的选项有三个:
chroot_local_user
chroot_list_enable
chroot_list_file
限制用户在自家目录有两种做法:
1、限制所有的本地用户在自家目录
chroot_local_user=YES
这种做法,可能会带来一些安全性上的冲突。参见前面的chroot_local_user选项描述。
2、限制部分本地用户在自家目录
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
在/etc/vsftpd.chroot_list文件中加入要限制的本地用户名。注意一个用户名一行。
本地用户控制:
限制指定的本地用户不能访问,而其他本地用户可访问
例如下面的设置:
userlist_enable= YES
userlist_deny=YES
userlist_file= /etc/vsftpd.user_list
使文件/etc/vsftpd.user_list中 指定的本地用户不能访问FTP服务器,
而其他本地用户可访问FTP服务器。
限制指定的本地用户可以访问,而其他本地用户不可访问
例如下面的设置:
userlist_enable= YES
userlist_deny= NO
userlist_file= /etc/vsftpd.user_list
使文件/etc/vsftpd.user_list中 指定的本地用户可以访问FTP服务器,而其他本地
用户不可以访问FTP服务器。