vsftpd是一款安全的文件共享软件:
特点:
1.C/S模型
客户端 服务器
2.FTP采用双TCP连接方式
①控制连接使用TCP端口号21:用于在FTP客户端和FTP服务器之间传输FTP控制命令及 命令执行信息。控制连接在整个FTP会话期间一直保持打开
②数据连接使用TCP端口号20:用于传输数据,包括数据上传、下载、文件列表发送等。数 据传输结束后数据连接将终止粒度
3.FTP采用两种数据传输方式
①主动方式 (服务端20端口连接客户端端口+1)
主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式,主要特点是:
FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号
当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输
在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式
②被动方式 //服务器角度
被动方式也称为PASV方式,被动方式的主要特点是:
FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端 口号并知知客户端,当需要传送数据时,客户端主动与服务器的临时端口号建立数据传 输通道,完成
数据传输
在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式
4.FTP有两种文件传输模式
ASCII模式
二进制模式:为防止乱码,普遍用二进制传输模式
5.其他特性:
除了安全、高速、稳定之外,vsftpd 还具有如下的功能:
支持基于IP 的虚拟FTP 服务器
支持虚拟用户
支持PAM 或xinetd/tcp_wrappers 的认证方式
支持两种运行方式:独立和Xinetd
支持每个虚拟用户具有独立的配置
支持带宽限制等
6.ftp的典型消息
在用于ftp客户程序与ftp服务器进行通信时,经常会看到一些由ftp服务器发送消息,这些消息是ftp协议所定义的。下面列出典型的ftp消息:
消息号
125:数据连接打开,传输开始
200:命令OK
226:数据传输完毕
331:用户名OK
425:不能打开数据连接
426:数据连接被关闭,传输被中断
452:错误写文件
500:语法错误,不可识别的命令
实验:安装yum install vsftpd
使用匿名用户登陆:(注意必须填写用户名,不能为空)
使用系统用户登陆:发现系统用户默认登录到了自己的家目录,并且可以随意切换目录(不安全)
使用tcpdump -i lo -nn -X -vv tcp port 21抓包:发现密码时明文传输到(不安全)
配置文件介绍:/etc/vsftpd/vsftpd.conf
anon_upload_enable=YES:是否允许匿名用户上传文件
anon_mkdir_write_enable=YES是否允许匿名用户创建目录
anon_other_write_enable=YES是否允许匿名用户对文件有写权限(可以删除)
旗语:
ftpd_banner=This server is very important,do not touch it 设置旗语---ftp登录时提示
banner_file=/var/vsftpd_banner_file将旗语定义在文件中
设置日志:传输文件时日志会记录在xfer.log中
xferlog_file=/var/log/xfer.log
xferlog_enable=YES
文件上传后自动修改文件属主属组
#chown_uploads=YES
#chown_username=whoever
安全选项:
设置空闲的用户会话的中断时间
例如下面的配置:
idle_session_timeout=600
将在用户会话空闲10 分钟后被中断。
设置空闲的数据连接的的中断时间
例如下面的配置:
data_connection_timeout=120
将在数据连接空闲2 分钟后被中断。
设置客户端空闲时的自动中断和激活连接的时间
例如下面的配置:
accept_timeout=60
connect_timeout=60
将使客户端空闲1 分钟后自动中断连接,并在中断1 分钟后自动激活连接。
禁锢用户在自己的家目录:
#chroot_local_user=YES禁锢所有系统用户
#chroot_list_enable=YES 启用禁锢用户列表
#chroot_list_file=/etc/vsftpd/chroot_list 在这个列表中定义需要被禁锢的目录
访问控制:
pam_service_name=vsftpd 使用pam控制,在/etc/pam.d/vsftpd下定义了pam规则,下面表示凡是在ftpusers文件中定义的用户都禁止访问ftp服务器
userlist优先级高于ftpusers文件,当userlist文件定义放弃控制权ftpusers文件才生效
userlist_enable=YES使userlist文件生效
userlist_file= /etc/vsftpd.user_list默认所有此文件中的用户都不能登录
userlist_deny=YES使用YES指user_list文件中的用户拒绝登陆,如果NO则仅允许user_list中用户登录
限速:注意是以k为单位
local_max_rate=50000
anon_max_rate=30000
pasv_min_port=50000
pasv_max_port=60000
限制:登录数
max_clients (总数限制)
max_per_ip (单IP最多并行几个登录会话)
虚拟用户默认使用匿名用户的权限,在配置文件中使用匿名用户的配置条目控制虚拟用户