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

vsftpd

2015-06-20 13:09 686 查看
vsftpd:Very Secure FTP Daemon

一.特点

1.vsftpd服务的启动者身份为一般用户,所以对于Linux系统的权限较低,还支持chroot()这个函数,用它进行改换根目录的操作;

2.任何需要具有较高执行权限的vsftpd命令均以一个特殊的上层程序控制,该上层程序享有的较高执行权限功能已经被限制得相当低,并以不影响Linux本身的系统为准;

3.绝大部分FTP会使用到的额外命令功能(dir,ls,cd等)都已经被整合到vsftpd主程序中,因此理论上vsftpd不需要使用到额外的系统提供的命令,所以在chroot的情况下,vsftpd不但可以顺利工作,且不需要额外功能对于系统来说也比较安全;

4.所有来自客户端且想要使用这个上层程序所提供的较高执行权限的vsftpd命令的需求,均被视为不可信任的要求来处理,必须经过相当程度的身份确认后,方可利用该上层程序的功能,比如chown(),Login的要求等操作;

5.在上层程序中,依然使用chroot()的功能来限制用户的执行权限。

二.配置

/etc/vsftpd/vsftpd.conf:这个文件的设置是以bash变量设置相同的方式来处理的,也就是“参数=设置值”,当然,和bash变量设置一样,=两边不能有空格;

/etc/pam.d/vsftpd:这是vsftpd使用PAM模块时的相关配置文件,主要用作身份认证,还有阻挡用户身份的功能;

/etc/vsftpd/ftpusers:PAM模块(/etc/pam.d/vsftpd)所指定的那个无法登录的用户配置文件,只要将不想让它登录FTP的账号写入即可,每个账号一行;

/etc/vsftpd/user_list:该文件能否生效由主配置文件(/etc/vsftpd/vsftpd.conf)中的两个参数有关,分别是userlist_enable和userlist_deny,这个文件是vsftpd自定义的阻挡访问项目;

/etc/vsftpd/chroot_list:该文件能否生效由主配置文件(/etc/vsftpd/vsftpd.conf)中的两个参数有关,分别是chroot_list_enable和chroot_list_file,该文件默认不存在,主要功能是将某些账号的用户chroot建立在他们默认用户主目录下,用来限制在他们的用户主目录下而不许到其他目录去;

/usr/sbin/vsftpd:主执行文件;

/var/ftp:vsftpd默认匿名用户登录的根目录,其实与FTP这个账号的用户主目录有关;

/etc/vsftpd/vsftpd.conf文件中参数介绍:

1.与服务器环境比较相关的设置值:

connect_from_port_20=YES(NO):FTP数据传输的端口号;

listen_port=21:vsftpd使用命令通道的端口,可以改成其他非正规的端口,但是,这个设置值只适合以stand alone的方式来启动,对于super daemon无效;

dirmessage_enable=YES(NO):当用户进入某个目录时,会显示该目录需要注意的内容,显示的文件默认是.message,由下个参数设定;

message_file=.message:当dirmessage_enable=YES时,可以设置这个项目让vsftpd寻找该文件来显示信息;

listen=YES(NO):若设置为YES,表示vsftp是以stand alone的方式来启动,默认是NO;

pasv_enable=YES(NO):若为YES,则表示支持被动式连接模式,一定要设置成YES;

use_localtime=YES(NO):是否使用当地时间,vsftpd默认使用的GMT(格林尼治)时间,建议修改成YES;

write_enable=YES(NO):是否允许用户上传数据;

connect_timeout=60:设置主动连接模式下的超时时间;

accept_timeout=60:设置被动连接模式下的超时时间,服务端启用passive port并等待客户端超过该时间未得到响应,则强制断线;

data_connection_timeout=300:在数据连接已经成功建立情况下,在该时间内还未完成数据的传送,客户端的连接就被强制中断;

idle_session_timeout=300:如果用户在300s内没有命令操作,强制脱机,避免无用占用空间;

max_clients=0:如果vsftpd是以stand alone方式启动的,那么这个设置项目可以设置同一时间最多有多少客户端可以连接,用来限制FTP的数量;

max_per_ip=0:设置同一个IP最大的连接数;

