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私房菜--服务架设篇》(第三版)
一.特点
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私房菜--服务架设篇》(第三版)
相关文章推荐
- 辛星和你解读PHP递归
- FTP
- PHP传值、传引用
- php实现对象克隆的方法
- php判断对象是派生自哪个类的方法
- php类的扩展和继承用法实例
- php传值赋值和传地址赋值用法实例分析
- php多重接口的实现方法
- php正则表达式—工具类的开发
- php单一接口的实现方法
- php文件读取方法实例分析
- php写入、删除与复制文件的方法
- php文件操作之小型留言本实例
- php post大量数据时发现数据丢失问题解决方法
- PHP文件生成的图片无法使用CDN缓存的解决方法
- 手机访问本地php项目遇到的问题及解决
- 手机访问本地php项目遇到的问题及解决
- TI C66x DSP 系统events及其应用 - 5.8(ISTP)
- USB UMS MTP设置过程 (一)
- Dreamweaver CS6 PHP代码提示