设为首页 收藏本站
查看: 1636|回复: 0

[经验分享] vsftpd简析

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-12-7 14:32:52 | 显示全部楼层 |阅读模式
                                                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,避免切换目录后产生安全隐患
1
2
3
4
5
6
7
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文件中的用户名即为指定的被禁锢的用户,每行一个用户名



匿名用户的配置
1
2
3
4
5
6
7
8
9
10
11
anonymous_enable=YES
// 允许匿名用户登陆
anonymous_upload_enable=YES
// 允许匿名用户上传文件
anonymous_write_enable=YES
// 允许匿名用户删除文件
anon_mkdir_write_enable=YES
// 允许匿名用户创建删除目录

注意:启用写入功能时,ftp用户对相应的本地文件系统也要有相应的写入权限;生效的权限取决于文件
系统权限和服务权限的交集;



banner信息的配置
1
2
3
4
5
6
7
8
9
10
11
12
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文件:
  黑名单:默认即为黑名单
1
2
3
4
5
在/etc/vsftpd/vsftpd.conf中修改
userlist_enable=YES
// 启用userlist文件
userlist_deny=YES
// 拒绝此文件中的用户



  白名单:
1
2
3
4
5
在/etc/vsftpd/vsftpd.conf中修改
userlist_enable=YES
// 启用userlist文件
userlist_deny=NO
// 允许此文件中的用户访问ftp服务



注意:/etc/vsftpd/ftpusers是黑名单,/etc/vsftpd/userlist如果设置为白名单,如果这时候黑名单和白名单中存在同一个用户,那么拒绝优先

连接限制
1
2
3
4
max_clients=
// 最大并发连接数
max_per_ip=
// 每IP可同时发起的并发请求



速率限制
1
2
3
4
anon_max_rate=
// 匿名用户的最大传输速率,单位是“字节/秒”
local_max_rate=
// 本地用户的最大传输速率,单位是“字节/秒”



上传文件的umask:用于限制上传的文件的权限
1
2
3
4
anon_umask=
// 匿名用户上传文件的umask;
local_umask=
// 本地用户上传文件的umask;



修改匿名用户上传文件的属主和属组

1
2
3
chown_uploads=YES
chown_username=someuser
// 所有匿名用户上传的文件的属主和属组都会改变成chown_username所指定的用户名



虚拟用户
所有的虚拟用户都会被映射为一个系统用户,访问时的文件目录是为此系统用户的家目录;

虚拟用户的用户名和密码存储方式:
  hash编码的文件:
    奇数行为用户名,偶数行为密码
  关系型数据库:
    vsftpd的用户认证支持从关系型数据库中读取用户名和密码,因为vsftpd的认证机制由pam进行管理,所以只要pam支持关系型数据库就可以。
    pam-mysql实现认证
      由于pam不支持mysql认证,所以此处的pam-mysql模块是第三方模块,使得pam支持
传输日志
1
2
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log




这篇主要是笔记的整理,写的比较潦草,如有遗漏错误和争议之处,欢迎大家的批评指正和讨论,谢谢。

                                       


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421745-1-1.html 上篇帖子: vSFTP(配置多用户文件共享) 下篇帖子: vsftpd虚拟用户认证配置(vsftpd+pam+mysql)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表