pasv_min_port=0、pasv_max_port=0:在被动式连接模式下,设置端口范围,如果是0的话,表示随机取用无限制;

ftpd_banner=一些文字说明:当用户连接到vsftpd时,在客户端软件上显示的说明文字;

banner_file=/dir/file:可以指定某个文件作为用户登录时所显示的文字,和上个参数功能一样,只是上个参数设置值数据比较少。

2.与实体用户较相关的设置值

guest_enable=YES(NO):如果设置为YES,那么任何实体账号,均会被假设成为guest(默认不开放);

guest_username=ftp:在guest_enable=YES时才会生效,指定访客的身份;

local_enable=YES(NO):这个设置值必须为YES,这样在/etc/passwd内的账号才能以实体用户的方式登录vsftpd服务器;

local_max_rate=o:设置实体用户的传输速度限制,单位为bytes/second,0表示不限制;

chroot_local_user=YES(NO):在默认的情况下,是否要将用户限制在自己的用户主目录之内(chroot);

chroot_list_enable=YES(NO):是否启用chroot写入列表的功能;

chroot_list_file=/etc/vsftpd.chroot_list:chroot_list_enable=YES时这个设置生效,指定写入文件名;

userlist_enable=YES(NO):是否借助vsftpd的阻挡机制来处理某些不受欢迎的账号;

userlist_deny=YES(NO):userlist_enable=YES才生效,若该值设置为YES,则当用户账号被列入某个文件时,在该文件内的账号无法登录vsftpd服务器;

userlist_file=/etc/vsftpd/user_list:当需要阻挡某些账号时,将他们写入该文件;

3.匿名用户登录的设置值

anonymous_enable=YES(NO):是否启用允许匿名登录,默认为YES;

anon_world_readable_only=YES(NO):仅允许anonymous具有下载可读文件的权限,默认为YES;

anon_other_write_enable=YES(NO):是否允许除了写入之外的权限,包括删除与修改服务器上的文件及文件名等权限,默认为NO,如果设为YES,那么开放给anonymous写入的目录也需要调整权限;

anon_mkdir_enable=YES(NO):是否允许匿名用户具有建立目录的权限,默认为NO,需要设置为YES的话,必须有anon_other_write_enable=YES的支持;

anon_upload_enable=YES/NO:是否让匿名用户有上传数据的功能,默认为NO,需要设置为YES的话,必须有anon_other_write_enable=YES的支持;

deny_email_enable=YES(NO):是否阻挡特殊的E-mail address;

banned_email_file=/etc/vsftpd/banned_emails:需要阻挡的e-mail address写入的文件,需要deny_email_enable=YES支持;

no_anon_password=YES(NO):设置为YES时,表示anonymous将会略过密码检验步骤,而直接进入vsftpd服务器内;

anon_max_rate=0:限制匿名用户的传输速度,单位为byte/second,为0则不限制;

anon_umask=077:限制匿名用户上传文件的权限;

4.关于系统安全方面的一些设置值

ascii_download_enable=YES(NO):如果设置为YES,那么客户端就优先使用ASCII格式下载文件;

ascii_upload_enable=YES(NO):与上个参数类似,只是该参数指定上传;

one_process_model=YES(NO):当设置为YES时,表示每个建立的连接都会拥有一个process在负责,可以提高vsftpd的效率,一般建议设置为NO;

tcp_wrappers=YES(NO):是否支持tcp wrappers;

xferlog_enable=YES(NO):当设置为YES时,用户上传和下载文件都会被记录下来;

xferlog_file=/var/log/sferlog:指定记录用户下载,上传文件的日志文件;

xferlog_std_format=YES(NO):是否设置为wu-ftp相同的日志文件格式,默认为NO;

dual_log_enable=YES、vsftpd_log_file=/var/log/vsftpd.log:除了/var/log/xferlog的wu-ftp格式日志外,还可以具有vsftpd独特日志文件格式;

nopriv_user=nobody:vsftpd默认以nobody作为此服务执行者的权限,因为nobody权限相当低;

pam_service_name=vsftpd:这个是PAM模块的名称,放置在/etc/pam.d/vsftpd中的即是这个。

三.服务的启停

/etc/init.d/vsftpd start/stop

参考:《鸟哥的Linux私房菜--服务架设篇》(第三版)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: