CentOS7下的文件传输:VSFTP部署

前言

在之前的博客中,简单地介绍了VSFTP,对于VSFTP服务不是很了解的可以转到===>传送门

此篇主要写了VSFTP服务的各种搭建方式,根据安全性可做具体选择。

配置文件备份及说明

环境要求:一台服务器,测试客户机
服务器IP地址:192.1681.124
客户机:能通信即可

vsftpd服务程序的主配置文件位于/etc/vsftpd/目录下,共享目录默认为/var/ftp目录。

[root@linus ~]# ls /etc/vsftpd/
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@linus ~]# ll /var/ | grep ftp
drwxr-xr-x.  3 root root    17 42 18:19 ftp

源文件注释项很多,都用于说明,没有实际功能。通常的做法是将源文件做备份,然后将去除注释行和空行的输出重定向主配置文件。

[root@linus ~]# cat /etc/vsftpd/vsftpd.conf.bak |grep -v ^# | grep -v ^$ >/etc/vsftpd/vsftpd.conf
[root@linus ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

参数说明

参数 作用
listen=[YES|NO] 是否以独立运行的方式监听服务
listen_address=IP地址 设置要监听的IP地址
listen_port=21 设置FTP服务的监听端口
download_enable=[YES|NO] 是否允许下载文件
userlist_enable=[YES|NO] 设置用户列表为“允许”
userlist_deny=[YES|NO] 设置用户列表为“拒绝”
max_clients=0 最大客户端连接数,0为不限制
max_per_ip=0 同一IP地址的最大连接数,0为不限制
anonymous_enable=[YES|NO] 是否允许匿名用户访问
anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件
anon_umask=022 匿名用户上传文件的umask值
anon_root=/var/ftp 匿名用户的FTP根目录
anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO] 是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0 匿名用户的最大传输速率(字节/秒),0为不限制
local_enable=[YES|NO] 是否允许本地用户登录FTP
local_umask=022 本地用户上传文件的umask值
local_root=/var/ftp 本地用户的FTP根目录
chroot_local_user=[YES|NO] 是否将用户权限禁锢在FTP目录,以确保安全
local_max_rate=0 本地用户最大传输速率(字节/秒),0为不限制

认证方式

也就是访问FTP服务的方式,共三种:

匿名访问模式:不安全认证方式,任何人都可以无需账户与密码登录FTP服务器,访问共享资源。

本地用户模式:看名字就可以猜到,是通过系统本地的用户账户登录FTP服务器,相对于匿名访问,具有一定的安全性。

虚拟用户模式:为FTP服务创建用户数据库文件,是在系统中不实际存在的用户,只用于FTP的口令验证。这样,即使被破解了账户信息也无法登录服务器,是三种中最安全的认证模式。

匿名访问模式

anon开头的配置项是匿名模式的配置项
与匿名访问的配置项:
anonymous_enable=[YES|NO]:是否允许匿名用户访问
anon_upload_enable=[YES|NO]:是否允许匿名用户上传文件|
anon_umask=022:匿名用户上传文件的umask值
anon_root=/var/ftp:匿名用户的FTP根目录
anon_mkdir_write_enable=[YES|NO]:是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO]:是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0:匿名用户的最大传输速率(字节/秒),0为不限制
local_enable=[YES|NO]:是否允许本地用户登录FTP

把注释项去掉的主配置文件,则匿名访问的配置项只留下了一个

[root@linus ~]# cat /etc/vsftpd/vsftpd.conf | grep ^anon
anonymous_enable=YES

想增加什么功能,只需要添加到配置文件中即可。对于匿名模式,既然没有限制用户访问,那么对于权限的控制就比较重要了,以免文件被误删除。

以下为我常用的配置项

[root@linus ~]# cat /etc/vsftpd/vsftpd.conf | grep ^anon
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_root=/var/ftp

创建测试文件,并给予其权限

[root@linus ~]# touch /var/ftp/pub/test.txt
[root@linus ~]# chmod +777 /var/ftp/pub/test.txt

重启服务生效

[root@linus ~]# systemctl restart vsftpd

测试效果
在这里插入图片描述

本地用户模式

本地用户模式主要配置项
anonymous_enable=NO:禁止匿名访问模式
local_enable=YES:允许本地用户模式
write_enable=YES:设置可写权限
local_umask=022:本地用户模式创建文件的umask值
userlist_enable=YES:启用“禁止用户名单”,名单文件为ftpusers和user_list
userlist_deny=YES :开启用户作用名单文件功能
local_root=/var/ftp:本地用户的FTP根目录
chroot_local_user=YES:是否将用户权限禁锢在FTP目录,以确保安全

将配置文件进行更改

[root@linus ~]# cat /etc/vsftpd/vsftpd.conf | grep -E "^local|^anonymous|^userlist|^chroot"
anonymous_enable=NO
local_enable=YES
local_umask=022
userlist_deny=YES
userlist_enable=YES
local_root=/var/ftp
chroot_local_user=YES

创建本地用户,用于测试

[root@linus ~]# useradd test
[root@linus ~]# passwd test
更改用户 test 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

重新加载配置文件

[root@linus ~]# systemctl restart vsftpd

