您的位置:首页 > 编程语言 > PHP开发

vsftpd安装和配置文件的注释解析

2007-04-02 14:19 351 查看
source: http://hi.baidu.com/freezoo/blog/item/1dcbd5eaf2342fd2d439c91e.html
一、安装
vsftpd,redhat自带的ftp工具,非常实 用而且安全。在安装linux时选择安装ftp,如果没有安装的则可以在图形环境下单击"主菜单→系统设置→添加删除应用程序"菜单项,在出现的"软件包 管理"对话框里确保选中"FTP服务器"选项,然后单击"更新"按钮,按照屏幕提示用系统盘直接安装或到官方ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.1.tar.gz下载。
可以用rpm –q vsftpd 来查看是否安装了vsftpd

二、vsftpd的配置文件注释解析
安装了vsftpd,要配置属于自己的ftp,就要了解它
vsftpd有4个配置文件:
vsftpd.conf(主配置文件,在/etc/vsftpd)
vsftpd.chroot_list(根据主配置文件是否将用户限制在家目录列表,在/etc)
vsftpd.ftpusers(不允许登陆ftp用户列表,在/etc)
vsftpd.user_list(根据主配置文件是否允许登陆ftp用户列表,在/etc)

下面具体说下主配置文件vsftpd.conf
vsftpd.conf中带“#”的是注释行,是不去执行的代码。
除去多余的注释,其内容如下:
anonymous_enable=YES    //允许匿名用户登陆
local_enable=YES    //允许本地用户登录
write_enable=YES    //开启全局写的权限
local_umask=022    //用户上传的文件权限,默认077
#anon_upload_enable=YES    //允许匿名用户上传文件
#anon_mkdir_write_enable=YES   //允许匿名用户创建目录
dirmessage_enable=YES  //用户首次进入新目录显示欢迎信息
xferlog_enable=YES    //是否激活上传和下传的日志?可以通过 vsftpd_log_file 选项来指定log的位置
connect_from_port_20=YES    //启用FTP数据端口的数据连接。
#chown_uploads=YES    //是否激活将所有匿名上载的文件的宿主调整为 chown_username 中指定的用户
#chown_username=whoever
#xferlog_file=/var/log/vsftpd.log    //日志文件在var/log/vsftpd.log。
xferlog_std_format=YES    //使用标准的日志格式。
#idle_session_timeout=600    //连接空闲最长时间,秒
#data_connection_timeout=120    //数据连接超时时间,秒
#nopriv_user=ftpsecure    //指定一个用户, 当 vsftpd 要切换到无权限状态时, 使用此用户
#async_abor_enable=YES    //激活一个特别的 FTP 命令 "async ABOR"
#ascii_upload_enable=YES    //启用上传的ASCII传输方式。
#ascii_download_enable=YES    //启用下载的ASCII传输方式。
#ftpd_b
4000
anner=Welcome to blah FTP service.    //显示欢迎信息。
#deny_email_enable=YES      //提供一个禁止匿名用户用做密码的 e-mail 地址列表
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails       //e-mail地址列表文件
#chroot_list_enable=YES     //启用chroot用户里表功能,如果启用了chroot_local_user选项, 此文件所包含的则为不会被限制在家目录中的用户列表.
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES     //允许用户使用 "ls"命令
pam_service_name=vsftpd    //用于指定 PAM 服务的名称
userlist_enable=YES       //是否从 userlist_file 选项指定的文件中加载一个用户名列表
listen=YES     //是否让vsftpd以独立模式运行
tcp_wrappers=YES   //是否编译 vsftpd 时加入对 TCP_Wrappers 的支持
我们可以根据自己的情况进行相应的配置了,这里面需要注意的有以下几点(个人意见)

1.对匿名用户的配置:如果需要开启匿名用户的上传和修改权限,除了需要设置anon_upload_enable=YES和write_enable=TES外,还需要对匿名用户所需要上传的文件夹给予相应的权限chmod o+w /文件夹路径(给予除该文件夹所有者以外用户写的权限)。默认的文件权限是不允许除文件所有者以外的用户对该文件进行写入和修改操作的。

2.vsftpd.chroot_list:它是限制用户离开主目录列表(一行一个用户),默认路径在/etc/,也可以用chroot_list_file来指定它的路径。用chroot_list_enable=YES/NO设置是否启用它。启用后,当chroot_local_user(是否关闭已有的限制所有系统用户设置)=NO时,该列表中的用户将被限制到它的主目录中,不允许登陆其它目录;chroot_local_user=YES时,该列表中的用户将不受限制。个人建议启用并且不关闭已有的用户限制,不允许系统用户登陆ftp,设置不允许登陆系统的ftp专用用户加载到列表中,这样可以曾强ftp的安全性。

