1.FTP介绍:
FTP (File Transfer Protocol,文件传输协议)主要用来文件传输,尤其适用于大文件传输,提供上传下载功能
FTP官方网站:https://filezilla-project.org/
FTP服务器根据服务对象分为两种:一种Linux系统用户下控制的FTP服务器,另一种匿名FTP服务器
2.FTP工作模式
FTP采用C/S架构的服务,分为客户端和服务器端。使用TCP做为底层传输协议,使用标准端口20,21: 20端口作为数据端口,21端口作为指令端口
2.1主动FTP
- 客户端从任意一个非授权端口,即大于1024的端口N,连接到FTP服务器命令端口21,
- 然后客户端开始监听端口N+1,并发送FTP命令“PORT N+1”到FTP服务器
- 接着服务器再从自己的数据端口(20端口)连接到客户端指定的数据端口(N+1)
2.2被动FTP
在被动模式中,命令连接于数据连接都有客户端发起,这样解决了服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题
- 客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”
- 然后服务器返回命令"PORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接
- 客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接
- 最后服务器在给客户端的数据端口返回一个"ACK"响应。
3.FTP命令行
- open host[port]:建立指定ftp服务器连接,可指定连接端口
- quit:同bye,退出ftp会话
- cdup:进入远程主机目录的父目录
- close:中断与远程服务器的ftp会话(与open对应)
- mdelete[remote-file]:删除远程主机文件。
- mkdir: 在远程主机中建一目录
- get remote-file[local-file]: 将远程主机的文件remote-file传至本地硬盘的local-file
- put local-file[remote-file]:将本地文件local-file传送至远程主机
- mget remote-files:传输多个远程文件
- mput local-file:将多个文件传输至远程主机
- modtime file-name:显示远程主机文件的最后修改时间
- pwd:显示远程主机的当前工作目录
- ascii:使用ascii类型传输方式
- bin:使用二进制文件传输方式
- help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get
ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. pub 226 Directory send OK. ftp: 收到 8 字节,用时 0.00秒 2.00千字节/秒。 ftp> get pub /desktop 200 PORT command successful. Consider using PASV. 550 Failed to open file. ftp> pwd #ftp用户无权限 257 "/" ftp> mkdir 0331 550 Permission denied. ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. pub 226 Directory send OK. ftp: 收到 8 字节,用时 0.00秒 8000.00千字节/秒。
4.Linux下安装FTP
在Linux命令行执行ftp 显示没有此命令则进行安装:
yum install ftp -y
5.FTP环境搭建
5.1 安装VSFTPD
先查看是否安装vsftpd:rpm -qa |grep vsftpd
[root@H0f ~]# rpm -qa |grep vsftpd vsftpd-2.2.2-24.el6.x86_64
1. rpm -e vsftpd 进行卸载 2. yum install -y vsftpd 安装vsftpd
5.2 启动VSFTPD
[root@H0f ~]# chkconfig vsftpd on #加到开机自启动 [root@H0f Desktop]# /etc/init.d/vsftpd status #查看服务是否启动 vsftpd (pid 21318) is running... [root@H0f Desktop]# service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ]
5.3 SELinux设置
[root@H0f ~]# getenforce
Enforcing #强制执行
[root@H0f ~]# setenforce 0 #降低SELinux安全级别
[root@H0f ~]# getenforce #宽容模式
Permissive
5.4防火墙设置
1.允许所有FTP模式连接
iptables -A INPUT -p tcp --dport 21 -m state --state ESTABLISHED -j ACCEPT iptabels -A OUTPUT -p tcp --sport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
2.主动模式设置
iptabels -A INPUT -p tcp --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLESHED -j ACCEPT
3.被动模式设置
iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 1024:65535 --deport 1024:65535 -m state --state ESTABLESHED,RELATED -j ACCEPT