openEuler应用入门 05 - 搭建FTP服务器

openEuler应用入门目录:

openEuler应用入门 - 前言

openEuler应用入门 01 - 安装openEuler操作系统

openEuler应用入门 02 - 使用FinalShell连接服务器

openEuler应用入门 03 - 搭建本地DNF源仓库

openEuler应用入门 04 - 安装DDE图形界面

openEuler应用入门 05 - 搭建FTP服务器

openEuler应用入门 06 - 搭建Windows文件共享服务

openEuler应用入门 07 - 搭建本地Docker镜像仓

openEuler应用入门 08 - 在服务器使用Docker

openEuler应用入门 09 - 使用Nginx

openEuler应用入门 10 - 使用WPS

openEuler应用入门 11- 安装openGuass数据库

openEuler应用入门 12- 连接openGuass数据库

openEuler应用入门 13- 使用防火墙

注:本节内容大部分来自官网文档。因官网文档所用的版本有点滞后,请阅读时注意。

搭建FTP服务器

总体介绍

FTP简介

FTP(File Transfer Protocol)即文件传输协议,是互联网最早的传输协议之一,其最主要的功能是服务器和客户端之间的文件传输。FTP使用户可以通过一套标准的命令访问远程系统上的文件,而不需要直接登录远程系统。另外,FTP服务器还提供了如下主要功能:

用户分类

默认情况下,FTP服务器依据登录情况,将用户分为实体用户(real user)、访客(guest)、匿名用户(anonymous)三类。三类用户对系统的访问权限差异较大,实体用户具有较完整的访问权限,匿名用户仅有下载资源的权限。

命令记录和日志文件记录

FTP可以利用系统的syslogd记录数据,这些数据包括用户历史使用命令与用户传输数据(传输时间、文件大小等),用户可以在/var/log/中获得各项日志信息。

限制用户的访问范围

FTP可以将用户的工作范围限定在用户主目录。用户通过FTP登录后系统显示的根目录就是用户主目录,这种环境被称为change root,简称chroot。这种方式可以限制用户只能访问主目录,而不允许访问/etc、/home、/usr/local等系统的重要目录,从而保护系统,使系统更安全。

FTP 使用到的端口

FTP的正常工作需要使用到多个网络端口,服务器端会使用到的端口主要有:

命令通道,默认端口为21

数据通道,默认端口为20

两者的连接发起端不同,端口21主要接收来自客户端的连接,端口20则是FTP服务器主动连接至客户端。

vsftpd 简介

由于FTP历史悠久,它采用未加密的传输方式,所以被认为是一种不安全的协议。为了更安全地使用FTP,这里介绍FTP较为安全的守护进程vsftpd(Very Secure FTPDaemon)。

之所以说vsftpd安全,是因为它最初的发展理念就是构建一个以安全为中心的FTP服务器。它具有如下特点:

vsftpd服务的启动身份为一般用户,具有较低的系统权限。此外,vsftpd使用chroot改变根目录,不会误用系统工具。

任何需要较高执行权限的vsftpd命令均由一个特殊的上层程序控制,该上层程序的权限较低,以不影响系统本身为准。

vsftpd整合了大部分FTP会使用到的额外命令(例如dir、ls、cd等),一般不需要系统提供额外命令,对系统来说比较安全。

vsftpd服务支持三种用户模式。

匿名用户

默认VSFTP是支持匿名用户的,该用户登录FTP服务使用anonymous用户直接登录,不需要输入密码。

系统用户

可以使用Linux系统本身存在的用户,作为FTP用户,具体哪些用户可以登录FTP,可以通过配置文件指定。

虚拟用户

虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。

安装 vsftpd

安装 vsftpd

使用vsftpd需要安装vsftpd软件,在已经配置dnf源的情况下,通过root权限执行如下命令,即可完成vsftpd的安装。

如果已经安装了DDE图形界面,并且在图形界面中登录,可以打开“终端”输入以下命令。

