摘要
本文部分内容来源于网络,个人收集整理,请勿传播
vsftpd是UNIX类操作系统上运行的服务名称,它的名字代表“very secure FTP daemon”,安全性是其设计与开发的一个重要目标。它可运行在Linux、Solaris等系统中,支持很多其他的FTP 服务器不支持的特征:
- 非常高的安全性需求
- 带宽限制
- 良好的可伸缩性
- 创建虚拟用户的可能性
- 分配虚拟IP地址的可能性
由于时间关系,本文所有配置不做任何测试,所以难免有遗漏和错误。
基础
安装
1 | yum install vsftpd ftp -y |
启动服务
1 | service vsftpd start |
ftp工作模式
ftp采用两个端口控制
- 20端口用于数据传输.
- 21端口用于控制,或指建立TCP连接.
主动方式连接过程
1 | # C表示客户端 S表示服务器端 |
被动方式连接过程
1 | # C表示客户端 S表示服务器端 |
实例
主动模式的配置方法
1 | connect_from_port_20=YES |
被动模式的配置方法
1 | connect_from_port_20=NO |
区别
Vsftp主动模式和被动模式是可以共存的。
ftp port模式只要开启服务器的21和20端口,而ftp pasv需要开启服务器大于1024所有tcp端口和21端口。重网络安全的角度来看的话似乎ftp port模式更安全,而ftp pasv更不安全,那么为什么RFC要在ftp port基础再制定一个ftp pasv模式呢?其实RFC制定ftp pasv模式的主要目的是为了数据传输安全角度出发的,因为ftp port使用固定20端口进行传输数据,那么作为黑客很容使用sniffer等探嗅器抓取ftp数据,这样一来通过ftp port模式传输数据很容易被黑客窃取,因此使用pasv方式来架设ftp server是最安全绝佳方案。
结论:如果只是简单的为了文件共享,完全可以禁用pasv模式,解除开放大量端口的威胁,同时也为防火墙的设置带来便利。
主动模式和被动模式的区别在于,主动模式下,ftp采用的是20端口传送数据,而被动模式下,ftp采用的是大于1024的随机端口。所以被动模式下,必要关闭防火墙!
参数解析
连接选项
监听地址和控制端口
1 | # 定义主机在哪个IP 地址上监听FTP请求。即在哪个IP地址上提供FTP服务。 |
性能与负载控制
超时选项
1 | # 空闲用户会话的超时时间,若是超过这段时间没有数据的传送或是指令的输入,则会被迫断线。默认值是300s |
负载选项
1 | # 定义FTP服务器最大的兵法连接数。当超过此连接数时,服务器拒绝客户端连接。默认值为0,表示不限最大连接数。 |
用户选项
vsftpd的用户分为3类:匿名用户、本地用户(local user)及虚拟用户(guest)
匿名用户
1 | # 控制是否允许匿名用户登录 |
本地用户
1 | # 控制vsftpd所在的系统的用户是否可以登录vsftpd。 |
虚拟用户
1 | # 启动此功能将所有匿名登入者都视为guest |
安全
用户登录控制
1 | # Vsftpd禁止列在此文件中的用户登录FTP服务器。此机制是默认设置的。 |
目录访问控制
1 | # 锁定某些用户在自己的目录中,而不可以转到系统的其他目录。 |
显示配置
登录提示信息
1 | ftpd_banner=Welcome to blah FTP service. |
显示一个文件作为提示信息
1 | cat my_banner |
完整配置
1 | vim /etc/vsftpd/vsftpd.conf |
虚拟用户
添加用户
1 | 1.在account.txt中添加用户名和密码,一行用户名,一行密码 |
主配置文件
1 | cat /etc/pam.d/ftp |
单独说一下这个参数对权限的影响 virtual_use_local_privs
1 | # 虚拟用户和本地用户有相同的权限 |
虚拟用户配置文件
1 | ############test1############## |
ftp 命令控制
1 | ABOR,CWD,LIST,MDTM,MKD,NLST, |
几个简单的例子
只能上传。不能下载、删除、重命名
1 | cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,RETR,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST |
只能下载。不能上传、删除、重命名
1 | write_enable=NO |
只能上传、删除、重命名。不能下载
1 | download_enable=NO |
只能下载、删除、重命名。不能上传
1 | cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,RNFR,RNTO,RETR,DELE,SIZE,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST |
参数解析
1 | 以上是常用的一些参数,大家对照学习一下!下面是列也的全部参数,供大家参考! |
vsftpd服务器的配置实例
基于IP的虚拟FTP服务器配置
假设服务器有两个IP地址,192.168.1.199和192.168.1.200。vsftpd是建立在192.168.1.199上的。现在在192.168.1.200上再提供一个虚拟FTP服务器。
1 | # 创建虚拟FTP服务器根目录 |
###创建虚拟FTP服务器的配置文件
1 | # 复制原来的vsftpd.conf作为虚拟FTP服务器的配置文件,并修改相关参数 |
允许匿名用户上传文件
1 | Write_enable=YES |
启动虚拟FTP服务器
1 | /usr/sbin/vsftpd /etc/vsftpd/vsftpd2.comf |
ssl认证
1 | # 启用TLS/SSL |