标签:vsftpd配置
vsftpd是FTP协议的实现工具,是一个ftp服务器。FTP协议基于TCP协议通信,且占用两个TCP端口,分为两个连接,分别为命令连接和数据连接;
命令连接:即正常客户端与服务器端简历连接,数据请求时建立的连接等。
数据连接:即数据传输时建立的连接。
FTP协议有两种工作模式,分别为主动模式和被动模式
主动模式:客户端使用TCP随机端口号发起请求到服务器端,而服务器端使用TCP21号端口相应并与之建立命令连接,然后服务器端使用TCP20号端口向客户端发送数据传输请求的数据连接,客户端使用命令连接所使用的随机端口号+1的端口(如果+1被占用,那就+2,以此类推)等待并相应服务器端。
被动模式:客户端使用随机端口发起请求到服务器端,服务器端使用TCP21号端口相应并与之建立命令连接,然后客户端使用命令连接所使用的随机端口号+1的端口(如果+1被占用,那就+2,以此类推)发起数据传输请求到服务器端,服务器端使用TCP随机端口号相应;之所以使用随机端口,是为了解决可能出现多个客户端同时需要传输文件的需求。
注意:主动模式有一个弊端,如果客户端上有防火墙存在,是不允许服务器主动发起请求到客户端的,防火墙会视之为扫描后攻击,会导致FTP传输的失败,而被动模式不会有这种情况发生。
FTP数据都是流式化以后传输的,要么是文本字节码,要么是二进制流
FTP协议是C/S架构
服务器端常用的程序:
wu-ftp
proftpd
pureftp
vsftpd:Very Secure ftpd
IIS
ServU
客户端常用的程序:
GUI,图形界面程序
flashfxp
cuteftp
filezilla(开源)
gftp(Linux)
CLI,命令行程序
ftp
lftp
wget
lftpwget
用户认证方式:
系统用户
虚拟用户
hash file,使用hash文件存储用户名及密码
mysql,使用mysql数据库存储用户名及密码
匿名用户
数据传输安全:
sftp:ssh提供的基于ssh协议的ftp
ftps:基于ssl的ftp
响应码:
1xx:信息码
2xx:成功状态码
3xx:进一步提示补全信息的状态码
4xx:客户端错误
5xx:服务端错误
安装vsftpd:
使用rpm包安装即可
pam:Plugable Authentication Module,插件式认证模块
nsswitch:名称解析框架
模块化:/lib64/libnss*,/usr/lib64/libnss*
配置文件:/etc/nsswitch.conf
pam:认证框架,pam认证时都是基于配置文件认证的
模块化:/lib64/security/pam*.so
配置文件:/etc/pam.conf和/etc/pam.d/*
服务脚本:/etc/rc.d/init.d/vsftpd
配置文件:/etc/vsftpd/vsftpd.conf
主程序文件:/usr/sbin/vsftpd
数据文件:/var/ftp
配置文件的修改:/etc/vsftpd/vsftpd.conf
对于ftp访问ftp服务时应该对其chroot,避免切换目录后产生安全隐患
chroot_local_user={YES|NO} //YES即启用禁锢用户功能,使用户登陆进入FTP目录后,无法切换目录 chroot_list_enable={YES|NO} // 这个指令必须和chroot_list_file一起启用 // 不能上面的chroot_local_user同时启用,因为上面的chroot_list_enable指令是禁锢所有用户 chroot_list_file=/etc/vsftpd/chroot_list // chroot_list_file文件中的用户名即为指定的被禁锢的用户,每行一个用户名
匿名用户的配置:
anonymous_enable=YES // 允许匿名用户登陆 anonymous_upload_enable=YES // 允许匿名用户上传文件 anonymous_write_enable=YES // 允许匿名用户删除文件 anon_mkdir_write_enable=YES // 允许匿名用户创建删除目录 注意:启用写入功能时,ftp用户对相应的本地文件系统也要有相应的写入权限;生效的权限取决于文件 系统权限和服务权限的交集;
banner信息的配置:
ftpd_banner=Welcome to blah FTP service. // 直接输入banner信息 banner_file=/PATH/TO/BANNER_FILE // 定义banner信息文件 例:banner_file=/etc/vsftpd/banner,然后在banner文件中输出banner信息即可 注意:ftpd_banner和banner_file指令不能同时开启 dirmessage_enable=YES // 这个指令的作用是,用户在访问特定目录时会弹出特定banner信息 // 在需要弹出banner信息的目录下编辑一个.message文件即可 // 例如/var/ftp/.message
控制登陆用户的机制:
/etc/vsftpd/ftpusers中的用户都不允许使用ftp服务,这是在/etc/pam.d/vsftpd文件中定义的,一行一个用户
/etc/vsftpd/userlist文件:
黑名单:默认即为黑名单
在/etc/vsftpd/vsftpd.conf中修改 userlist_enable=YES // 启用userlist文件 userlist_deny=YES // 拒绝此文件中的用户
白名单:
在/etc/vsftpd/vsftpd.conf中修改 userlist_enable=YES // 启用userlist文件 userlist_deny=NO // 允许此文件中的用户访问ftp服务
注意:/etc/vsftpd/ftpusers是黑名单,/etc/vsftpd/userlist如果设置为白名单,如果这时候黑名单和白名单中存在同一个用户,那么拒绝优先
连接限制:
max_clients= // 最大并发连接数 max_per_ip= // 每IP可同时发起的并发请求
速率限制:
anon_max_rate= // 匿名用户的最大传输速率,单位是“字节/秒” local_max_rate= // 本地用户的最大传输速率,单位是“字节/秒”
上传文件的umask:用于限制上传的文件的权限
anon_umask= // 匿名用户上传文件的umask; local_umask= // 本地用户上传文件的umask;
修改匿名用户上传文件的属主和属组:
chown_uploads=YES chown_username=someuser // 所有匿名用户上传的文件的属主和属组都会改变成chown_username所指定的用户名
虚拟用户:
所有的虚拟用户都会被映射为一个系统用户,访问时的文件目录是为此系统用户的家目录;
虚拟用户的用户名和密码存储方式:
hash编码的文件:
奇数行为用户名,偶数行为密码
关系型数据库:
vsftpd的用户认证支持从关系型数据库中读取用户名和密码,因为vsftpd的认证机制由pam进行管理,所以只要pam支持关系型数据库就可以。
pam-mysql实现认证
由于pam不支持mysql认证,所以此处的pam-mysql模块是第三方模块,使得pam支持
传输日志:
xferlog_enable=YES xferlog_file=/var/log/vsftpd.log
这篇主要是笔记的整理,写的比较潦草,如有遗漏错误和争议之处,欢迎大家的批评指正和讨论,谢谢。
标签:vsftpd配置
原文地址:http://blog.51cto.com/11367661/2047989