FTP服务器的搭建(Linux)

风里唤呼声 2024-06-27 11:07:04 阅读 71

摘要:

FTP(File Transfer Protocol)即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式。通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作。虽然现在通过HTTP协议下载的站点有很多,但是由于FTP协议可以很好地控制用户数量和宽带的分配,快速方便地上传、下载文件,因此FTP已成为网络中文件上传和下载的首选服务器。同时,它也是一个应用程序,用户可以通过它把自己的计算机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP服务的功能是实现完整文件的异地传输。特点如下: 

(一)FTP使用两个平行连接:控制连接和数据连接。控制连接在两主机间传送控制命令,如用户身份、口令、改变目录命令等。数据连接只用于传送数据。 

(二)在一个会话期间,FTP服务器必须维持用户状态,也就是说,和某一个用户的控制连接不能断开。另外,当用户在目录树中活动时,服务器必须追踪用户的当前目录,这样,FTP就限制了并发用户数量。 

(三)FTP支持文件沿任意方向传输。当用户与一远程计算机建立连接后,用户可以获得一个远程文件也可以将一本地文件传输至远程机器。

 

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器 。

一、FTP服务器的概述

1、FTP服务器的作用

FTP服务器是一种提供文件传输服务的服务器,它的作用主要包括以下几点:

(1)存储文件:FTP服务器可以存储需要传输的文件,用户可以通过FTP客户端连接到FTP服务器,并上传或下载需要的文件。

 

(2)管理文件:FTP服务器可以管理文件,例如创建、删除、重命名等操作。

 

(3)提供文件访问权限控制:FTP服务器可以对文件进行访问权限控制,例如限制用户的访问权限、控制用户的上传和下载权限等。

 

(4)提供匿名访问:FTP服务器可以提供匿名访问,允许用户通过FTP客户端进行匿名的文件传输。

 

(5)监控文件传输情况:FTP服务器可以记录和监控文件传输情况,例如记录文件传输的日志信息,以便进行后续的审计和管理。

 

(6)支持多用户同时传输:FTP服务器可以支持多个用户同时进行文件传输,以提高文件传输的效率。

 

(7)网络备份:FTP服务器可以作为网络备份的存储服务器,用于备份公司或组织的重要数据。

 

(8)虚拟主机:FTP服务器可以作为虚拟主机,提供Web服务器、邮件服务器等服务。

 

(9)软件分发:FTP服务器可以作为软件分发服务器,将软件发布到FTP服务器上供用户下载。

 

(10)文件归档:FTP服务器可以作为文件归档服务器,存储历史文件,方便用户进行查阅和调取。

 

(11)文件同步:FTP服务器可以作为文件同步服务器,用于在不同的地点或网络之间同步文件。

2、FTP的系统组成

FTP服务器系统由服务器软件、客户端软件和FTP通信协议组成。FTP服务器常见的软件:vsftpd、wu-ftpd、Proftpd、微软 IIS FTP、Serv-U等。

3aef93708b1c41fda692033d7420d09a.jpeg

3、FTP服务器的工作过程

一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。

(1)控制连接

客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP 控制连接

(2)数据连接

FTP 控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式:主动模式(PORT/standard)和被动模式

(PASV)。

 

主动模式:

dc18e507d9f54e55afc8114cd0f67e6c.png

 

 被动模式:

3c90a36f7c1c4e139d3b0d972edaf291.png

二、FTP服务器的搭建

FTP服务器搭建前的准备:

FTP服务器的搭建与DNS服务器的搭建息息相关,如果未搭建DNS服务器见文章:

https://blog.csdn.net/weixin_63037066/article/details/129963557

其中DNS服务器的配置文件需要更改一点:

5f46a0354fba4f5cb12be9b35b6ce845.png

 打开正向配置文件,做一些更改--

334549d681e04a9b9971caf1bb3c2d83.png

systemctl restart named   //重启DNS服务 

 

FTP客户端的网卡也许谨慎配置(DNS服务器为FTP客户端解析域名或IP地址)--

FTP客户端的网卡配置-

[root@Server ~]# cd /etc/sysconfig/network-scripts/

[root@Server network-scripts]# 

[root@Server network-scripts]# vim ifcfg-ens33

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

IPADDR=192.168.1.10

GATEWAY=192.168.1.2

PREFIX=24

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

UUID=721bf751-0fac-4c74-9ade-9f591c0f5ebf

DEVICE=ens33

ONBOOT=yes

DNS1=192.168.1.10

 

1、安装FTP软件

服务端:yum install vsftpd

客户端: yum install ftp

2、启动ftp服务

systemctl start vsftpd //开启FTP服务

systemctl enable vsftpd //设置FTP开机自启动

systemctl status vsftpd //查看FTP服务的状态

3、防火墙设置

firewall-cmd --list-all //查看防火墙已经允许通过的服务

firewall-cmd --permanent --add-service=ftp //在防火墙中添加允许通过的FTP服务

firewall-cmd --reload //重新加载防火墙,使新添加的防火墙策略生效

4、配置本地用户

①不限制在自己根目录的用户(根目录--/home/用户名/)

FTP服务器端:

adduser user1 //添加普通用户

passwd user //设置user1用户的密码

echo "user1_file" > /home/user1/user.txt //创建测试文件(用来下载),并写入内容

mkdir /var/ftp/public //创建测试目录

