(k8s-king-king)vsftpd服务配置与使用

举报
yd_254431385 发表于 2023/11/24 13:40:54 2023/11/24
【摘要】 3.1 案例目标FTP服务配置-实操.mp4(1)掌握vsftpd服务三种访问模式的配置方法;(2)掌握FTP服务的连接使用方法。3.2 案例分析(1)规划节点FTP服务器的节点规划,见表3-1。表3-1 IP地址信息设备IP地址FTP服务器172.16.59.99/24(2)基础准备最小化CentOS 7.5虚拟机两台,CetnOS 7.5系统ISO镜像。3.3 案例实施(1)安装vsft...

3.1 案例目标FTP服务配置-实操.mp4

(1)掌握vsftpd服务三种访问模式的配置方法;

(2)掌握FTP服务的连接使用方法。

3.2 案例分析

(1)规划节点

FTP服务器的节点规划,见表3-1。

表3-1 IP地址信息

设备 IP地址
FTP服务器 172.16.59.99/24

(2)基础准备

最小化CentOS 7.5虚拟机两台,CetnOS 7.5系统ISO镜像。

3.3 案例实施

(1)安装vsftpd软件服务包

[root@localhost ~]# curl -O  http://mirrors.douxuedu.com/cloud/CentOS-7-x86_64-DVD-1804.iso
...
[root@localhost ~]# mkdir /opt/centos
[root@localhost ~]# mount -o loop CentOS-7-x86_64-DVD-1804.iso /opt/centos/
mount: /dev/loop0 is write-protected, mounting read-only
[root@localhost ~]# mv /etc/yum.repos.d/* /media/
[root@localhost ~]# vi /etc/yum.repos.d/local.repo
//按i进入编辑模式,输入以下代码
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enanbled=1
//按ESC键输入:wq命令保存退出
[root@localhost ~]# yum install vsftpd -y
...
Installed:
  vsftpd.x86_64 0:3.0.2-22.el7                                               
Complete!

(2)进入主配置文档所在目录,并对其备份:

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp -p vsftpd.conf vsftpd.conf.bak

(3)接下来,开始vsftpd服务的配置:

① 配置匿名访问模式的FTP服务

我们编辑主配置文档,修改原来文件中所有内容,注意如下需要修改的配置参数:

[root@localhost vsftpd]# vi vsftpd.conf
//按i进入编辑模式,修改和添加以下代码(双斜杠后的注释内容不需要输入)
anonymous_enable=YES             //允许匿名访问
local_enable=YES                 //允许本地用户进行访问
write_enable=NO                  //禁止写入
anon_upload_enable=NO            //禁止匿名用户上传文件
anon_mkdir_write_enable=NO       //禁止匿名用户进行写入操作
xferlog_enable=YES
listen=NO                       //关闭监听模式
listen_ipv6=YES                 //开启ipv4和ipv6的监听模式,与上二选一
//在后面添加以下两行代码(双斜杠后的注释内容不需要输入)
pasv_enable=NO                  //关闭被动传输模式
connect_from_port_20=YES        //使用20端口传输数据

编辑完成后保存退出,在以上配置过程中,我们启用的是主动模式(Port模式),相关的参数主要是以下两个:

pasv_enable=no;
connect_from_port_20=yes;

随后,开始启动vsftpd服务,启动的是FTP的主动连接方式。

[root@localhost vsftpd]# systemctl start vsftpd

*(此步骤选做)如果是本地环境,接下来,我们可以在防火墙上开放FTP服务的访问,并重新加载防火墙策略,让刚才添加的新策略生效:

[root@localhost vsftpd]# firewall-cmd --add-service=ftp --permanent
success
[root@localhost vsftpd]# firewall-cmd --reload

现在,我们通过netstat命令查看一下vsftpd服务启动后的网络连接情况:

[root@localhost vsftpd]# netstat -anlp | grep vsftpd
tcp6    0   0 :::21    :::*      LISTEN       1444/vsftpd

由上可以看出,当前FTP服务器开启的是21号端口,用于监听网络中发送的指令信息。

最后完成匿名访问FTP服务,首先下载FTP客户端:

[root@localhost ~]# yum install ftp -y
...
Installed:
  ftp.x86_64 0:0.17-67.el7 
Complete!

然后我们在连接的时候使用了-A参数,表示为使用匿名用户方式进行访问(IP为虚拟机实际地址),用户名默认为anonymous,无需密码,直接按Enter键运行,最后输入quit退出,如图3-1所示。

31.png
图3-1 匿名用户方式进行访问

② 配置本地用户模式

这种模式下,用户登陆FTP服务器时,需要提供用户名和用户密码进行必要的用户身份认证。相较于第一种匿名登陆方式而言,这种模式的安全性大大提高,下面我们还是看下参数上有什么变化。

首先,我们先把配置文件恢复初始状态,操作如下:

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp -p vsftpd.conf.bak vsftpd.conf
cp: overwrite ‘vsftpd.conf’? y

然后,编辑主配置文档,修改原来文件中所有内容,注意如下需要修改的配置参数:

[root@localhost vsftpd]# vi vsftpd.conf
//使用vi命令进入编辑器后,修改以下代码(双斜杠后的注释内容不需要输入)
anonymous_enable=NO              //关闭匿名访问
local_enable=YES                 //允许本地用户进行访问
write_enable=YES                 //允许写入操作
xferlog_enable=YES
listen=NO                        //关闭监听模式
listen_ipv6=YES                  //开启ipv4和ipv6的监听模式,与上二选一
connect_from_port_20=NO          //关闭20端口传输数据
pam_service_name=vsftpd          //身份验证服务为vsftpd
userlist_enable=YES              //限制root用户及系统用户登陆
//保存退出编辑器

从以上参数配置中,可以看出,这里删除了所有与匿名用户相关的参数(以anon开头的),并将anonymous_enable=YES的值修改为NO,并添加了以下参数内容:

pam_service_name=vsftpd;
userlist_enable=YES;

注意:由于将userlist_enable的参数值设为了YES,因此vsftpd主配置目录中的两个文件/etc/vsftpd/ftpusers和/etc/vsftpd/user_list中包含的用户,默认是不允许直接访问FTP服务器的。

修改完之后,重启Vsftpd服务。

[root@localhost vsftpd]# systemctl restart vsftpd

我们查看一下文件中的内容,其中包含root用户等系统用户在内,如图3-2所示:

32.png

图3-2 查看文件内容

如果需要这其中的用户也可以访问FTP服务器,则需要在这两个文件中将对应的用户名手动删除。

现在,我们需要添加对应可以访问FTP服务器的本地用户Jack并设置密码为123,操作如下:

[root@localhost vsftpd]# useradd jack
[root@localhost vsftpd]# echo 123 | passwd --stdin jack
更改用户 jack 的密码 。
passwd:所有的身份验证令牌已经成功更新。

我们现在用jack的身份来登陆FTP服务器:

[root@localhost vsftpd]# ftp 172.16.59.99   //IP地址根据实际情况修改为本虚拟机IP
Connected to 172.16.59.99 (172.16.59.99).
220 (vsFTPd 3.0.2)
Name (172.16.59.99:(none)): jack            //此处输入用户名jack
331 Please specify the password.            
Password :                                 //此处输入用户名密码,按设置的密码123
230 Login successful.                      //提示成功登陆
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd                                  //查看下用户当前所在目录位置
257 "/home/jack"                          //默认为该用户的宿主目录
ftp>

③ 配置虚拟用户模式:

相较于前面两种模式,此种模式下FTP服务器的安全性有了很大的提升,也是这三种模式中最为安全的一种认证模式,可以满足大量账户的访问需求。

在有大量用户需要访问FTP服务器时,依赖于通过创建本地用户的方式来满足用户访问需求,这种做法既不明智也不安全,就需要我们通过创建vsftpd虚拟账户来实现这种功能。

首先,我们需要创建一个明文方式存储密码的文件,并将用户名和密码记录在文件中,代码如下:

[root@localhost vsftpd]# vi ftplogin      //此处文件名任意
//按i进入编辑模式,输入以下代码(双斜杠后的注释内容不需要输入)
mary                     //第一个虚拟用户mary
123                      //密码为123
jones                    //第二个虚拟用户jones
456                      //密码为456
//保存退出编辑器

然后,我们需要将这种明文存储用户认证信息的文件转为数据库文件,以此来提升系统安全性,操作如下:

[root@localhost vsftpd]# db_load -T -t hash -f ftplogin ftplogin.db

删除原先创建的明文用户认证信息文件,并将数据库文件权限更改为只有root用户才有读取和写入的权限:

[root@localhost vsftpd]# rm -rf ftplogin
[root@localhost vsftpd]# chmod 600 ftplogin.db

创建一个用于虚拟用户登陆认证的PAM文件,这里我们设定文件名为vsftpd.auth,并在该文件中指定和验证用户账号信息的数据库文件为ftplogin.db(这里数据库扩展名可以省略不写),操作及参数设定如下所示:

[root@localhost vsftpd]# vi /etc/pam.d/vsftpd.auth
//使用vi命令进入编辑器,输入以下代码
auth           required       pam_userdb.so      db=/etc/vsftpd/ftplogin
account        required       pam_userdb.so      db=/etc/vsftpd/ftplogin
//保存退出编辑器

现在我们需要修改/etc/vsftpd/vsftpd.conf文件中的参数设置,增加与虚拟用户访问相关的参数内容,主要为以下几项参数,见表3-2:

表3-2 虚拟用户访问相关的参数

参数 功能
guest_enable=yes 开启虚拟用户模式
guest_username=virtual 指定虚拟用户账号名称
pam_service_name=vsftpd.auth 指定账号认证文件
allow_writeable_chroot=yes 允许用户登陆且支持对FTP根目录拥有写入权限

我们先把配置文件恢复初始状态,操作如下:

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp -p vsftpd.conf.bak vsftpd.conf
cp: overwrite ‘vsftpd.conf’? y

然后编辑修改主配置文档,参数设置如下:

[root@localhost vsftpd]# vi vsftpd.conf
//使用vi命令进入编辑器,修改以下代码
anonymous_enable=no
local_enable=yes
write_enable=NO
xferlog_enable=YES
listen=no
listen_ipv6=yes
pasv_enable=yes
connect_from_port_20=no
pam_service_name=vsftpd.auth
userlist_enable=yes
guest_enable=yes
guest_username=virtual                //指定虚拟用户账号名称
allow_writeable_chroot=yes
//保存退出编辑器

修改完之后,重启Vsftpd服务。

[root@localhost vsftpd]# systemctl restart vsftpd

根据参数中虚拟用户账号名称,我们创建此用户,并禁止该用户使用bash shell环境且用户目录为/var/ftpuser:

[root@localhost vsftpd]# useradd -d /var/ftpuser -s /sbin/nologin virtual

最后,我们还需要排除SELinux对FTP服务的影响,并将虚拟账户对应的目录/var/ftpuser权限修改成“755”设置如下:

[root@localhost vsftpd]# setsebool -P ftpd_full_access=on
setsebool:  SELinux is disabled.
[root@localhost vsftpd]# chmod -R 755 /var/ftpuser/

使用FTP命令行来验证我们FTP服务器的虚拟账户模式,操作如下所示:

[root@localhost vsftpd]# ftp 172.16.59.99
Connected to 172.16.59.99 (172.16.59.99).
220 (vsFTPd 3.0.2)
Name (172.16.59.99:(none)): mary      //此处输入虚拟账户名
331 Please specify the password.            
Password :                            //此处输入用户名密码,按密码123
230 Login successful.                 //提示成功登陆
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd                              //查看下用户当前所在目录位置
257 "/"                               //默认为该用户的宿主目录
ftp> dir
227 Entering Passive Mode (172,16,59,99,112,165).
150 Here comes the directory listing.
226 Directory send OK.
ftp>quit

在Linux平台上进行验证,命令格式为curl -u 用户名:密码 ftp://虚拟机IP,如图3-3所示。

[root@localhost vsftpd]# cd /var/ftpuser
[root@localhost ftpuser]# ll
total 0
[root@localhost ftpuser]# vi 123.txt
This is a test of the Virtual-User mode
[root@localhost ftpuser]# curl -u mary:123 ftp://172.16.59.99/

33.png

图3-3 字符界面访问FTP服务器

(以下步骤选做)如果是本地环境,除了以上命令行的连接方式以外,FTP还可以通过Web方式直接登录访问。在另一台服务器中打开浏览器,并在地址栏中输入FTP服务器的IP地址,格式为ftp://172.16.59.99,并按提示输入对应的用户名和密码,就可以访问我们新架设好的FTP服务器了,如图3-4所示。

34.png

图3-4 Web方式访问FTP服务器

认证登录后,我们也可以查看并下载目录中的123.txt文件,访问成功,如图3-5所示。

35.png

图3-5 下载文件

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。