频道栏目
首页 > 资讯 > 网络协议 > 正文

FTP服务器:FTP协议、FTP协议的传输方式、Ftp 命令实例

18-05-30        来源:[db:作者]  
收藏   我要投稿

FTP

@ FTP协议

FTP(File Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC 机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。在 FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上载”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上载”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet 语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。TCP/IP 协议中,FTP 标准命令 TCP 端口号为 21,Port方式数据端口为 20。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过 ftp 协议对话,并且能访问Internet, 你可以用 ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。

@FTP协议的传输方式

FTP 的传输有两种方式:ASCII 传输模式和二进制数据传输模式。

1.ASCII传输方式:假定用户正在拷贝的文件包含的简单 ASCII码文本,如果在远程机器上运行的不是 UNIX,当文件传输时 ftp 通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉 ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。

2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到 Windows系统,在对方系统上,此文件不能执行。如果你在ASCII 方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII 字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

@Ftp 命令

1、FTP 服务器的登陆

匿名用户:FTP 口令:FTP

用户 :ANONYMOUS 口令:任何电子邮件

2、显示文件信息:DIR/IS

3、下载文件:GET 文件名 (下载到当前目录)

4、上传文件:PUT 文件名

5、多文件下载:MGET

6、多文件上传:MPUT

7、退出:BYE

8、帮助:HELP

@linux下的相关文件和服务

1、vsftpd包的安装

vsftpd-2.0.5-10.el5.386.rpm

2、vsftpd服务名称 vsftpd

3、相关文件

/etc/vsftpd/vsftpd.conf vsftpd 的主配置文件

/etc/vsftpd.user_list 用户登录配置文件

/etc/vsftpd.ftpusers 该文件中的用户绝对不能登录到主机

/etc/vsftpd.chroot_list 用户被限制其家目录,不允许向上级目录查看,默认情况下该文件并没有建立

/var/ftp 匿名ftp 账户的家目录

@vsftpd主配置文件的参数介绍

/etc/vsftpd/vsftpd.conf文件的相关参数如下:

anonymous_enable=YES 是否允许匿名ftp,如否则选择 NO

local_enable=YES 是否允许本地用户登录

local_umask=022 默认的umask 码

anon_upload_enable=YES 是否允许匿名ftp 用户访问

anon_upload_enable=YES 是否允许匿名上传文件

anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的权利

dirmessage_enable=YES 是否显示目录说明文件,默认是YES 但需要手工创建.message文件

xferlog_enable=YES 是否记录ftp 传输过程

connect_from_port_20=YES 是否确信端口传输来自20(ftp-data)

chown_username=username 是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成 root 属主

xferlog_file=/var/log/vsftpd.log ftp传输日志的路径和名字默认是/var/log/vsftpd.log

xferlog_std_format=YES 是否使用标准的ftp xferlog 模式

idle_session_timeout=600 设置默认的断开不活跃session 的时间

data_connection_timeout=120 设置数据传输超时时间

ascii_upload_enable=YES ascii_download_enable=YES 是否使用ascii 码方式上传和下载文件

ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息

配置匿名的ftp 服务器

@基本的匿名ftp 服务器

启动 vsftpd 服务即可使用 使用命令行和浏览器进行测试

@ 配置允许匿名用户上传的ftp 服务器

1、在匿名用户的主目录下,给默认的pub 目录添加写权限

2、编辑 ftp 的主配置文件,添加允许上传语句第27行和 31行分别定义允许匿名用户上传文件和上传目录

write_enable=YES

local_umask=022

anon_upload_enable=YES

anon_mkdir_write_enable=YES

3、重新启动服务

@配置匿名用户的完全权限

在用户可以上传的基础上,对匿名用户开放所有权限,如续传,删除等,然后重新启动服务即可。

anon_world_readable_only=NO

anon_other_write_enable=YES

@配置基于端口的匿名虚拟ftp 服务器

1、生成虚拟的ftp 服务器主配置文件

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/port.conf

2、编辑虚拟的ftp 主配置文件/etc/vsftpd/port.conf

vi /etc/vsftpd/port.conf

添加虚拟服务器的端口和匿名用户

listen_port=2121

ftp_username=ftpguest

3、创建虚拟ftp 服务器的匿名用户和登录的主目录

useradd -d /var/port ftpguest

4、重新启动vsftpd 服务

@配置本地用户的ftp 服务器

需要使用用户和密码来访问的ftp 服务器

1、编辑主配置文件/etc/vsftpd/vsftpd.conf,第97 行,锁定所有用户的主目录

chroot_local_user=YES

2、重新启动服务

对用户限制下载速度

1、编辑主配置文件

anon_max_rate=50000

local_max_rate=200000

单位为 byte/s

2、重新启动服务即可

Iptables防火墙

@防火墙

1、防火墙的定义

所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet 与Intranet 之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4 个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件(其中硬件防火墙用的较少,例如国

防部以及大型机房等地才用,因为它价格昂贵)。该计算机流入流出的所有网络通信均要经过此防火墙。

2、防火墙的功能

防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。

3、以设备划分防火墙的种类

1):软件防火墙

