ftp服务器:

1 介绍:

FTP (File transfer protocol) 是相当古老的传输协议之一,他最主要的功能是在服务器与客户端之间进行档案的传输。 这个古老的协议使用的是明码传输方式。 不支持udp, FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口。

特点:

不同等级的用户身份:user, guest, anonymous, anonymous匿名登录用来分享数据

命令记录与登录文件记录:FTP 可以利用系统的 syslogd 来进行数据的纪录, /var/log/xferlog 日志记录文件

限制用户活动的目录: (change root, 简称 chroot), 包括一系列配置参数

端口:

使用TCP封包协议, 分为主动式和被动式两种方式

主动模式(port方式):

FTP默认模式,客户端主动告知服务器20端口,本地客户端是数据传输是随机端口(一般为1024以上的一个随机端口),服务器通过20端口向客户端这个端口建立链接,传输数据。

主动方式的FTP工作流程:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“portN+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。

针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:

1)任何大于1024的端口到FTP服务器的21端口达成联机,进行三次握手,然后客户端便透过联机对FTP服务器下达指令(上传, 下载, 查询等)。(客户端初始化的连接)客户端随机启动一个端口,通过第一个联机通知服务端(接收数据端口和命令), 并等待FETP服务器的联机。

2)FTP服务器的20端口到大于1024的端口。服务端主动向客户端联机, 通过自己的20端口向客户端数据端口联机, 也是经过三次握手 (服务器端初始化数据连接到客户端的数据端口)

3)大于1024端口到FTP服务器的20端口。 客户端的数据端口响应握手(客户端发送ACK响应到服务器的数据端口)

被动模式(pasv方式):

因考虑到网络中存在的NAT路由器(防火墙NAT功能)的时候,主动模式就无法建立数据通道。被动模式可以解决客户端在NAT环境内的情况,数据通道建立。

FTP被动模式的连接方式有效解决了服务器发起到客户的连接问题,这种方式由叫做PASV,当客户端通知服务器它处于被动模式时才启用。

在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N>1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P>1024),并发送PORTP命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1)从任何大于1024的端口到服务器的21端口。 命令联机通道, 和主动式一样, 三次交握建立TCP连接, 不同的是提交PASV命令。(客户端初始化的连接)

2)服务器的21端口到任何大于1024的端口, 服务器透过命令联机,以通知客户端已开启的数据监听端口(服务器响应到客户端的控制端口的连接)

3)从任何大于1024端口到服务器的大于1024端口。 客户端主动向服务端建立数据联机(客户端初始化数据连接到服务器指定的任意端口)

4)服务器的大于1024端口到远程的大于1024的端口。 服务端回应三次交握, 建立第二个联机用于数据传输(服务器发送ACK响应和数据到客户端的数据端口)

主动FTP:

命令连接:客户端>1023端口 ------> 服务器 21端口

数据连接:客户端>1023端口

被动FTP:

命令连接:客户端>1023端口 ------> 服务器 21端口

数据连接:客户端>1023端口 ------> 服务器>1023端口

主动与被动FTP优缺点:

主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。

被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

随着WWW的广泛流行,许多人习惯用web浏览器作为FTP客户端。大多数浏览器只在访问ftp://这样的URL时才支持被动模式。这到底是好还是坏取决于服务器和防火墙的配置。

被动式 FTP 数据信道的联机方向是由客户端向服务器端联机,在 NAT 内部的客户端主机就可以顺利的连接上 FTP Server了

vsftpd vs profited

vsftpd(Very Secure FTP Daemon)配置部署:

安装

# 检查是否安装

rpm -qa | grep vsftpd

yum install vsftpd

yumdownloader vsftpd

rpm2cpio ctags-5.8-2.el6.x86_64.rpm |cpio -idvm

yum需要有root权限, 非root用户可以选择rpm或者源码编译

部署:

chkconfig --list

chkconfig vsftpd on

启动:

service vsftpd start

或者

/etc/init.d/vsftpd restart

ftp原理配置参数

/etc/vsftpd/vsftpd.conf

配置文件, man 5 vsftpd.conf 查看说明

