您的位置:首页 > 编程语言 > PHP开发

FTP服务搭建

2017-08-02 10:14 281 查看
一、TFTP

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。

特点: TFTP不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,没有列出目录的功能,也不能对用户进行身份鉴别,它传输8位数据。

TFTP可用于UDP环境;比如当需要将程序或者文件同时向许多机器下载时就往往需要使用到TFTP协议。

TFTP代码所占的内存较小,这对于较小的计算机或者某些特殊用途的设备来说是很重要的,这些设备不需要硬盘,只需要固化了TFTP、UDP和IP的小容 量只读存储器即可。当电源接通后,设备执行只读存储器中的代码,在网络上广播一个TFTP请求。网络上的TFTP服务器就发送响应,其中包括可执行二进制 程序。设备收到此文件后将其放入内存,然后开始运行程序。这种方式增加了灵活性,也减少了开销。

# yum install xinetd --安装托管服务

# yum install tftp* --安装tftp服务器

# vim /etc/xinetd.d/tftp --配置tftp

disable=no --打开服务

server_args=-s -c /data/tftpboot --设定tftp服务目录,-c指定可以创建文件

# chmod 777 /data/tftpboot  修改/tftpboot文件夹的权限

# service xinetd restart

# netstat -a | grep tftp

udp    0   0 *:tftp     *:*  表示服务已经开启,tftp配置成功

# tftp host --进入TFTP操作

connect:连接到远程tftp服务器

mode:文件传输模式

put:上传文件

get:下载文件

quit:退出

verbose:显示详细的处理信息

tarce:显示包路径

status:显示当前状态信息

binary:二进制传输模式

ascii:ascii 传送模式

rexmt:设置包传输的超时时间

timeout:设置重传的超时时间

help:帮助信息

? :帮助信息

  

-g 表示下载文件 (get)

-p 表示上传文件 (put)

-l 表示本地文件名 (local file)

-r 表示远程主机的文件名 (remote file)

# tftp -g -r embedexpert 192.168.1.2 --从服务器上下载文件

 

出现的一些问题及原因(解决方法):

1、Transfer time out.  --tftpd服务没有启动

2、Error code 0:Permission denied --可能是由SELinux造成的,在FC3和FC3以后的FC版本中SELinux默认的都是开启的,现在要关掉它。

3、Error code 1:File not found --指定的文件夹不存在;或tftpd启动参数中没有指定-c选项,允许上传文件

4、Error code 2:Only absolute filenames allowed --/etc/xinetd.d/tftpd文件的server_args=设置没设好

5、Error code 2:Access violation --上传的文件要有相应的可读写(覆盖)的权限才能上传

 

二、VSFTPD

VSFTPD是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。它可以运行在Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。在开源操作系统中常用的FTPD套件主要还有ProFTPD、PureFTPd和wuftpd等

TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP的任务是从一台计算机将文件传送到另一台计算机,不受操作系统的限制。

1、ftp的两种模式:

兼是针对数据传输来说的,而且是从服务器的角度来说。

1.1、Standard (PORT方式,主动方式):

命令连接:客户端 1024以上端口 ——> 服务器 21端口

数据连接:客户端 1024以上端口 <—— 服务器 20端口

1.2、Passive (PASV,被动方式):

命令连接:客户端 1024以上端口 ——> 服务器 21端口

数据连接:客户端 1024以上端口 ——> 服务器 1024以上端口

1.3、主动与被动FTP优缺点:

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

2、实验环境:

Server: 192.168.133.21 client:192.168.133.22

2.1、在Server端

# yum -y install vsftpd

/etc/logrotate.d/vsftpd --日志滚动

/etc/pam.d/vsftpd --验证文件

/etc/vsftpd/ftpusers --拒绝用户列表

/etc/vsftpd/user_list --用户访问控制文件(拒绝用户/只允许用户列表)

/var/ftp --匿名用户的家目录(ftp/anonymous)

/var/ftp/pub --匿名用户的扩展目录

/etc/vsftpd/vsftpd_conf_migrate.sh --额外配置文件

# service vsftpd restart

# netstat -tnlp |grep :21

#chkconfig --level 35 vsfptd on --只有在开机在3.5模式开机时,才自启。

2.2、在client端

图形工具: IE/firefox/cute-ftp/filezilla(win/linux)

# yum install ftp lftp

2.2.1、ftp登录服务器

