前面笔者写过一篇"FTP本地用户"随笔,那只是一个案例,并没有完整的写出来作用、配置文件解析和原理,今天笔者将发布"FTP服务器的原理以及虚拟用户的配置"随笔
FTP服务的原理
- FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文件传输协议,FTP协议是现今使用最为广泛的网络文件共享协议之一
- 现在也一直有在用着FTP协议来进行各种文件的传输,FTP为人们提供了一种可靠的方式在网络上进行文件的共享
- FTP是C/S架构的服务,拥有一个服务器端和一个客户端,FTP底层通过TCP协议来作为传输协议,所以FTP协议是一种可靠的文件传输方式
- FTP提供了两个端口号,20和21号端口,20号是数据接口,提供数据之间的传输,21号是命令接口,提供命令之间的传输
- FTP服务端与客户端连接一般有两种模式:主动模式和被动模式
† PORT(主动模式)
- FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上的就行),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口
- FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,进行发送数据
† PASV(被动模式)
- FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输
两种模式的区别和哪种比较适合
- 主动模式和被动模式的不同简单概述为:
† 主动模式传送数据时是"服务器"连接到"客户端"的端口
† 被动模式传送数据是“客户端"连接到"服务器"的端口
- 通常还是使用的是被动连接的模式,因为服务器端都有配置防火墙,而防火墙对于内网连接外网的端口一般是放行的,而外网来连接内网的端口则一般是有限制的,所以这时如果使用主动模式连接的话,端口可能被防火墙拦截,导致无法连接FTP服务
- 如果要将内外的FTP通过NAT技术共享至外网,那么肯定需要选择被动连接才可行,可安全!
FTP服务程序"Vsftpd"的安装
- vsftpd是Very Secure FTP的简写形式,从名字可以看出,提供了非常安全的FTP服务!
- 这款软件是基于GPL开发的,被设计为Linux平台下稳定、快速、安全的FTP软件,它还支持IPv6以及SSL加密
- 它支持很多其他的 FTP 服务器不支持的特征:
† 非常高的安全性需求
† 带宽限制
† 创建虚拟用户
- 在Linux Cnetos 系统中默认是没有安装Ftp服务程序"Vsftpd"的、如果要想使用vsftpd实现FTP数据共享,首先需要安装vsftpd软件,该软件已经在Centos光盘中(RPM格式)备配,如果没有光盘,也可以使用在线方式安装或者部署
- 如果是本地安装,那么将光盘挂载至/mnt目录,配置本地yum源最后通过命令:yum -y install vsftpd 进行安装
[[email protected] ~]# mount /dev/cdrom /mnt/ //挂载到/mnt目录下 mount: block device /dev/sr0 is write-protected, mounting read-only [[email protected] ~]# cd /etc/yum.repos.d/ //进入yum源定义文件目录 [[email protected] yum.repos.d]# vim CentOS-Media.repo //配置Yum源(扩展名是.repo) [c6-media] //[]中是Yum源唯一的ID,名称可为任意字符串 name=CentOS-$releasever - Media //指定Yum源的名称,名称可为任意字符串 baseurl=file:///mnt //指定Yum源的URL路径,这里是我的光盘挂载路径 # file:///media/cdrom/ # file:///media/cdrecorder/ gpgcheck=0 //安装软件是否检测签名“0为禁用,1为激活” enabled=1 //是否激活Yum源“0为禁用,1为激活” gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 //检测签名的密钥文件 :wq! //保存并退出 [[email protected] yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak //移动该文件到当前目录并加上.bak,如果不注释掉这个默认会线上安装
[[email protected] ~]# yum -y install vsftpd
- 如果是在线安装,首先保证Linux操作系统可以访问外网并且可以解析域名
[[email protected] ~]# ping -c 2 www.baidu.com PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data. 64 bytes from 61.135.169.121: icmp_seq=1 ttl=52 time=39.5 ms 64 bytes from 61.135.169.121: icmp_seq=2 ttl=52 time=39.9 ms
[[email protected] ~]# yum -y install vsftpd [[email protected] ~]# chkconfig vsftpd on //开机启动 [[email protected] ~]# service vsftpd start //启动服务 [[email protected] ~]# netstat -ntulp | grep :21 //查看是否启动成功并监听 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 4117/vsftpd
- 无论是Yum本地安装,还是通过在线Yum安装!都是安装的RPM格式的软件,该软件的主程序是/usr/sbin/vsftpd 以下是vsftpd相关的核心文件目录列表说明
[[email protected] ~]# rpm -ql vsftpd //查看vsftpd的安装目录 /etc/logrotate.d/vsftpd //日志轮转备份文件 /etc/pam.d/vsftpd //基于PAM的vsftpd验证配置文件 /etc/rc.d/init.d/vsftpd //vsftpd的启动文件,可使用server调用 /etc/vsftpd //vsftpd的主目录 /etc/vsftpd/ftpusers //默认的vsftpd的黑名单 /etc/vsftpd/user_list //可通过主配置文件来设置该文件为黑名单或白名单 /etc/vsftpd/vsftpd.conf //vsftpd的主配置文件 /usr/sbin/vsftpd //vsftpd主程序 /var/ftp //默认vsftpd共享目录
FTP服务程序"Vsftpd"的配置文件解析
- 全局设置
listen=YES //是否监听端口,独立运行守护进程 listen_port=21 //监听入站ftp请求的端口号 write_enable=YES //是否允许写操作,全局开关 download_enable=YES //如果设置为NO,则拒绝所有的下载请求 dirmessage_enable=YES //用户进入目录是否显示消息 //在登陆的目录下创建一个.message文件写入登陆提示信息 xferlog_enable=YES //是否开启xferlog日志功能 xferlog_std_format=YES //xferlog日志格式 connect_from_port_20=YES //使用主动连接,启用20端口 pasv_enable=YES //是否启用被动连接 pasv_max_port=5000 //被动连接最大端口号 pasv_min_port=6000 //被动连接最小端口号 max_clients=1000 //最大可允许1000个客户端连接,0代表无限制 max_per_ip=0 //每个客户端的最大连接限制,0代表无限制 tcp_wrappers=YES //是否启用tcp_wrappers guest_enable=YES //如果为YES 则所有的非匿名登录都映射为guest_username指定账户 guest_username=ftp //设定来宾用户 user_config_dir/etc/vsftpd/conf //指定目录,在该目录下可以为用户设置独立的配置文件选项 dual_log_enable=NO //是否启用双日志功能,生存两个日志文件
- 本地用户设置
local_enable=YES //是否启用本地账户功能 local_max_rate=500000 //FTP服务器的匿名用户最大传输速率 B/s,0为无限制 local_umask=077 //本地账户权限掩码 chroot_local_user=YES //为YES时在 chroot_list中不给用户切换到上级目录,其他都给与切换 chroot_list_enable=NO //为YES时 在 chroot_list中给用户切换到上级目录,其他的不允许 //当这两个都为YES时 chroot_list_enable 优先 chroot_list_file=/etc/vsftpd/chroot_list //chroot_list的文件目标 userlist_enable=YES //是否启用userlist用户列表 userlist_deny=YES //是否禁用userlist文件中的账户访问ftp local_root=/ftp/common //本地账户访问的FTP根路径
- 匿名用户设置
anonymous_enable=YES //是否允许匿名用户登录 anon_mkdir_writ_enable=YES //是否允许匿名账户创建目录,默认禁止 anon_other_writ_enable=YES //是否允许匿名账户进行所有其他写操作 anon_umask=077 //匿名上传权限掩码 anon_root=/var/ftp //匿名默认登陆的目录 anon_upload_enable=YES //是否允许匿名用户上传文件,则开启全局write_enable=YES chown_uploads=YES //是否允许匿名用户改变上传文件的属主 chown_usernamed=xxx //属主改为xxx"与上面配套使用" no_anon_password=YES //若是启动这项功能,则使用匿名登入时,不会询问密码 anon_max_rate=200000 //FTP服务器的匿名用户最大传输速率 B/s,0为无限制
- vsfptd默认是不给匿名文件给予W权限的,所以想要匿名用户上传文件,就需要在匿名文件下创建一个新的文件给予777权限就可以了
- 点击下载主配置文件解析
FTP用户和文件共享
- vsftpd是通过使用用户来作为管理单位的,想要访问某个ftp的共享文件,必须要以某一特定的用户身份登陆,我们可以配置一下几种类型的用户
时间: 2024-11-03 03:26:00