[笔记]CentOS7 vsftpd安装及配置使用

简介: [笔记]CentOS7 vsftpd安装及配置使用

前言

最近在调研ftp服务的登陆 所以有必要安装研究一下作为Linux端ftp的实现软件—— vsftpd

以vsftpd 3.02版本为例

一、安装配置

1.1 卸载vsftpd

先查找vsftpd是否安装

[root@localhost ~]# rpm -aq vsftpd
vsftpd-3.0.2-29.el7_9.x86_64

有输出就代表已经安装了

卸载之前先停止vsftpd

systemctl stop vsftpd

再卸载

rpm -e vsftpd
• 1

1.2 安装vsftpd

yum install -y vsftpd

注意:如果提示"No package vsftpd available."

执行如下

wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/vsftpd-3.0.2-29.el7_9.x86_64.rpm
rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm

1.3 安装ftp客户端

vsftpd是服务端,ftp是客户端。

要想访问我们的vsftpd服务就必须要先安装客户端。

yum install ftp -y

如果提示“No package ftp available.”, 则执行以下操作

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/ftp-0.17-67.el7.x86_64.rpm
rpm -ivh ftp-0.17-67.el7.x86_64.rpm

1.4 启动vsftpd

systemctl start vsftpd

1.5 防火墙配置

防火墙放行21端口

firewall-cmd --zone=public --add-port=21/tcp --permanent

防火墙永久开放ftp服务,即类似windows 防火墙可让该应用 通行

firewall-cmd --add-service=ftp --permanent

防火墙重新加载

firewall-cmd --reload

1.6 Selinux配置

CentOS的所有访问权限都是由SELinux来管理的,为了避免我们安装中由于权限关系而导致的失败,需要先将其关闭,以后根据需要再进行重新管理。

查看selinux状态

[root@localhost script]# sestatus 
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

临时关闭selinux

# 临时关闭SE
getenforce
setenforce 0

永久关闭

getsebool -a | grep ftp 
setsebool -P ftpd_full_access on

二、相关目录

# vsftp配置文件
/etc/vsftpd/vsftpd.conf
# PAM认证文件
/etc/pam.d/vsftpd
# 匿名用户默认目录
/var/ftp
# 匿名用户的下载目录
/var/ftp/pub
# 不能访问 ftp server 的用户列表
/etc/vsftpd/ftpusers
# 允许访问 ftp server 的用户列表
/etc/vsftpd/user_list
# ftp 的上传下载日志
/var/log/xferlog
# ftp登陆日志目录 需要 vsftpd.conf conf dual_log_enable=YES
/var/log/vsftpd.log

三、配置conf

3.1 配置/etc/vsftpd/vsftpd.conf

先备份一份

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

注意:添加配置项时结尾不要有空格 不然可能会启动不了服务

3.2 vsftpd日志配置

ftp服务器的日志设置,可以通过修改主配置文件/etc/vsftpd.conf实现。

主配置文件中与日志设置有关的选项包括:

  • xferlog_enable
  • xferlog_file
  • dual_log_enable

xferlog_enable

如果启用该选项,系统将会维护记录服务器上传和下载情况的日志文件。默认情况下,该日志文件为 /var/log/vsftpd.log。但也可以通过配置文件中的 vsftpd_log_file 选项来指定其他文件。默认值为NO。

xferlog_std_format

如果启用该选项,传输日志文件将以标准 xferlog 的格式书写,该格式的日志文件默认为 /var/log/xferlog,也可以通过 xferlog_file 选项对其进行设定。默认值为NO。

dual_log_enable

如果启用该选项,将生成两个相似的日志文件,默认在 /var/log/xferlog/var/log/vsftpd.log 目录下。前者是 wu-ftpd 类型的传输日志,可以利用标准日志工具对其进行分析;后者是Vsftpd类型的日志。

syslog_enable

如果启用该选项,则原本应该输出到/var/log/vsftpd.log中的日志,将输出到系统日志中。

四、使用

4.0 ftp命令 基本使用

vsftpd是服务端,ftp是客户端。

要想使用ftp命令就必须要先安装ftp

安装方法 参考本章 安装ftp客户端

4.1 开启vsftpd登陆日志

vsftp配置文件/etc/vsftpd/vsftpd.conf

添加:

dual_log_enable=YES

然后重启ftp服务即可

systemctl restart vsftpd

4.2 使用Winscp Root账号登陆FTP

  1. 修改 vsftpd.conf 配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=077
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anon_root=/var/ftp/
dual_log_enable=YES
  1. 修改 /etc/vsftpd/user_list 配置文件
    注释掉root
  2. 修改/etc/vsftpd/ftpusers配置文件
    注释掉root

然后接下来你就可以使用root账号进行ftp登陆进行上传下载了

4.3 匿名模式 访问ftp服务

