vsftpd是一款安全的文件共享软件:

特点:

1.C/S模型

    客户端   服务器

2.FTP采用双TCP连接方式

    ①控制连接使用TCP端口号21:用于在FTP客户端和FTP服务器之间传输FTP控制命令及            命令执行信息。控制连接在整个FTP会话期间一直保持打开

    ②数据连接使用TCP端口号20:用于传输数据,包括数据上传、下载、文件列表发送等。数            据传输结束后数据连接将终止粒度

wKioL1YBa3bwuLVMAACKChGUczA085.jpg

3.FTP采用两种数据传输方式

    ①主动方式  (服务端20端口连接客户端端口+1

    主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式,主要特点是:

        FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号

    当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输

    在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式

wKioL1YBa3bx3ZWOAAF6I5l8dlI558.jpg

    ②被动方式   //服务器角度

    被动方式也称为PASV方式,被动方式的主要特点是:

        FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端            口号并知知客户端,当需要传送数据时,客户端主动与服务器的临时端口号建立数据传                输通道,完成

wKiom1YBa3bym8VhAAGIVDYrogM910.jpg

数据传输

    在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式

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

使用匿名用户登陆:(注意必须填写用户名,不能为空)
wKiom1YBcmiBnsRFAAEDVJiyc3E145.jpg

使用系统用户登陆:发现系统用户默认登录到了自己的家目录,并且可以随意切换目录(不安全)

wKiom1YBdPHy08ZLAAGzmFfKnVk755.jpg

使用tcpdump -i lo -nn -X -vv tcp port 21抓包:发现密码时明文传输到(不安全)

wKiom1YBdPHjhj6mAADlJ2ONE14295.jpg

配置文件介绍:/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服务器

wKioL1YBf8CAu3sgAACelkUI4jA004.jpg

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最多并行几个登录会话


虚拟用户默认使用匿名用户的权限,在配置文件中使用匿名用户的配置条目控制虚拟用户