概述
FTP(File Transfer Protocol)中文称为“文件传输协议”。用于Internet上的控制文件的双向传输。
工作原理
一、主动模式:
1、客户端通过用户名和密码登录服务器端,登录的是21端口(服务器端主动开启的)。
2、服务器端通过21端口接收到客户端的访问,验证用户名和密码。
3、 登陆成功,客户端会随机开启一个1024以上的端口,在端口上会传递一个叫port的命令,通过命令告知服务器,打开端口,向客户端传递数据。(顺便的会将随机端口号告知服务器)
4、服务器接收之后查看端口为port,服务器端就会开启本机的20端口。然后向客户端的随机端口发送数据。
二、被动模式:
1、客户端通过用户名和密码登录服务器端,登录的是21端口。
2、 登陆成功,客户端会开启PASV命令,通过PASV,告知服务器端,采用被动模式连接。
3、服务器端会开启一个1024以上随机端口。
4、服务器端会把随机端口的号发送给客户端,客户端通过自己本机的随机端口向服务器端传递数据。
主被动之间比较
主动模式中:管理员只能控制服务器端,不能控制客户端,客户端不在管理员的控制范围,对方的防火墙有可能造成连接中断。
被动模式中:虽然开启的是随机端口,但是服务器端在管理员的控制当中,只要把随机端口指定清楚,在服务器的防火墙通过这些访问,从而不会造成ftp连接中断。
问题:被动模式中随机开启的端口范围太多!!!
解决:服务器端可以修改配置文件将随机开打的端口压成10个或100个,在服务器端防火墙中把这针对100个随机端口的访问打开,ftp就可以正常访问。
关于端口
FTP连接端口(主动模式中)
控制连接:TCP 21,用于发送FTP命令信息
数据连接:TCP 20,用于上传、下载数据
FTP访问方式
1、匿名用户:anonymous或ftp
2、本地用户:使用Linux系统用户和密码
3、虚拟用户:管理员自定义的模拟用户
实验环境
- 系统环境:centos6.5、windows7
- Server端IP地址:192.168.1.77(Linux)
- Client端IP地址:192.168.1.10(windows7)
- yum挂载目录:/mnt/sr0
- 使用的rpm包:vsftpd-2.2.2-11.el6_4.1.x86_64.rpm (主包)
搭建步骤
一、使用匿名用户方式进行访问
1、关闭iptables以及selinux
[[email protected] ~]# chkconfig iptables off
[[email protected] ~]# vim /etc/sysconfig/selinux
2、Server端安装Vsftp服务rpm包
[[email protected] ~]# cd /mnt/sr0/Packages/
[[email protected] Packages]# rpm -ivh vsftpd-2.2.2-11.el6_4.1.x86_64.rpm
3、修改配置文件
[[email protected] ~]# cd /etc/vsftpd/
[[email protected] vsftpd]# vim vsftpd.conf
4、修改默认上传目录权限
[[email protected] ~]# chmod 777 /var/ftp/pub/ #一定要注意!!!不要对/var/ftp设置目录权限,/var/ftp是ftp服务器站点,如果权限过大,意味着可以将整个站点进行删除,登录就会报错。此时系统专门准备pub目录进行权限设置。
5、上传目录写入测试文件
[[email protected] ~]# echo "this is testFile" > /var/ftp/pub/test.txt
6、虚拟机访问ftp实现下载
7、虚拟机访问ftp实现上传
8、查看上传文件
[[email protected] ~]# cd /var/ftp/pub/
[[email protected] pub]# ll
二、使用本地用户方式进行访问_将用户禁锢在指定目录中
1、修改配置文件
[[email protected] ~]# cd /etc/vsftpd/
[[email protected] vsftpd]# vim vsftpd.conf
2、添加本地测试用户
[[email protected] ~]# useradd zhangsan
[[email protected] ~]# passwd zhangsan
[[email protected] ~]# useradd lisi
[[email protected] ~]# passwd lisi
3、修改指定上传目录权限
[[email protected] ~]# chmod 777 /var/ftp/pub/ #之前已经改过了,但是还是要加深一下印象
4、用户访问
5、查看上传文件
[[email protected] ~]# cd /var/ftp/pub/
[[email protected] pub]# ll
6、使用dos登录查看用户是否随意切户目录
三、使用本地用户方式进行访问_启用黑名单
1、修改配置文件
[[email protected] ~]# cd /etc/vsftpd/
[[email protected] vsftpd]# vim vsftpd.conf
2、修改用户控制列表文件
[[email protected] ~]# cd /etc/vsftpd/
[[email protected] vsftpd]# echo "zhangsan" >> user_list #将zhangsan用户添加至黑名单中
[[email protected] vsftpd]# cat user_list
[[email protected] ~]# /etc/init.d/vsftpd restart #重启服务
3、访问测试
四、使用虚拟用户方式进行访问
1、添加虚拟用户口令文件
[[email protected] ~]# vim /etc/vsftpd/vuser.txt #创建虚拟用户口令文件。可以叫任何名字,也可以放在任何地方。
2、生成虚拟用户口令认证文件
[[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
#将文本文档转变为认证的数据库(通过用户名、密码文件生成一个数据库)
-T:转换;
-t:指定哈希算法;
-f:指定文件,生成 /etc/vsftpd/vuser.db数据文件。注意vuser.db是二进制文件。
3、编辑vsftpd的PAM认证文件
[[email protected] ~]# vim /etc/pam.d/vsftpd.vu #新建一个针对虚拟用户pmd认证文件
4、建立本地映射用户并设置宿主目录权限
[[email protected] ~]# useradd -d /home/vfproot -s /sbin/nologin vuser #此用户只做本地用户对虚拟的映射
[[email protected] ~]# chmod 755 /home/vfproot/
5、修改配置文件
[[email protected] ~]# cd /etc/vsftpd/
[[email protected] vsftpd]# vim vsftpd.conf
6、重启vsftpd服务,并测试
[[email protected] ~]# /etc/init.d/vsftpd restart
7、查看上传文件
[[email protected] ~]# cd /home/vfproot/
[[email protected] vfproot]# ll
五、使用虚拟用户方式进行访问_为每一个用户进行配置
1、修改配置文件
[[email protected] ~]# cd /etc/vsftpd/
[[email protected] vsftpd]# vim vsftpd.conf
2、手工创建目录
[[email protected] ~]# mkdir /etc/vsftpd/vusers_dir
3、为"罗三炮"用户建立配置文件
[[email protected] ~]# cd /etc/vsftpd/vusers_dir/
[[email protected] vusers_dir]# vim luosanpao #为"罗三炮"创建配置文件。注意!!!!必须要创建同名的配置文件
4、创建上传目录
[[email protected] ~]# mkdir /tmp/vluosanpao
[[email protected] ~]# chown vuser:vuser /tmp/vluosanpao/ #修改所有者、所属组
5、重启并测试
[[email protected] ~]# /etc/init.d/vsftpd restart
[[email protected] ~]# cd /tmp/vluosanpao/
[[email protected] vluosanpao]# ll
6、使用"展昭"虚拟用户进行测试
原文地址:http://blog.51cto.com/11905606/2140599