FTP客户端:

echo "test_file" > test1.txt //创建测试文件(用来上传),并写入内容

客户端测试:

c188a211d7b0447bbd0b651cc98b7ea4.png

 那么如何做到在除了家目录的其他目录上传文件呢?看如下操作:(以 /var/ftp/public 为例)

FTP服务器端:

chmod o+w /var/ftp/public //给予其他用户对 /var/ftp/public 目录的写权限

chcon -t public_content_rw_t /var/ftp/public //如果你想让你设置的FTP目录可以上传文件的

话,SELINUX需要设置

setsebool -P ftpd_full_access on //修改布尔值状态,开放FTP访问

getsebool -a | grep ftp //过滤与FTP相关的布尔值信息

ftpd_anon_write --> off

ftpd_connect_all_unreserved --> off

ftpd_connect_db --> off

ftpd_full_access --> on //开启即可

ftpd_use_cifs --> off

ftpd_use_fusefs --> off

ftpd_use_nfs --> off

ftpd_use_passive_mode --> off

httpd_can_connect_ftp --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_home_dir --> off

客户端测试:

d92e03e3515e4ae091a749785eeaaba2.png

 

①限制在自己根目录的用户(根目录---/home/用户名/)

adduser webadmin //添加普通用户

passwd webadmin //设置普通用户webadmin的密码

mkdir /webdata/ //创建目录(该目录将用来作为用户webadmin的根目录)

chmod o+w /webdata/ //给予其他用户对 /var/ftp/public 目录的写权限

echo "webadmin_file" > /webdata/webadmin.txt //创建测试文件(用于上传),并写入内容

vim /etc/vsftpd/vsftpd.conf //配置FTP服务器的主配置文件,修改和添加的内容放在代码外部

vim /etc/vsftpd/chroot_list

webadmin

systemctl restart vsftpd //重启FTP服务

getsebool -a | grep ftp //过滤与FTP相关的布尔值信息

ftpd_anon_write --> off

ftpd_connect_all_unreserved --> off

ftpd_connect_db --> off

ftpd_full_access --> on //开启即可,如果为off则多敲一条命令:setsebool -P ftpd_full_access on

ftpd_use_cifs --> off

ftpd_use_fusefs --> off

ftpd_use_nfs --> off

ftpd_use_passive_mode --> off

httpd_can_connect_ftp --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_home_dir --> off

vim /etc/vsftpd/vsftpd.conf  //FTP服务器的主配置文件配置

b15ce2a5b613452eba7ef83a1ad1a5d2.png

3eeca46704924ede992c65cf8fe22f3e.png

客户端测试:

33a8e4ebe93341b2922525cd9d13b52f.png

 

在此基础上,我们还可以拓展FTP服务器的功能:

①禁止上传后缀名为.doc .docx .xlsx 的文件;

②限制用户的下载最大速度为100kb/s;

③最大同一IP在线人数为2人;

④一个IP地址同时登陆的用户进程/人数不超过2人。 

FTP服务器端:

vim /etc/vsftpd/vsftpd.conf //配置FTP服务器主配置文件,在文件末尾添加内容

local_max_rate=100000 //限制用户的下载最大速度为100kb/s

max_per_ip=2 //最大同一IP在线人数为2人

max_clients=2 //一个IP地址同时登陆的用户进程/人数不超过2人

deny_file={*.doc,*.docx,*.xlsx} //禁止上传后缀名为.doc .docx .xlsx 的文件

systemctl restart vsftpd //重启FTP服务

 客户端测试:

touch doc_file.doc //创建后缀名为.doc的测试文件

9be84c5dbb5b425aada427ffecc2cd20.png

 

为了保证客户端和服务器之间传输数据的保密性和完整性,可以使用SSL/TLS协议加固FTP服务器

FTP服务器端:

vim /etc/vsftpd/vsftpd.conf //编辑FTP服务器的主配置文件,在文件末尾添加内容

userlist_enable=YES

tcp_wrappers=YES

ssl_enable=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

rsa_private_key_file=/etc/ssl/serverkey1/vsftpd.pem

rsa_cert_file=/etc/ssl/serverkey1/vsftpd.pem

allow_anon_ssl=NO

force_local_logins_ssl=YES

force_local_data_ssl=YES

客户端测试:

5a933349378e453f9134e2556067a0d4.png

那么,如何安全地登陆到FTP服务器端 ?

yum install epel-release filezilla -y //在FTP客户端安装filezilla软件

细节提醒:

重复安装两次,因为第一次是初始化,第二次才是正常的安装。

安装完后会显示图标:

57a2bc7174a549de9dbab618e2d4346c.png

点击软件FileZilla,进入内部

①打开站点管理器

64a339a0036349589fb50ab57a62a6f1.png

②先新建站点,写入站点信息,最后点击连接

这里是用IP地址登陆--

9876a39b82e444de92be8c440d00b71f.png

也可以用域名登陆--

1d889962f3a44b1fb31eb7bf26babc66.png

 

③输入密码

ffba37aada73470e953a1c07df9a863d.png

 

连接成功:

65650eff089443c9b94d63cfbc427542.png

 

 这里依然可以进行文件的上传和下载:

8e011523c72a497aa409dbf5f89e8584.png

9554564dfad441cdba5674c6f1703b6e.png

至此,FTP服务器搭建完成!

 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。