软件防火墙就是保护计算机的一套软件,装在计算机里面,以提供保护计算机的功能。如用 Linux主机架设一个防火墙

2):硬件防火墙

硬件防火墙主要是由厂商设计好的硬件,里面有自己的操作系统,以提供封包过滤机制,故性能较佳。

4、以技术划分防火墙

1):包过滤型

主要依据是网络中的分包传输技术。包过滤技术的优点是简单实用,实现成本较低

2):网络地址转换

将封包中的来源或者目的IP 进行更改,可以使私有网络连上互连网

3):代理性防火墙

可以代理客户端将需要的资料进行查找并返回给客户端,安全性较高,但是性能要求较高

4):监测型防火墙

可以对各个网络层进行主动的数据分析,安全性极高,但性能要求很高

5、Linux 下的防火墙软件

Linux 防火墙直接由内核进行处理,安全性高,不同的 Linux内核使用的防火墙机制 内核版本 使用的软件

2.0 ipfwadm

2.2 ipchains

2.4 与 2.6 iptables

@iptables

1、iptables介绍

iptables 是建立在 netfilter 架构基础上的一个包过滤管理工具。

用户通过 /sbin/iptables 命令来管理 iptables,和 route 命令相同,iptables 命令的效果在重新启

动以后就不再有效。

可以使用 /etc/rc.d/init.d/iptables save 将当前 iptables 规则写到 /etc/sysconfig/iptables 文

件中,那么每次开机时/etc/rc.d/init.d/iptables start 命令会使 /etc/sysconfig/iptables 中的规

则生效。

2、iptables防火墙框架图

这里写图片描述

3、表

iptables 是由几张表所组成,每张表又由几条链组成,每张表负责不同的封包处理机制,每条链负责不同的封包走向,具体采取的策略由链里的规则设定

filter 表: 用于过滤封包

Nat 表 : 用于做地址转换

mangle 表: 允许改变包的内容来进一步矫正包

4、链

INPUT 链: 存在于 filter 表,主要用于处理进入本机的封包

OUTPUT 链: 存在于 filter 表,主要用于处理离开本机的封包

FORWARD 链: 存在于 fileter 表,主要用于处理穿过本机的封包

PREROUTING链: 存在于 nat 表,主要用于修改目的地址(DNAT)

POSTROUTING链: 存在于 nat 表,主要用于修改来源地址(SNAT)

@ iptebles文件

1、防火墙配置保存文件/etc/sysconfig/iptables

2、防火墙配置保存命令service iptables save

3、防火墙的启动/停止/重启

service iptables start

service iptables stot

service iptables restart

@ iptables的配置

1、iptables的标准语法

iptables [-t table] 命令 [chain] [rules] [-j target]

table——指定表名