访问测试,先试一下匿名访问
在这里插入图片描述
直接点击登录后会发现,没有访问进去,不允许匿名访问,我们换成本地用户访问。

在这里插入图片描述
在这里插入图片描述
访问成功。

对于其中userlist_enable和userlist_deny这两个配置项,在说明之前,先来看看两个文件

[root@linus ~]# ls /etc/vsftpd/
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

其中ftpusers和user_list文件,就是那两项配置的相关文件,查看user_list文件

[root@linus ~]# cat /etc/vsftpd/user_list | grep ^# 
# vsftpd userlist	
# If userlist_deny=NO, only allow users in this file	#如果userlist_deny=NO,则只允许该文件中的用户
# If userlist_deny=YES (default), never allow users in this file, and	#如果userlist_deny=YES(默认值),则永远不允许此文件中的用户
# do not even prompt for a password.	#并且
甚至不要提示输入密码。
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers	#注意,默认的vsftpd pam配置也会检查/etc/ vsftpdf /ftpusers
# for users that are denied.	#用于被拒绝的用户。

然后查看ftpusers

[root@linus ~]# cat /etc/vsftpd/ftpusers | grep ^# 
# Users that are not allowed to login via ftp	#不允许通过ftp登录的sers

可以看到,root用户默认不允许登录ftp,在不修改配置的情况下,将其在文件中去除即可。

虚拟用户模式

虚拟用户模式主要配置文件

anonymous_enable=NO:禁止匿名开放模式
local_enable=YES:允许本地用户模式
guest_enable=YES:开启虚拟用户模式
guest_username=ftpuser:指定虚拟用户账户
pam_service_name=vsftpd.vu:指定PAM文件
allow_writeable_chroot=YES:允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
user_config_dir=/etc/vsftpd/vsftpd_user_conf:虚拟用户配置文件的存放目录

创建虚拟用户文件

[root@linus ~]# vim /etc/vsftpd/login_user.list
u1
hahaha.com
u2
hehehe.com

单为账号,双为密码,接着通过db_load命令将/etc/vsftpd/login_user.list文件生成虚拟用户认证数据库文件/etc/vsftpd/login_user.db,并且降低数据库文件的权限。

[root@linus ~]# db_load -T -t hash -f /etc/vsftpd/login_user.list /etc/vsftpd/login_user.db

将保存虚拟用户认证数据库文件的权限更改为只对 root 用户可读写(600权限)

[root@linus ~]# chmod 600 /etc/vsftpd/login_user.*
[root@linus ~]# file /etc/vsftpd/login_user.db 
/etc/vsftpd/login_user.db: Berkeley DB (Hash, version 9, native byte-order)

添加系统用户ftpuser,来对应所有虚拟用户。禁止ftpuser登录系统,宿主目录 /home/ftpuser(宿主目录用来充当ftp的根目录,增强安全性)

useradd -d /home/ftpuser  -s /sbin/nologin ftpuser

调整 /home/ftpuser 权限为755,以允许浏览目录

chmod 755 /home/ftpuser 

在/etc/pam.d/新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径

[root@linus ~]# vim /etc/pam.d/vsftpd.vu
auth required   pam_userdb.so  db=/etc/vsftpd/login_user
account    required   pam_userdb.so  db=/etc/vsftpd/login_user

创建/etc/vsftpd/vsftpd_user_conf/目录,用于存放虚拟用户的配置文件

[root@linus ~]# mkdir /etc/vsftpd/vsftpd_user_conf

创建虚拟用户配置文件,例如:/etc/vsftpd/vsftpd_user_conf/u1,虚拟账户同名,其中的配置以匿名参数作为配置

[root@linus ~]# vim /etc/vsftpd/vsftpd_user_conf/u1
anon_world_readable_only=NO	#【浏览FTP目录和下载】
anon_upload_enable=YES		#【允许用户上传】
anon_mkdir_write_enable=YES	#【允许建立和删除目录】
anon_other_write_enable=YES	#【允许改名、覆盖、删除文件】

对u2进行配置

[root@linus ~]# vim /etc/vsftpd/vsftpd_user_conf/u2
anon_world_readable_only=NO	#【浏览FTP目录和下载】
anon_upload_enable=NO		#【允许用户上传】
anon_mkdir_write_enable=NO	#【允许建立和删除目录】
anon_other_write_enable=NO	#【允许改名、覆盖、删除文件】

对主配置文件进行修改

[root@linus ~]# cat /etc/vsftpd/vsftpd.conf | grep -E "^g|^pam|^allow|^local_root"
pam_service_name=vsftpd
local_root=/home/ftpuser
guest_enable=YES
guest_username=ftpuser
pam_service_name=vsftpd.vu
allow_writeable_chroot=YES

创建测试文件,这里我们将源共享目录/var/ftp改为了/home/ftpuser,所以要在其目录创建测试文件

[root@linus ~]# touch /home/ftpuser/test.txt
[root@linus ~]# chmod +777 /home/ftpuser/test.txt 

重启服务,然后进行测试操作

[root@linus ~]# systemctl restart vsftpd

使用虚拟用户进行访问
在这里插入图片描述
在这里插入图片描述
访问完成。

发布了167 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42534026/article/details/105225133