/etc/pam.d/vsftpd

这个是 vsftpd 使用 PAM 模块时的相关配置文件。主要用来作为身份认证之用,还有一些用户身份的抵挡功能, 也是透过这个档案来达成的

/etc/vsftpd/ftpusers (这个我用yum安装时给放到 /etc/ftpusers了)

与上一个档案有关系,也就是 PAM 模块 (/etc/pam.d/vsftpd) 所指定的那个无法登入的用户配置文件啊! 这个档案的设定很简单,你只要将『不想让他登入 FTP 的账号』写入这个档案即可。一行一个账号,看起来像这样:

[root@www ~]# cat /etc/vsftpd/ftpusers

root

bin

daemon

瞧见没有?绝大部分的系统账号都在这个档案内喔,也就是说,系统账号默认是没有办法使用 vsftpd 的啦! 如果你还想要让某些使用者无法登入,写在这里是最快的!

/etc/vsftpd/user_list(自己创建)

这个档案是否能够生效与 vsftpd.conf 内的两个参数有关,分别是『 userlist_enable, userlist_deny 』。 如果说 /etc/vsftpd/ftpusers 是 PAM 模块的抵挡设定项目,那么这个 /etc/vsftpd/user_list 则是 vsftpd 自定义的抵挡项目。事实上这个档案与 /etc/vsftpd/ftpusers 几乎一模一样, 在预设的情况下,你可以将不希望可登入 vsftpd 的账号写入这里。不过这个档案的功能会依据 vsftpd.conf 配置文件内的 userlist_deny={YES/NO} 而不同,这得要特别留意喔!

/etc/vsftpd/chroot_list (自己创建)

这个档案预设是不存在的,所以你必须要手动自行建立。这个档案的主要功能是可以将某些账号的使用者 chroot 在他们的家目录下!但这个档案要生效与 vsftpd.conf 内的『 chroot_list_enable, chroot_list_file 』两个参数有关。 如果你想要将某些实体用户限制在他们的家目录下而不许到其他目录去,可以启动这个设定项目喔!

/usr/sbin/vsftpd

这就是 vsftpd 的主要执行档咯!不要怀疑, vsftpd 只有这一个执行档而已啊!

/var/ftp/

这个是 vsftpd 的预设匿名者登入的根目录喔!其实与 ftp 这个账号的家目录有关啦!vim /etc/passwd 中设置查看

sftpd 启动的模式

vsftpd 可以使用 stand alone(listen=YES) 或 super daemon(listen=NO)的方式来启动,我们 CentOS 预设是以 stand alone来启动的。 那什么时候应该选择 stand alone 或者是 super daemon 呢?如果你的 ftp 服务器是提供给整个因特网来进行大量下载的任务,例如各大专院校的 FTP 服务器,那建议你使用 stand alone 的方式, 服务的速度上会比较好。如果仅是提供给内部人员使用的 FTP 服务器,那使用 super daemon 来管理即可啊。

利用 CentOS 提供的 script 来启动 vsftpd (stand alone)

其实 CentOS 不用作任何设定就能够启动 vsftpd 啰!是这样启动的啦:

[root@www ~]# /etc/init.d/vsftpd start

[root@www ~]# netstat -tulnp| grep 21

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 11689/vsftpd

看到啰,是由 vsftpd 所启动的呢!

自行设定以 super daemon 来启动 (有必要再进行,不用实作)

如果你的 FTP 是很少被使用的,那么利用 super daemon 来管理不失为一个好主意。 不过若你想要使用 super daemon 管理的话,那就得要自行修改一下配置文件了。其实也不难啦,你应该要这样处理的:

[root@www ~]# vim /etc/vsftpd/vsftpd.conf

**找到 listen=YES 这一行:大约在 109 行左右啦,并将它改成:listen=NO **

接下来修改一下 super daemon 的配置文件,底下这个档案你必须要自行建立的,原本是不存在的喔:

[root@www ~]# yum install xinetd <==假设 xinetd 没有安装时

[root@www ~]# vim /etc/xinetd.d/vsftpd

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/sbin/vsftpd

