一、FTP主动被动模式介绍
在此之前首先要了解什么是控制层面,什么是数据层面。控制层面是在数据传输之前所建立的连接,如TCP三次握手就属于控制层面,建立好连接后开始传输数据,届时就属于数据传输层面。
1、主动模式:客户端向服务器发起连接,随机生成一个大于1024的端口X,服务端用21号端口建立控制层面连接,建立好连接后即可执行上传下载命令。当需要传输数据时,客户端会再开启一个大于1024的端口Y并通过之前建立的控制层面连接将端口信息发送给服务端,届时服务端主动向客户端发起连接,数据层面的连接建立好,开始传输数据。
2、被动模式:客户端随机生成一个大于1024的端口与服务端21端口建立连接,建立好连接后即可执行上传下载命令。当需要传输数据时,客户端会通过之前建立好的控制层面通道向服务器请求数据层面连接,服务端收到后生成一个随机端口号Y,并通过之前建立好的通道将端口信息发送给客户端。客户端再随机生成一个端口号Z,主动向服务器的Y端口发起连接,数据层面的连接建立好,开始传输数据。
之所以有被动模式,是因为考虑到企业防火墙的限制,如果FTP服务器在防火墙后端,使用主动模式时服务端主动向客户端发起连接请求,一般策略都会设置成不允许untrust到trust,导致ftp无法建立连接,所以才有了被动模式。
二、配置FTP服务器
1、环境:CentOS 6.6 X64
2、安装步骤:
1) 使用vsftpd搭建 用yum安装
#yum -y install vsftpd
2)启动FTP服务并设置开机启动
service vsftpd start
chkconfig --add vsftpd
#让vsftpd成为系统服务,开机自动启动
chkconfig --level 2345 vsftpd on
# 把vsftpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
2)曾加FTP用户并设置密码,让其不能登录系统
useradd mingyongxing -s /sbin/nologin
passwd mingyongxing
3)通过修改主配置文件给用户设置权限
默认vsftp允许匿名用户登陆,默认登陆目录是:/var/ftp/pub 匿名用户只有下载的权限
默认普通用户登陆后在自己的家目录。 /home/$name
可以通过vsftp的主配置文件修改相应参数 如下
4)以下是vsftp配置文件的常用参数
vim /etc/vsftpd/vsftpd.conf //FTP的主配置文件
anonymous_enable=YES //是否允许匿名登陆
local_enable=YES //是否允许本地用户登录FTP服务器
write_enable=YES //本地用户登陆ftp是否有写入权限
local_umask=022 //文件或目录的掩码,类似于网络中的子网掩码,掩码越大权限越小
#022代表777减去022=755 :
7是由数组4 2 1加起来得到的,4代表可以读 2代表可以写 1代表可执行
755表示:属主:7 属组:5 others:5
anon_upload_enable=YES //是否允许匿名用户创建文件夹
anon_mkdir_write_enable=YES //启用欢迎信息
ftpd_banner=Welcome to blah FTP service. //设置欢迎消息
dirmessage_enable=YES //启用日志信息 日志在/var/log/vsftpd.log
chown_uploads=YES //是否允许改变属主 (上传一个文件后修改文件的属主)
chown_username=mingyongxing //改变属主为mingyongxing
(参数:“whoever”代表任何人,即上传的文件属于任何用户)
xferlog_file=/var/log/vsftpd.log //修改日志文件路径
userlist_enable=YES //开启用户限制登陆功能
userlist_deny=NO //设置是否允许userlist中的用户登陆ftp NO为仅允许user_list中的账户登陆 YES为拒绝user_list中的账户登陆 如果配置文件中没有写userlist_deny,但是开启了userlist_enable=YES的话,默认仅拒绝user_list中的账号。
chroot_list_enable=YES //是否允许用户切换目录 yes为仅允许在自己的目录不允许切换
chroot_list_file=/etc/vsftpd/chroot_list //不允许切换目录的用户列表文件 在文件中添加用户
5)配置文件的一些其他参数
/etc/vsftpd/vsftpd.conf
①限制并发和传输速率 设置成0均代表不限制
max_client=100 //限制100用户同时登陆ftp
max_per_ip=10 //设置同一个IP最大连接数
local_max_rate=500000 //设置本地用户传输速率为500KB/s 单位B/s
ano_max_rate=500000 //设置匿名用户传输速率为500KB/s 单位B/s
listen_port=4449 //修改默认监听端口号、
6)FTP的配置文件目录
/var/log/xferlog vsftpd的日志文件
/etc/rc.d/init.d/vsftpd 启动脚本
/etc/vsftpd vsftpd的配置文件存放的目录
/etc/vsftpd/ftpusers 禁止使用vsftpd的用户列表文件
/etc/vsftpd/user_list 禁止或允许使用vsftpd的用户列表文件
/etc/vsftpd/vsftpd.conf 主配置文件
附:FTP的状态码
用命令行或者ftp客户端登陆的时候,会提示一个状态码
参考文献:http://www.jb51.net/article/94223.htm