匿名模式是最不安全的一种认证模式,任何人都可以无须密码验证而直接登录到FTP服务器。

4.4 本地用户模式 访问ftp服务

本地用户模式 是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。

4.5 虚拟用户模式

参考

虚拟用户模式是更安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行密码验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

4.6 连接的主动模式和被动模式

https://www.cnblogs.com/puloieswind/p/15727632.html

  1. 完成一个FTP的传输过程不仅仅只需要21一个端口,而是2个端口,21端口只是一个命令端口,其实另外还有一个数据端口,我想这就是有些朋友在内网架设FTP并且在网关上做了21端口的映射之后外网还是不能访问的原因吧,另外一个数据端口是多少呢?这又牵涉到另外一个问题。
  2. FTP具有两种模式,分别是port模式(也叫主动模式)pasv模式(也叫被动模式),怎么来理解这两种模式呢?我来打个比喻吧,在主动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的某个端口,你就从这里把东西给我吧,服务器知道后就会通过另外一个数据端口把东西传给客户端,这就是主动模式,可以理解为服务端主动给客户端传输文件;在被动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,服务器端知道后,就打开一个端口,然后告诉客户端,我已经打开了某某端口,你自己进去拿吧,于是客户端就从那个端口进去拿文件了,这就是被动模式,可以理解为服务端被客户端拿走了东西

五、常见问题

5.1 匿名访问ftp服务

ftp://xx.xxx.xxx.xx 访问时超时或者无法访问

5.2 使用Winscp Root角色登陆 提示 Permission denied.

ftpusers文件

查看root角色是否在 不能访问 ftp server 的用户列表/etc/vsftpd/ftpusers中,如果在删除

user_list文件

查看root角色是否在 允许访问 ftp server 的用户列表/etc/vsftpd/user_list中,如果不在就添加

If userlist_deny=NO, only allow users in this file

If userlist_deny=YES (default), never allow users in this file, and

5.3 /var/log/vsftpd.log 不存在或者为空

1.为空 可能是没有登陆行为

2.vsftpd.conf 没有添加 dual_log_enable=YES 配置项

5.4 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list

参考

/etc/vsftpd/vsftpd.conf #编辑vsftpd配置文件

找到以下三行,注释掉就行可以了

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

改为

#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list

重启FTP

systemctl restart vsftpd

Winscp登陆访问ftp时 提示“监测到超时! (数据连接) 无法获得目录列表 列出‘/‘的目录项时出错。”

参考

阿里云轻型应用服务器 公网连接vsftpd连接不上

参考

  1. 检查一下阿里云服务器防火墙20-21端口是否开放
  2. 配置完如果发现没有生效 重启一下服务器 再试

打开FTP 服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹 FTP

解决方法1 地址栏\改为// 试试

参考

总结

本节主要介绍了vsftp的安装和使用,有问题的可以评论留言


参考:

Linux使用笔记:配置FTP服务器(vsftp)

VSFTP介绍安装使用

centos7搭建vsftpd-配置文件全解

阿里云的esc ftp搭建

vsftpd日志配置

《linux就该这么学》之 vsftpd


相关文章
|
1月前
|
Linux 网络安全 数据安全/隐私保护
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
156 0
|
2月前
|
关系型数据库 MySQL Linux
centos7.0环境下安装MySql_8.0.12
centos7.0环境下安装MySql_8.0.12
|
1月前
|
存储 JavaScript Linux
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
|
1天前
|
存储 Linux 网络安全
centos7使用yum网络安装
这些是使用Yum进行网络安装的基本步骤。根据你的需求,你可以重复步骤3和4来安装其他软件包。请注意,执行Yum操作需要root或具有sudo权限的用户。
12 1
|
7天前
|
关系型数据库 MySQL Linux
centos7安装mysql-带网盘安装包
centos7安装mysql-带网盘安装包
44 2
|
14天前
|
网络协议
centos8 网卡 Nmcli(是network的简写 Nmcli)配置网络
centos8 网卡 Nmcli(是network的简写 Nmcli)配置网络
15 0
|
14天前
|
存储 Linux Shell
centos 部署docker容器 安装 、基本使用方法(一)
centos 部署docker容器 安装 、基本使用方法(一)
25 0
|
14天前
|
分布式计算 Hadoop Java
centos 部署Hadoop-3.0-高性能集群(一)安装
centos 部署Hadoop-3.0-高性能集群(一)安装
15 0
|
14天前
|
关系型数据库 MySQL Linux
CentOS 7 下使用yum安装MySQL5.7.20 最简单 图文详解
CentOS 7 下使用yum安装MySQL5.7.20 最简单 图文详解
68 0
|
20天前
|
IDE Linux 开发工具
CentOS7.4+REDHAWK2.3.1安装教程——折腾篇
CentOS7.4+REDHAWK2.3.1安装教程——折腾篇
19 0