log_on_success += DURATION USERID

log_on_failure += USERID

nice = 10

disable = no

}

然后尝试启动看看呢:

[root@www ~]# /etc/init.d/vsftpd stop

[root@www ~]# /etc/init.d/xinetd restart

[root@www ~]# netstat -tulnp| grep 21

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 32274/xinetd

有趣吧!两者启动的方式可不一样啊!管理的方式就会差很多的呦!不管你要使用哪种启动的方式,切记不要两者同时启动,否则会发生错误的!你应该使用 chkconfig –list 检查一下这两种启动的方式,然后依据你的需求来决定用哪一种方式启动。鸟哥底下的设定都会以 stand alone 这个 CentOS 默认的启动模式来处理,所以赶紧将刚刚的动作给他改回来喔!

**所以说, 如果采用stand alone模式, 可以 service xinetd close 关闭掉 **

vsftpd.conf 参数解释

example:

# cat /etc/vsftpd/vsftpd.conf | grep -E -v '^$|#'

anonymous_enable=YES # 允许匿名登录, 默认YES

local_enable=YES # 这个设定值必须要为 YES 时,在 /etc/passwd 内的账号才能以实体用户的方式登入我们的 vsftpd 服务器喔!

write_enable=YES # 如果你允许用户上传数据时,就要启动这个设定值

local_umask=022 # 建立新目录 (755) 与档案 (644) 的权限

dirmessage_enable=YES # 若目录下有 .message 则会显示该档案的内容

xferlog_enable=YES # 当设定为 YES 时,使用者上传与下载文件都会被纪录起来。记录的档案与下一个设定项目有关:xferlog_file 默认/var/log/xferlog

connect_from_port_20=YES

xferlog_std_format=YES # 是否设定为 wu ftp 相同的登录档格式?预设为 NO ,因为登录档会比较容易读! 不过,如果你有使用 wu ftp 登录文件的分析软件,这里才需要设定为 YES

pam_service_name=vsftpd # 这个是 pam 模块的名称,我们放置在 /etc/pam.d/vsftpd 即是这个咚咚!

userlist_enable=YES

# 是否藉助 vsftpd 的抵挡机制来处理某些不受欢迎的账号,与底下的参数设定有关: userlist_deny, userlist_file

listen=YES # 若设定为 YES 表示 vsftpd 是以 standalone 的方式来启动的!预设是 NO

tcp_wrappers=YES # 当然我们都习惯支持 TCP Wrappers 的啦!所以设定为 YES 吧!

pasv_enable=YES # 支持数据流的被动式联机模式(passive mode),一定要设定为 YES 的啦!

pasv_min_port=22222

pasv_max_port=22225

# 上面两个是与 passive mode 使用的 port number 有关,如果你想要使用 65400 到 65410 这 11 个 port 来进行被动式联机模式的连接,可以这样设定 pasv_max_port=65410 以及 pasv_min_port=65400。 如果是 0 的话,表示随机取用而不限制。

chroot_local_user=NO

# 在预设的情况下,是否要将使用者限制在自己的家目录之内(chroot)?如果是 YES 代表用户默认就会被 chroot,如果是 NO, 则预设是没有 chroot。不过,实际还是需要chroot_list_enable, chroot_list_file两个参数互相参考才行。为了安全性,这里应该要设定成 YES 才好。

use_localtime=YES # 是否使用本地时间?vsftpd 预设使用 GMT 时间(格林威治),所以预设的 FTP 内的档案日期会比台湾晚 8 小时,建议修改设定为 YES 吧!

