Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10732077
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:33:40

VSFTP服务器配置
VSFTPD的文件结构主要包括: 安装第一张光盘 vsftpd-1.1.3-8.i386.rpm
  /usr/sbin/vsftpd ---- VSFTPD的主程序
 /etc/rc.d/init.d/vsftpd ---- 启动脚本
 /etc/vsftpd/vsftpd.conf ---- 主配置文件
 /etc/pam.d/vsftpd ---- PAM认证文件
  /etc/logrotate.d/vsftpd.log 日志
 /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件
 /etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件
 最后两个是重复的设置,不过,这样比较安全。PAM模块是外挂的程序,而另一个则是vsftpd提供的功能 ,上述两个文件要一起修改。!
两种启动方式:xinetd(守护进程)standalone(独立)
 
创建一个nobody用户  useradd nobody  一般情况下默认存在
建一个empty目录   /usr/share/empty  一般情况下默认存在
创建vtp用户并指定其目录(当需要匿名访问的时候),并设置安全的权限 
mkdir /var/ftp/      useradd –d /var/ftp ftp   ftp用户默认存在
chown root.root /var/ftp       chmod og-w /var/ftp
 
下面详细解释配置文件的命令:/etc/vsftpd/vsftpd.conf
关于主机的设定值:
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
 -如果 clientServer间的资料传送在 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访问的,所以要打开本地访问。并且禁止所有有关匿名用户的配置
现在就可以通过tomjack来访问FTP了,进入的是用户vuserhome目录
 
 
实例
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  匿名登陆,可以用ftpanonymous帐号
若: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目录进行操作,而incomingroot所有,匿名用户(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服务器。

阅读(1057) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~