#dnf install vsftpd -y

如果在系统安装时己经选择了“FTP服务器”,则输入命令并回车后,会提示vsftpd己安装,不需要再安装了。

管理 vsftpd

启动、停止和重启vsftpd服务,请在root权限下执行对应命令。

启动vsftpd服务

#systemctl start vsftpd

可以通过netstat命令查看通信端口21是否开启,如下显示说明vsftpd已经启动。

#netstat -tulnp grep 21

tcp6 0 0 :::21 :::* LISTEN 9933/vsftpd

停止vsftpd服务

#systemctl stop vsftpd

重启vsftpd服务

#systemctl restart vsftpd

配置 vsftpd

为了提高系统的安全性和FTP用户管理的便利性,我们采用“虚拟用户”的模式来使用vsftpd。我们使用宿主用户“ftpadmin”,并建立2个虚拟用户:“ftp”和“bosch”,密码分别是:“123”和“robert”。

建立虚拟用户

虚拟用户并不是系统用户,也就是说这些FTP的用户在系统中是不存在的。他们的总体权限其实是集中映射在一个系统用户身上,所谓vsftpd的[虚拟宿主用户],就是这样一个支持着所有虚拟用户的宿主用户。执行以下命令为FTP虚拟用户建立一个宿主用户。

#useradd -d /home/ftproot ftpadmin -s /sbin/nologin

为宿主用户设置密码,这里设置为“Admin@9000”,根据提示输入两次密码。
#passwd ftpadmin

为两个虚拟用户建立FTP文件根目录。
#mkdir -p /home/ftproot/ftp
#mkdir -p /home/ftproot/bosch

为两个文件根目录设置权限。
#chown -R ftpadmin.ftpadmin /home/ftproot
#chmod 500 /home/ftproot/ftp
#chmod 500 /home/ftproot/bosch

配置虚拟用户
用gdbm工具来生成pag文件。注意文件扩展名为“pag”。

出于安全角度修改vsftpd_login.pag为600权限。
#chmod 600 /etc/vsftpd/vsftpd_login.pag

修改PAM验证,修改/etc/pam.d/vsftpd,这个文件名与/etc/vsftpd/vsftpd.conf中的pam_service_name=vsftpd相对应。
注释或删除掉所有参数,加入以下两行内容,注意最后不要加文件的扩展名。

创建及配置虚拟用户的配置文件。
创建虚拟用户的配置文件
#mkdir /etc/vsftpd/vuser_conf/

配置虚拟用户的配置文件
vi /etc/vsftpd/vuser_conf/ftp
vi /etc/vsftpd/vuser_conf/bosch

在这两个虚拟用户的各自的配置文件中各写入以下配置。

记得创建/etc/vsftpd/chroot_list,否则会报错。
#touch /etc/vsftpd/chroot_list

建立欢迎信息。即打开welcome.txt文件,写入欢迎信息后保存退出。
#vim /etc/vsftpd/welcome.txt
欢迎信息举例如下:Welcome to this FTP server!

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

打开防火墙对应的端口,默认端口为21。
#启动防火墙
systemctl start firewalld
#重启
systemctl restart vsftpd
#开机自动启动
systemctl enable vsftpd

启动vsftp,并设置为开机自动启动。
#启动
systemctl start vsftpd
#打开防火墙,开放21端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

使用Filezilla测试

使用Filezilla等FTP客户端测试,虚拟用户ftp可以选择主动模式正常访问FTP,并且在工作目录下可以正常读写文件,创建,删除,修改目录。

步骤1

双击打开本地Filezilla软件,单击左上角站点管理器。

步骤2

在站点管理器中“新建站点”。

步骤3

在主机输入服务器的IP地址,默认端口21,用户和密码是在4.1.3里创建的虚拟用户,输入完后单击“连接”按钮。

Filezilla站点管理器配置

步骤3

服务器和本地FilerZilla连接成功。
image

1 个赞