ftp协议及简单配置

在我们的学习和生活,FTP服务器可谓充斥了我们的生活,比如我们交作业时的ftp服务器,是不是很方便呢!所以今天就来研究一下ftp服务器吧。
ftp协议是一种非常古老的协议。古老到他的安全性在现在已经不能保证,在互联网刚刚兴起的时候,为了实现不同主机间的文件传输,由此ftp服务应运而生,在那时,网络运营还是一个问题,所以ftp协议就致力于传输文件,以至于它没有一丝丝防范性,安全性很差。
FTP:File Transfer Protocol 基于TCP/IP协议 C/S架构
FTP有两个连接
tcp:命令连接:在命令拆除时拆除链接
数据连接:它含有两个模式
主动模式:20/tcp
被动模式:tcp,随机端口
在这里插入图片描述
如图在主动模式下,服务器默认开启21端口,客户端通过21端口与服务器来进行通讯,当客户端向服务器21号端口发起数据请求后,客户端向服务器发送一个端口号,在传送数据时,服务器向客户端请求库胡端开启的端口,于是开始传输数据。但是客户端的防火墙不允许服务器来求本机的任何端口,于是数据连接被拒绝。
主动模式:服务器向客户端敲门,然后客户端开门
在这里插入图片描述
如图在被动模式下,服务器也是开启21端口,当客户端通过服务器的21端口进行通信,当客户端向服务器21端口建立连接后,服务器随机打开一个大于1024的端口,并告诉客户端自己打开的随机端口号,传输数据时客户端向服务器请求打开的随机端口,进行数据传输。
被动模式:客户端向服务器敲门,然后服务器开门
C/S架构中LINUX的FTP服务器程序如下:
wu-ftpd:它最初是由华盛顿大学的Chris Myers和Bryan D. O’Connor编写的,作为BSD FTP守护进程的替代品,用于华盛顿大学网络,主要是大型的wuarchive站点。该软件最终发展成为当时其他主流商业操作系统的替代品,包括DEC的Ultrix,IBM的AIX和Sun的SunOS和Solaris操作系统。它也很快被移植到了其他基于开源的操作系统,比如FreeBSD和Linux。(来自维基百科)
proftpd:功能强大的ftp服务器程序
pureftpd:Pure-FTPd是一个免费的(BSD许可证)FTP服务器,强调软件安全性。它可以被编译并在各种运行类Unix计算机操作系统,包括Linux的,OpenBSD系统,NetBSD的,FreeBSD的,蜻蜓BSD,的Solaris,Tru64的,达尔文,Irix的和HP-UX。它也被移植到Android(来自维基百科
vsftpd:VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。安全性是编写VSFTP的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是VSFTP的两个重要特点。 在速度方面,使用ASCII代码的模式下载数据时,VSFTP的速度是Wu-FTP的两倍,如果Linux主机使用2.4.的内核,在千兆以太网上的下载速度可达86MB/S。在稳定方面,VSFTP就更加的出色,VSFTP在单机(非集群)上支持4000个以上的并发用户同时连接,根据Red Hat的Ftp服务器(ftp.redhat.com)的数据,VSFTP服务器可以支持15000个并发用户(来自互动百科)
IIS:window 服务端这里不做过多解释
客户端:
client:GUI(图形化工具)
flashxp商业化工具
cuteftp商业化工具
以上两个是window工具,但是都是商业软件
filezlia开源工具 既支持window也支持linux
linuxftp:gftp 开源工具
CLI(命令行工具) ftp lftp —–工具
wget lftpget—–命令
ftp的用户分为三种:1.系统用户 2.虚拟用户 基于mysql hash-file 3.匿名用户
数据传输安全:
sftp:ssh提供的基于ssh协议的ftp’
ftps:基于ssl的ftp
响应码:跟http的响应码大致相同
1XX:信息码
2XX:成功校验码
3XX:进一步提示补全信息的状态码
4XX:客户端错误(临时性错误)
5XX:服务器错误(永久性错误)
安装vsftpd:
认证文件: /etc/pam.d/vsftp 这时系统默认的pam模块的认证文件,之后我们会把它替换为mysql的认证文件
PAM:Plugable Authenticatiopn Module 插件式认证模块 他是一个框架
nsswitch:名称解析框架
模块化:/lib64/libnss
/usr/lib64/libnss*
配置文件:/etc/nsswitch.conf
pam:认证框架 认证帐号 会话 检查
模块化:/lib64/security/pam*.so
配置文件:/etc/pam.d/* /etc/pam.conf
vsftpd:红帽的ftpd程序
服务脚本:/etc/rc.d/init.d/vsftpd
配置文件:/etc/vsftpd/vsftpd.conf
主程序文件:/usr/sbin/vsftpd
数据文件:/var/ftp
对于ftp用户访问ftp服务时应该对其chroot,禁锢用户在其家目录中。
使用chroot_local_user={YES|NO}

chroot_local_user=YES

下面两个命令需要配合使用并且不能和上面的命令同时开启使用chroot列表

chroot_list_enable={YES|NO}
chroot_list_file=/etc/vsftpd/chroot_list

每行一个用户
匿名用户配置

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=yes
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=NO
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=NO

注意:启用写入功能时,ftp用户对象赢得本地文件系统也有相应的写入权限,生效的权限取决于文件系统权限和服务权限的交集
欢迎信息的定义

# You may fully customise the login banner string:
ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails

在某ftp可访问的文件夹下创建.messages文件,在用户进入该文件夹时,可显示相关文本、
vsftpd控制登录用户的机制
/etc/vsftpd/ftpusers中的用户都不允许使用ftp服务服务,在/etc/pam.d/vsftpd定义
user_list配置文件有两种用法
黑名单:
userlist_enable=YES
userlist_deny=YES
白名单:
userlist_enable=YES
userlist_deny=NO
连接限制:
max_clients:最大并发连接数
max_per_ip:每IP可同时发起并发请求
传输速率
anon_max_rate:匿名用户的最大传输速率,单位字节每秒
local_max_rate:本地用户的最大传输速率,单位字节每秒
上传文件的umask
anon_umask:匿名用户上传文件的umask
local_umask:本地用户上传文件的umask
修改匿名用户上传文件的属主和属组
chown_uploads=YES
chown_username=someuser
虚拟用户:
所有的虚拟用户回应射到一个系统用户访问时的目录是此系统用户的家目录
hash 编码的文件
奇数行为用户名,偶数行为密码
关系行数据库:
pam-mysql实现认证 (在centos6中的epel源中有rpm包,centos7需要自行编译安装)
—————————————————————————————————————————————————-
简单的安装vsftp并实现简单功能
centos6:
一、安装程序

#yum install epel-release -y
#yum install vsftpd mysql-server mysql-devel pam_mysql

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装完成后,我们的ftp服务器和mysql已经可以正常工作了,现在我们启动服务就可以啦

#servcie mysqld start
#servcie vsftpd start

在这里插入图片描述
我们可以下载一个ftp测试工具

#yum install ftp
#发图片172.16.200.139

这里172.16.200.139是我的本机ip

[root@www wang161x]# ftp 172.16.200.138
Connected to 172.16.200.138 (172.16.200.138).
220 -Welcome to blah FTP service.
Name (172.16.200.138:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (172,16,200,138,182,30).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 19 Jan 12 06:42 pub
226 Directory send OK.
ftp>

在这里插入图片描述
编辑欢迎信息

#vim /etc/vsftpd/vsftpd.conf
  ......................
#service vsftpd restart
#ftp 172.16.200.139

在这里插入图片描述
在这里插入图片描述
——–centos7喜下安装vsftpd并实现简单功能-----

#yum install vsftpd -y

安装完vsftpd后就可以启动服务了
在这里插入图片描述
让我们打开网页试一下http://172.16.200.138
在这里插入图片描述
是不是特别简单,现在我们可以对我们的网页进行测试,使用linux下的ftp工具,如果没有可以下载。

[root@bogon wang161x]# ftp 172.16.200.136
Connected to 172.16.200.136 (172.16.200.136).
220 (vsFTPd 3.0.2)
Name (172.16.200.136:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (172,16,200,136,167,95).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0               6 Aug 03 06:10 pub
226 Directory send OK.
ftp>

在这里插入图片描述
其中ftp 172.16.200.136是对172.16.200.136的ip进行ftp连接,当然我们现在本机就是这个地址,所以自然连接的就是我们的自己的服务器,这里我们使用匿名用户ftp帐号密码都是ftp,ftp服务器在启动时默认开启两个匿名帐号一个ftp,另一个是anonymous,密码和帐号相同,如果我们用网页打开的话,直接就可以打开,并不需要用户名,ftp服务器也是默认可以使用本地用户来连接ftp服务器的,但考虑安全的前提下,ftp服务器是不允许root来连接ftp服务器的,因为在连接ftp服务器是,对本地客户端来讲有一个用户,如果说这个用户是root的话,那么映射到ftp服务器的话,是以什么身份来的呢?在这里我们可以新建一个文件,看ftp服务器新建文件的属主和属组是谁来解决这个问题,所以我们就

#mkdir test

在这里默认匿名用户是不能创建文件夹的,所以我们修改一下配置文件

#vim /etc/vsftpd/vsftpd.conf
  # Uncomment this if you want the anonymous FTP user to be able to 
    create
   # new directories.
  anon_mkdir_write_enable=YES
   #
[root@bogon wang161x]# service vsftpd restart
Redirecting to /bin/systemctl restart vsftpd.service
[root@bogon wang161x]# ftp 172.16.200.136
Connected to 172.16.200.136 (172.16.200.136).
220 (vsFTPd 3.0.2)
Name (172.16.200.136:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir test
550 Create directory operation failed.
ftp> cd p
pam_mysql-0.7RC1/        pam_mysql-0.7RC1.tar.gz  picture/
ftp> cd p
pam_mysql-0.7RC1/        pam_mysql-0.7RC1.tar.gz  picture/
ftp> cd /pub
250 Directory successfully changed.
ftp> mkdir test
257 "/pub/test" created
ftp>

在这里插入图片描述
是不是创建成功了,如果在此过程中创建失败,是因为/var/ftp/pub的权限是755,改为777就好啦
查看文件的属组属组

[root@bogon wang161x]# ls -l /var/ftp/pub/
总用量 0
drwx------ 2 ftp ftp 6 1月  16 15:31 abc
drwx------ 2 ftp ftp 6 1月  16 15:33 test
[root@bogon wang161x]#

在这里插入图片描述
所以我们匿名创建的文件的属主属组是ftp这个用户,而且权限是700,ftp这个用户是系统用户,不允许登录,所以我们看到属主属组是ftp的文件就是匿名用户上传的,在centos6.5上,这个属主属组是nobady,不得不说centos7这种划分更为合理一点,若修改上传文件的默认权限,也很简单,修改一下默认配置就行了,在这里我们不进行演示。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值