vsftpd全称“VerysecureFTPDaemon”1.安装vsftpd1.1安装db4-util生成认证文件[root@localhost~]#yum-yinstalldb4-utils1.2安装vsftpd[root@localhost~]#yum-yinstallvsftpdVsftpd的配置文件为:/etc/vsftpd/vsftpd.conf,主配置文件/usr/sbin/vsftpd,Vsftpd的主程序/etc/pam.d/vsftpd,PAM认证文件(该文件中的file=/etc/vsftpd/ftpusers字段表示被禁止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)/var/ftp,匿名用户主目录;本地用户家目录该目录为:/home/用户家目录,即登录后进入自己的家目录/var/ftp/pub,匿名用户的下载目录,该目录需要root权限chmod1777pub(1为特殊权限,上传后不能删除)1.3vsftpd主配置文件/etc/vsftpd/vsftpd.conf说明:vsftpd的配置文件格式为“参数=设置值”,请注意等号两边不能有空格1.3.1服务器环境相关的配置值connect_from_port_20=YES(Ftp数据传输端口)listen_port=21(vsftpd使用的命令通道端口,这个值只适合用于单机模式启动,对superdaemon无效)dirmessage_enable={YES|NO}(当用户进入某个目录时,会显示该目录下需要注意的内容,显示文件默认为.message)message_file=.message(当dirmessage_enable=YES时,可以设置此项让vsftpd搜索文件显示信息)listen={YES|NO}(如果设置为YES,表示vsftpd以单机模式启动,centos默认为YES)pasv_enable={YES|NO}(支持数据流被动连接方式,被动模式,最好设置为YES)use_localtime={YES|NO}(是否使用本地时间,vsftpd默认使用GMT时间)write_enable={YES|NO}(是否允许用户上传数据)connect_timeout=60(单位是秒在主动数据连接模式下,如果服务器发送的连接信号在60秒内没有得到客户端的响应,则不会等待强制断开)accept_timeout=60(当客户端使用被动PASV时对于数据传输,如果服务端开启被动端口等待客户端响应超过60秒,则长时间强制断开连接,这个设置类似于connect_timeout,不过一个是管理主动连接,另一个是管理被动连接)data_connection_timeout=300(如果300秒内建立数据连接或者数据传输没有成功完成,服务器会主动断开连接)idle_session_timeout=300(如果用户在300秒内没有命令操作,会强制下线,避免占用空间)max_clients=0(如果是单机模式启动)可以,那么这个设置项可以设置同时连接vsftpd的客户端有多少个,0表示不限制)max_per_ip=5(设置同一个IP同时允许的连接数)pasv_min_port=0,pasv_max_port=0(被动模式如果要使用65400到65410的11个端口进行被动连接,pasv_min_port=65400pasv_max_port=65410,若为0则表示随机访问不限)ftpd_banner="sometextdescription"(用户登录时显示description)banner_file=/path/file(指定一个纯文本文件作为显示的欢迎词当用户登录vsftpd服务器时)1.3.2实体用户相关的设置值guest_enable={YES|NO}(如果设置为YES,那么任何物理账户都会被认为是guest,所以不是默认打开。vsftpd中访问者默认会获得ftp用户的相关权限,但可以通过guest_username修改)guest_name=ftp(当guest_enable为YES时才会生效,指定访问者身份)local_enable={YES|NO}(这个值被设置当值为YES时,/etc/passwd中的账户可以物理用户登录)local_max_rate=0(物理用户的传输速度限制,单位为bytes/second,0为无限制)chroot_local_user={YES|NO}(设置为YES时,用户仅限于自己的用户主目录,为了安全,这里应该设置为YES)chroot_list_enable={YES|NO}(是否开启chroot写列表功能?同上)下面的chroot_list_flie是相关的!必须启用此项,否则下面的列表文件将无效)chroot_list_file=/etc/vsftpd/chroot_list(如果chroot_list_enable=YES,则可以设置此项!)userlist_enable={YES|NO}(是否使用vsftpd的抵抗机制来处理一些冷门账户,这和下面的参数设置有关;)account包含在文件中,文件中的用户将无法登录vsftpd服务器!该文件的文件名与以下设置项有关。)userlist_file=/etc/vsftpd/user_list(如果上面userlist_deny=YES时,这个文件有用!这个文件中的账户不能使用vsftpd)1.3.3设置值匿名登录anonymous_enable=YES(NO)设置为允许匿名登录到我们的vsftpd主机!默认是YES,下面所有相关设置都需要把这个设置为anonymous_enable=YES才能生效!anon_world_readable_only=YES(NO)只允许匿名下载可读文件,默认为YES。anon_other_write_enable=YES(NO)允许匿名者拥有除写以外的权限?包括删除和重写服务器上的文件和文件名的权限。默认当然是NO!如果要设置为YES,那么还需要调整开放给匿名写入的目录的权限,让vsftpd的PID拥有者可以写入!anon_mkdir_write_enable=YES(NO)anonymous是否有创建目录的权限?默认为否!如果要设置为YES,那么anony_other_write_enable必须设置为YES!anon_upload_enable=YES(NO)是否允许anonymous具有上传数据的功能,默认为NO,如果要设置为YES,则必须设置anon_other_write_enable=YES。deny_email_enable=YES(NO)屏蔽一些特殊的邮箱地址,不让那些匿名登录!如果您以匿名身份登录服务器,是否会要求您输入密码?密码不是要求您输入电子邮件地址吗?如果你讨厌某个邮箱地址,你可以使用这个设置来取消他的登录权限!需要配合下一个设置项:banned_email_file=/etc/vsftpd/banned_emails如果deny_email_enable=YES,可以使用这个设置项来指定哪个邮箱不能登录我们的vsftpd!在上面设置的文件中,只需在一行中输入一个电子邮件地址即可!no_anon_password=YES(NO)当设置为YES时,表示anonymous会跳过密码验证步骤,直接进入vsftpd服务器!所以一般默认是NO!(登录时会检查输入的emai)anon_max_rate=0这个设置值后面的数值单位是bytes/second,限制匿名的传输速度,如果为0则不限制(受最大带宽限制),如果你想要匿名的速度只有30KB/s,你可以设置“anon_max_rate=30000”anon_umask=077来限制匿名上传文件的权限!如果是077,匿名发送的文件的权限会是-rw--------1.3.4关于系统安全的一些设置值ascii_download_enable=YES(NO)如果设置为YES,那么客户端会优先(默认)下载ASCII格式的文件。ascii_upload_enable=YES(NO)和前面的设置类似,但是这个设置是为了上传!默认是NOone_process_model=YES(NO)这个设置项稍微危险一点。当设置为YES时,表示每一个建立的连接都会有一个进程负责,这样可以提高vsftpd的性能。但是,除非你的系统比较安全,硬件配置比较高,否则很容易耗尽系统资源!一般建议设置为NO!tcp_wrappers=YES(NO)我们当然习惯支持TCPWrappers!所以把它设置为是!xferlog_enable=YES(NO)当设置为YES时,用户上传下载的文件都会被记录。记录的文件与下一个设置项有关:xferlog_file=/var/log/xferlog如果最后的xferlog_enable=YES,这里可以设置!这是登录文件的文件名!xferlog_std_format=YES(NO)是否设置为与wuftp相同的日志文件格式?默认是NO,因为注册表文件会更容易阅读!但是,如果你有使用wuftp记录文件的分析软件,除了/var/log/xferlog的wu-ftp格式的日志文件,需要设置YESdual_log_enable=YES,vsftpd_log_file=/var/log/vsftpd.log,还可以拥有vsftpd特有的登录文件格式!如果您的FTP服务器不是很忙,也许最好设置两个日志文件用于写入(/var/log/{vsftpd.log,xferlog)。nopriv_user=nobody我们的vsftpd默认nobody作为这个服务执行者的权限。因为nobody的权限相当低,即使被入侵,入侵者也只能获得nobody的权限。pam_service_name=vsftpd这是pam模块的名字,放在/etc/pam.d/vsftpd中。二、配置虚拟用户的密码文件:[root@localhostvsftpd]#cat/etc/vsftpd/vuser.txtmike(一行用户名,一行密码)pwd1234db_load-T-thash-f/etc/vsftpd/vuser.txt/etc/vsftpd/vuser.db(生成密码文件)2.1编辑vsftpd的认证文件:[root@localhostvsftpd]#cat/etc/pam.d/vsftpd#%PAM-1.0#sessionoptionalpam_keyinit.soforcerevoke#authrequiredpam_listfile.soitem=usersense=denyfile=/etc/vsftpd/ftpusersonerr=succeed#authrequiredpam_shells.so#authincludepassword-auth#accountincludepassword-auth#sessionrequiredpam_loginuid.所以#session包括需要密码验证的/lib64/security/pam_userdb。sodb=/etc/vsftpd/vuseraccountrequired/lib64/security/pam_userdb.sodb=/etc/vsftpd/vuser//添加最下面两行注释掉其他行,因为本地用户登录依赖这个文件local_enable=YES不能关闭但是本地用户不能再登录的原因是因为虚拟用户映射到本地用户。2.2创建本地映射用户并设置宿主目录权限用户add-d/home/vftproot-s/sbin/nologinvuservuser不需要设置密码,只是一个映射用户用户名必须和下一步的配置文件一致chmod755/home/vftproot2.3配置file[root@localhostvsftpd]#cat/etc/vsftpd/vsftpd.confanonymous_enable=NO#不允许匿名用户登录banner_file=/etc/vsftpd/welcome.txt#登录用户看到的通知local_enable=YES#支持本地物理用户登录local_umask=022#创建新目录(755)和文件(644)的权限write_enable=YES#允许用户上传包括文件和目录在内的数据dirmessage_enable=YES#如果有.message目录下,会显示文件内容message_file=.messagexferlog_enable=YES#启动Log记录文件,记录在/var/log/xferlogxferlog_file=/var/log/xferlog#Log文件路径connect_from_port_20=YES#支持activeconnectionlisten=YES#Usestandalonetostartvsftpdpam_service_name=vsftpd#支持pam模块管理userlist_enable=YES#/etc/vsftpd/user_list文件中的账户登录控制userlist_deny=YESuserlist_file=/etc/vsftpd/user_listuse_localtime=YES#使用本地监听端口listen_port=21#单机download_enable=YESmax_clients=0max_per_ip=3pasv_enable=YES#支持被动模式pasv_min_port=24500#Passv_max_port=24600accept_timeout=60connect_timeout=60idle_session_timeout=600#600秒内无命令断开data_connecttion_timeout=500#传输文件超时tcp_wrappers=YES#支持TCPWrappers防火墙机制chroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_listguest_enable=YESguest_username=vuser#指定访问者身份pam_service_name=vsftpd#支持pam模块管理user_config_dir=/etc/vsftpd/vuser_dir#创建虚拟用户配置文件目录