ftp服务器的安装原理,ftp原理及配置笔记相关推荐

  1. Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...

    Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1] 安装并配置Vsftpd. [root@server ~]# yu ...

  2. FTP服务器的安装和配置

    FTP服务器的安装和配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本来是想出一个源码安装ftp的教程,但是想想还是算了,如果你自学python有个10天的话你自己就能写一个f ...

  3. ubuntu11.04下apache tftp以及ftp服务器的安装和基本配置

    今天笔记本上的ubuntu系统出了问题,重装了系统,也把基本的服务器 apache tftp ftp都再做了一遍,也算是又复习了一遍,以前是做好了能用就算了,今天做完了总结一下,省得下次还会遇到麻烦. ...

  4. FTP服务器vsftpd安装架设

    yum install vsftpd 2.启动/重启/关闭vsftpd服务器 [root@localhost ftp]# /sbin/service vsftpd restart Shutting d ...

  5. linux计算服务器配置,Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...

    Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1]安装并配置Vsftpd. [root@server ~]# yum ...

  6. Ubuntu Server搭建FTP服务器(2) --本地用户FTP服务器架设

    Ubuntu Server搭建FTP服务器(2) --本地用户FTP服务器架设 参考:ubuntu中文wiki百科,网址:wiki.ubuntu.org.cn 环境:Ubuntu 9.04 Serve ...

  7. win7系统ftp服务器密码修改,win7 ftp服务器密码

    win7 ftp服务器密码 内容精选 换一换 本章主要介绍了如何使用AMH搭建网站.该指导具体操作以搭建DEDECMS系统为例.如果需要用IP访问,将IP地址填在域名栏里即可添加虚拟主机01本示例上传 ...

  8. iphone文件访问ftp服务器,ipad ftp服务器 iPhone/iPad访问FTP服务器设置步骤

    ipad ftp服务器 iPhone/iPad访问FTP服务器设置步骤 2013-02-27 15:35:39 脚本之家 有时候出门在外需要用到电脑中的文件,但是却没有携带电脑或者U盘,那么该怎么办呢 ...

  9. ftp服务器怎么用,ftp服务器怎么用,详细教程

    ftp服务器是什么,FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中 ...

  10. ftp服务器防火墙配置文件,H3C SecPath系列防火墙 配置指导(V7)(E9524_E9333)-5W301_基础配置指导_FTP和TFTP配置-新华三集团-H3C...

    1.1  FTP简介 FTP(File Transfer Protocol,文件传输协议)用于在FTP服务器和FTP客户端之间传输文件,是IP网络上传输文件的通用协议. FTP协议使用TCP端口20和 ...

最新文章

  1. Qt利用avilib实现录屏功能_利用 dogtail 快速进行 GUI 自动化测试
  2. C2146和C4430错误:循环引用错误
  3. 数据可视化【二】HTML+CSS+SVG+D3
  4. jquery每次动态加载dom,绑定事件会多一次,
  5. 比亚迪高端车正驶入“囧途“?
  6. 用python编写一个汉诺塔的移动函数_关于python递归函数实现汉诺塔
  7. K8S实战之部署java应用
  8. .NET中异常类(Exception)
  9. 20200203_knn分类算法
  10. exception内置对象
  11. 个人对回调函数的理解(personal understanding of callback function)
  12. python35安装教程_【邢不行量化小讲堂35-python量化入门】建议收藏|Windows下安装TA-Lib终极教程(下)...
  13. java编写自动化脚本生成apk_批处理脚本实现android应用程序自动化测试
  14. kuka机器人码垛编程网盘_KUKA机器人码垛程序怎么写(案例)
  15. 电影《黑客帝国》的真正含义,人类进化的终结吗?
  16. Laravel 6 结合网易/阿里邮箱基本邮件发送功能使用
  17. 使用这5款模拟器访问备选操作系统
  18. 这些数据获取方式,一般人不知道
  19. 用MATLAB求解拟合公式系数和拟合优度
  20. 互联网公司部门鄙视链

热门文章

  1. jquery 操作iframe的几种方法总结
  2. create Bean Data Sources
  3. Linux系统重启pxe服务,Linux pxe服务
  4. debian 升级linux内核,debian的成功升级内核
  5. qcom高速串口调试
  6. 云资讯 | 湖南创业者的福音来了 百度创新中心落户长沙
  7. java坦克大战的总结_坦克大战总结(估计是马士兵的坦克大战) | 学步园
  8. Google Earth Engine(GEE)——FeatureCollection 列的统计信息(人口统计分析案例)
  9. 中中的背包(01背包,完全背包,二进制优化时间复杂度)
  10. CSS中的列表样式与表格样式