NAT 和一般的 mangle 用 -t 参数指定要操作哪个表。filter 是默认的表,如果没有 -t 参数,就默认对

filter 表操作。

命令——对链的操作命令

chain——链名

rules——规则

target——动作如何进行

example:

iptables -A INPUT -p icmp -j DROP

设置 INPUT 规则,将所有基于 icmp 协议的数据包全部丢弃

2、对链的操作

-L 列出当前的iptables 的规则

-vnL 列出所有iptables 相关规则的详细参数

-A 追加一条规则(默认添加道最后)

iptables -A INPUT -s 200.200.200.200 -j DROP

追加一条 INPUT 记录,将源目的地址为 200.200.200.200的数据包丢弃

-I 插入一条规则

iptables -I INPUT 1 -s 200.200.200.200 -j DROP

插入一条 INPUT 记录,将源目的地址为 200.200.200.200的数据包丢弃

-D 删除一条规则

iptables -D INPUT 1

iptables -D INPUT -s 200.200.200.200 -j DROP

-P 设置某条链的默认规则

iptables -P OUTPUT DROP

设置所有发送的数据包丢弃

-F 清空规则

iptables -F

清空所有 iptables 规则

3、操作命令

按网络接口匹配

-i eth0 匹配数据进入的网络端口

-o eth0 匹配数据流出的网络端口

按来源目的地址匹配

-s ip 匹配来源IP

-d ip 匹配目的IP

example:

iptables -A INPUT -i eth0 –s 200.200.200.200 –j DROP

在 INPUT链里追加一条规则,所有从 eth0 口进入的源地址为 200.200.200.200的数据包全部丢弃

按协议匹配

协议可以是TCP,UDP,ICMP,也可以不加

example:

iptables –A INPUT -p tcp -s 200.200.200.200 -j ACCEPT

在 INPUT链里追加一条规则,所有源地址为200.200.200.200的基于 tcp协议的数据包允许通过

按来源目的端口匹配

--sport 来源端口

--dport 目的端口

example:

iptables -A INPUT -p tcp -sport 21 -j DROP

在 INPUT链里追加一条规则,所有基于 TCP的源端口为 21号端口的数据包,全部丢弃。

动作处理

-j ACCEPT 允许封包通过而不拦截

-j DROP 不允许封包通过

指定碎片

在 TCP/IP通讯中,每个网络接口都有一个最大的传输单元(MTU),用来定义了通过数据包大小的最大范围,如果数据大于MTU 时,系统会将大数据包分割成多个小数据包来传输(我们把这些包称为IP碎片),接收方再对数据进行重组,来还原整个包。

在进行包过滤的时候,IP碎片会导致一个问题,第一个数据包会包含完整的包头信息,而后续的数据包

只有部分包头信息,当存在这样一条规则的时候

iptables -A FORWARD -p tcp -s 200.200.200.200/24 -d 200.200.200.1 –dport 80 -j ACCEPT

iptables -P FORWARD DROP

系统会把第一个以后的包过滤掉

我们可以添加一条规则来解决这个问题

iptables -A FORWARD -f -s 200.200.200.200/24 -d 200.200.200.1 -j ACCEPT

指定非在某些选项前加上!来表示非指定值

example:

-s -!200.200.200.1/24 代表除200.200.200.1 以外的IP地址

-p -!icmp 代表除了icmp 以外的协议。

@防火墙配置

重新启动 iptables 服务service iptables rest

清除规则iptables -F

改变默认规则策略

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

允许 ssh

iptables -A INPUT -p tcp -s 0/0 –-dport ssh -j ACCEPT

iptables -A OUTPUT -p tcp --sport ssh -j ACCEPT

允许 DN

iptables -A INPUT -p udp -s 0/0 –-dport 53 -j ACCEPT

iptables -A OUTPUT -p udp -d 0/0 –-sport 53 -j ACCEPT

S

允许 www服务

iptables -A INPUT -p tcp -s 0/0 –-dport 80 -j ACCEPT