# ftp 192.168.133.21 --接着输入用户名&密码;匿名用户(anonymous,FTP),密码为空

常用命令:

ls --列出远程机的当前目录 

cd --在远程机上改变工作目录 

lcd --在本地机上改变工作目录;不接参数, 查看本地当前目录

ascii --设置文件传输方式为ASCII模式 

binary --设置文件传输方式为二进制模式 

close -- 终止当前的ftp会话 

hash --每次传输完数据缓冲区中的数据后就显示一个#号 

get(mget) -- 从远程机传送指定文件到本地机 (批量)

put(mput) --从本地机传送指定文件到远程机 (批量)

open --连接远程ftp站点, open 主机名/IP

! --运行本地 shell 命令

passive --修改数据的传输模式;on 被动,off 主动

ascii --设置为ascii数据传输类型

binary --设置为binary数据传输类型

ftp> get aaa bbb --下载文件aaa,并改名为bbb

ftp> !ls --查看本地当前目录

2.2.2、lftp登录服务器

# lftp 192.168.133.21 --直接登录就是匿名用户

# lftp 192.168.133.21 -u user,pass --本地用户登录

3、配置文件:

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

anonymous_enable=YES --启用匿名用户

local_enable=YES --启用本地用户

write_enable=YES --全局共享权限可读可写

local_umask=022 --本地用户文件的生成码

dirmessage_enable=YES --进入某个目录时,读取该目录下.message文件

xferlog_enable=YES --记录上次下载日志

connect_from_port_20=YES --允许采用20端口传输数据

xferlog_std_format=YES --启用xfer日志

listen=YES --

pam_service_name=vsftpd --vsftpd验证方式/etc/pam.d/vsftpd

userlist_enable=YES --启用/etc/vsftpd/user_list文件进行访问控制

tcp_wrappers=YES --支持tcpwappers防火墙访问控制

local_root=$HOME
--默认登录在$HOME


anon_root=/var/ftp
--默认登录在/var/ftp


max_clients=2 --服务器总的连接数最大为2

max_per_ip=1 --每个IP的最大连接数为1

4、用户访问控制:

4.1、/etc/vsftpd/ftpusers --拒绝访问列表;如果用户名在这个文件里头,登录服务器总是报密码错误的提示

4.2、/etc/vsftpd/user_list --拒绝用户/只允许用户列表,特点如下:

比 /etc/vsftpd/ftpusers优先起作用

拒绝时,直接报 permission denied.

文件作用的控制选项如下:

userlist_enable=YES --启用 /etc/vsftpd/user_list

userlist_deny=YES/NO --拒绝作用/只允许作用

4.3、本地用户家目录禁锢

chroot_local_user=YES --为YES,则除下面文件里的本地用户外,其他本地用户兼被禁锢在家目录;默认为NO,行为与 YES 反之

chroot_list_file=/etc/vsftpd/chroot_list

chroot_list_enable=YES --为YES,则上选项生效;为NO,则上选项无效

4.4、匿名用户控制

anon_upload_enable=YES --匿名用户可上传文件

anon_mkdir_write_enable=YES --可新建文件夹

anon_other_write_enable=YES --可改名/删除文件

anon_umask=022 --匿名用户文件的生成码,则上传文件权限为 644

chown_uploads=YES --上传文件后,自动更改属主,默认为 ftp

chown_username=root --将属主改为 root,权限都会变为了 600

anon_max_rate=102400 --匿名用户最大传输速率为100KB/s

匿名用户登录 vsftp 服务器时,家目录都为 /var/ftp 。 要想从客户端上传文件到服务器上,是不可以直接上传到家目录的(首先,该目录对于其他用户没有写权限;再者,改了该目录对其他用户的权限,客户端干脆连不上服务器)。所以匿名用户要想上传文件到服务器上,我们需要在 /var/ftp 里面建立一个目录或者干脆使用里面的 pub 目录;并且要记得给他们对于其他用户有写的权限。

# chown ftp /var/ftp/pub/

5、客户端访问控制

#vi /etc/hosts.allow --只允许10.1.1.0/24网段登录,但从中排除掉10.1.1.3

vsftpd: 10.1.1.0/255.255.255.0 EXCEPT 10.1.1.3

#vi /etc/hosts.deny --不知这是干啥么

    vsftpd: * :spawn echo "`date`" %c >> /var/log/ftp_deny.log
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: