redhat运维-ftp服务故障

举报
阿柠 发表于 2022/11/15 09:35:27 2022/11/15
【摘要】 FTP 概述文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议。FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系...

FTP 概述

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议。

FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。

问题: 一个用户在servera服务器上运行FTP服务器,会遇到以下症状:

  • 用户无法从workstation连接使用lftp。

  • 当用户登录到servera上的shell时,可以使用lftp连接到localhost。

  • 连接后,文件pub/noclip会传输,但文件pub/getall不会传输

servera上的FTP守护程序(vsftpd.service)将所有文件传输记录到**/var/log/xferlog**。如果该文件中某一行的最后一个字符是c,则传输成功完成;如果最后一个字符是I,则传输不完整。

  1. 我们尝试重现问题:

1.1. 尝试从workstation使用lftp连接运行在servera服务器上的的ftp服务。

image-20221114123507331

1.2. 尝试从servera上使用lftp连接运行在servera/localhost上的ftp服务

image-20221114124155616

1.3 我们在servera上查看一下pub/noclip文件的内容

image-20221114124542484

1.4 我们再去查看一下pub/getall的文件内容

image-20221114125032714

我们可以看到这个文件确实是有问题的。

  1. 发现问题,我们就去收集信息解决问题:

收集有关在servera上运行的FTP服务的信息。包括网络端口、防火墙信息、文档根、文件权限、SELinux拒绝等。

2.1 收集有关vsftpd(servera上的ftp程序)在网络上侦听的位置的信息

image-20221114153753279

这表明vsftpd正在监听默认的FTP端口(tcp:21),并接受来自所有IP地址的连接。

2.2 我们看看servera上的防火墙配置:

image-20221114165722676

这说明防火墙中没有开放ftp服务。这就解释了为什么远程连接失败了,但是本地连接成功了。

2.3 查看FTP根目录内容,默认路径为/var/ftp

image-20221114175354259

文件权限貌似是正确的。

2.4 检查前一天是否有linux拒绝

image-20221114180005240

**这表明文件/var/ftp/pub/getall具有tmp_t的SELinux上下文。**这也是可能错误的点

  1. 所以我们现在就可以做出这样的假设:

​ 没有为FTP服务打开防火墙,导致远程机器连接失败。

   文件/var/ftp/pub/getall包含不正确的SELinux上下文,不允许ftp守护程序读取该文件。
  1. 我们就这些问题做出修改:

打开服务器上FTP服务的防火墙。

[root@servera ~]# firewall-cmd --add-service=ftp
[root@servera ~]# firewall-cmd --permanent --add-service=ftp

image-20221115091316749

递归重置/var/ftp上的SELinux上下文。

[root@servera ~]# restorecon -Rv /var/ftp
  1. 我们测试一下这个问题是否得到了解决:

尝试从workstation使用lftp连接运行在servera服务器上的的ftp服务。

image-20221114181019579

我们很明显的发现之前ls是没有内容的,这算是解决了问题。

我们再尝试查看那两个文件内容:

image-20221114181200072

image-20221114181212433

至此,我们就顺利的解决了这一问题。

总结:

通过这个实验我们能获得的一些运维思路是,当遇到一些服务故障的时候,我们有没有去考虑以下这些情况呢?

收集有关在servera上运行的FTP服务的信息。包括网络端口、防火墙信息、文档根、文件权限、SELinux拒绝等。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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