3.vsftpd.user_list:它是限ftp访问用户列表(一行一个用户),默认路径在/etc/,也可以用Userlist_file来指定它的路径。用userlist_enable=YES 来设置是否启用它。启用后,当userlist_deny=NO时,该列表中的用户将会在询问密码前被拒绝。当userlist_deny=YES时,只有该列表中的用户才被允许登陆。

4.对ftp数据连接端口的设定:大家都知道ftp标准的连接端口是21,如果我们把ftp的数据连接端口设置成非标准端口的话,遭受攻击的可能性就会更小。我们可以用Listen_port=端口,来设定一个非标准的端口。

5.其它的安全设置:
  Accept_timeout=60(秒) (将客户端空闲1分钟后断)
  Connect_timeout=60(秒) (中断1分钟后又重新连接)
  Local_max_rate=50000(bite) (本地用户传输率50K)
  Anon_max_rate=30000(bite) (匿名用户传输率30K)
  Pasv_min_port=50000 (将客户端的数据连接端口改在
  Pasv_max_port=60000    50000—60000之间)
  Max_clients=200 (FTP的最大连接数)
  Max_per_ip=4 (每IP的最大连接数)
listen_address=ip address  (如果服务器有多ip用此绑定需要监听的ip)
ps –xf |grep (查看谁登陆了ftp) ftp kill 进程号 (杀掉它)
三、配置

有了这些资料,相信不难配置出适合自己的ftp了,接下来就开始
先从vsftp.conf开始:
#######################################
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
nopriv_user=ftpuser
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=1800
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
ls_recurse_enable=YES
#匿名用户只能读取、本地用户有完全控制权、启用日志、启用vsftpd.chroot_list列表记录不允许离开主目录的用户等
anon_max_rate=300000
max_clients=50
max_per_ip=3
listen_port=xxxx
#设定非标准数据连接端口xxxx等
pam_service_name=vsftpd
userlist_enable=YES
listen=YES
tcp_wrappers=YES
#启用vsftpd.user_list列表记录不允许登陆的用户等
#######################################
这样配置不允许匿名用户有读取以外的权限,给予指定的本地用户完全控制权限。

为了方便ftp的管理和安全:
[root@localhost ~]# groupadd ftpuser     //新建用户组ftpuser
[root@localhost ~]# useradd –g groupadd –d /var/ftp –s /sbin/nologin ftpuser  //新建ftpuser,属于ftpuser组,家目录为/var/ftp,不允许登陆系统
[root@localhost ~]# passwd ftpuser    //设置用户密码,不设置密码新建用户被锁定无法登陆
然后将除ftpuser以外的本地用户都添加到vsftpd.ftpusers和<
b9cd
span>vsftpd.user_list中,不允许其它本地用户登陆ftp;将ftpuser和匿名用户(Anonymous)添加到vsftpd.chroot_list中,将ftpuser和匿名用户限制在它们的主目录/var/ftp中,不允许离开。
再设定一些安全机制如连接最大闲置时间、限制匿名用户传输速度300k、修改数据连接端口、限制最大连接数等。

配置好了vsftpd.conf,接下来再对ftp文件夹设置相应的权限就可以了。因为/var/ftp是属于root用户,并且其它用户无权对该文件夹进行写的权限,这样ftpuser用户就无法完全控制该文件夹,只有和匿名用户一样的权限,只能下载和查看。所以需要对ftp文件夹的权限进行修改:
[root@localhost var]# chgrp ftpuser ftp    //把ftp的属组改为ftpuser
[root@localhost var]# chown ftpuser ftp   //把ftp的属主改为ftpuser
[root@localhost var]# chmod 755 ftp     //把ftp的权限改为755,只有属主有读写权限,其他用户只能读取
这样ftpuser就对ftp有了完全管理的权限,其他用户只有读取的权限。

经过以上的配置,一个实用安全的ftp就建好了。

四、补充技巧
1.在ftp中建立个人文件夹:很简单,新建文件夹a,将a的属主设为需要的用户auser,并将它的权限设为700(只给予所有者读写的权限),还要将auser加入ftpuser组使它能够登陆ftp:
[root@localhost var]# mkdir a         //新建文件夹a
[root@localhost var]# chgrp auser a    //把a的属组改为auser
[root@localhost var]# chown auser a   //把a的属主改为auser
[root@localhost var]# chmod 700 a    //把a的权限改为700,只有属主有读写权限,其他用户无任何权限
这样登陆ftp的其它用户就无法访问该文件夹了,包括上级目录所有者也无权访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息