iptables -A INPUT -p tcp -s 0/0 –-dport 443 -j ACCEPT

iptables -A OUTPUT -p tcp -d 0/0 –-sport 80 -j ACCEPT

iptables -A OUTPUT -p tcp -d 0/0 –-sport 443 -j ACCEPT

18.6 NAT 表配置

1、NAT 的定义

NAT 英文全称是 Network Address Translation,称是网络地址转换,它是一个IETF标准,允许一个机构

以一个地址出现在Internet 上。NAT将每个局域网节点的地址转换成一个 IP地址,反之亦然。它也可以应

用到防火墙技术里,把个别IP 地址隐藏起来不被外界发现,使外界无法直接访问内部网络设备,同时,

它还帮助网络可以超越地址的限制,合理地安排网络中的公有Internet 地址和私有 IP地址的使用。

2、NAT 的类型

静态 NAT(Static NAT)

静态 NAT设置起来最为简单和最容易实现的一种,内部网络中的每个主机都被永久映射成外部网络中的某

个合法的地址。

动态地址 NAT(Pooled NAT)

动态地址 NAT 是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。动态地址

NAT 只是转换 IP 地址,它为每一个内部的 IP 地址分配一个临时的外部IP 地址,主要应用于拨号,对于频

繁的远程联接也可以采用动态NAT。

网络地址端口转换NAPT(Port-Level NAT)

NAPT 是把内部地址映射到外部网络的一个 IP地址的不同端口上。

最熟悉的一种转换方式。NAPT 普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的 IP地址后

面。NAPT与动态地址 NAT 不同,它将内部连接映射到外部网络中的一个单独的 IP地址上,同时在该地址上

加上一个由NAT 设备选定的 TCP 端口号。

3、对于 POSTROUTING 的目标动作

-j SNAT –to IP1[-IP2] : [port1][-port2]

IP1-IP2,指定IP 地址范围

port1-port2,指定端口范围

例如:

iptables –t nat -A POSTROUTING -o eth0 -j SNAT –to 202.106.0.20

4、对于 PREROUTING 的目标动作

-j DNAT –to IP1[-IP2] : [port1][-port2]

IP1-IP2,指定IP 地址范围

port1-port2,指定端口范围

例如:

iptables –t nat -A POSTROUTING -d 202.106.0.20 -j DNAT –to 192.168.10.239

5、NAT+防火墙配置案例

这里写图片描述

打开 IP转发功能

eth0=192.168.1.1 eth1=200.200.200.1

echo 1 > /proc/sys/net/ipv4/ip_forward

配置默认规则策略

service iptables restart

iptables -F

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

配置企业内部上网,将内网的IP 地址伪装成200.200.200.1

iptables -t nat -A POSTROUTING -o eth0 -j SNAT –-to 200.200.200.1

做端口映射,将192.168.1.2:80 映射成公网200.200.200.1

iptables -t nat -A PREROUTING -p tcp -d 200.200.200.1 –-dport 80 -j DNAT --to

192.168.1.2:80

做端口映射,将192.168.1.2:443 映射成公网200.200.200.1

iptables -t nat -A PREROUTING -p tcp -d 200.200.200.1 --dport 443 -j DNAT --to

192.168.1.2.443

允许 ping

iptables -A INPUT -p icmp -s 0/0 -j ACCEPT

iptables -A OUTPUT -p icmp -d 0/0 -j ACCEPT

设置转发规则,允许外网访问内网的www 服务

iptables -A FORWARD -p tcp -s 0/0 -d 192.168.1.2 –-dport 80 -j ACCEPT

iptables -A FORWARD -p tcp -s 0/0 -d 192.168.1.2 –-dport 443 -j ACCEPT

保存配置

service iptables save

相关TAG标签
上一篇:Linux下mysql的C++ API接口遇到的依赖问题解决
下一篇:Oracle11g安装过程中遇到的权限不足问题的解决
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站