龙空技术网

Linux服务器配置-VSFTP服务配置(五)

itcat5225 205

前言:

当前你们对“centos7没有vsftpd”可能比较看重,姐妹们都想要剖析一些“centos7没有vsftpd”的相关知识。那么小编在网络上搜集了一些对于“centos7没有vsftpd””的相关内容,希望兄弟们能喜欢,同学们快快来学习一下吧!

上文:Linux服务器配置-VSFTP服务配置(四)

使用虚拟用户认证登录FTP服务器是最安全的一种认证模式,因为用于登录FTP服务器的用户名在Linux系统中不是真实存在的(非本地用户),即使通过抓包工具得到了用户名及密码,也不能用于登录Linux系统。

一、配置前的准备工作

1、安装db4-utils软件包

由于在配置时,需要使用db_load命令,用哈希(hash)算法将明文的虚拟用户密钥文件转换成数据库文件,所以需要安装db4-utils这个软件包。

yum install -y db4-utils

2、db_load命令说明

语法:db_load [-nTV] [-c name=value] [-f file] [-h home] [-P password] [-t btree | hash | recno | queue] db_file

选项:

-T 允许应用程序能够将文本文件转译载入进数据库。如果指定了选项-T,那么一定要追跟子选项-t

-t 子选项-t追加在-T选项后,用来指定转译载入的数据库类型,-t可以指定的数据类型有Btree、Hash、Queue和Recon数据库。

-f 参数后面接包含用户名和密码的文本文件,文件的内容是:奇数行为用户名、偶数行为密码。

3、配置文件相关配置项重点说明

a、因为虚拟用户是通过映射本地用户来登录FTP的,所以配置文件中local_enable配置项必须设为YES(local_enable=YES)。

b、虚拟用户的权限控制是使用匿名用户的配置项来实现的,要想虚拟用户具有写操作的权限,可以通过以下配置项来实现,另外将配置项anonymous_enable设为NO,并不影响虚拟用户登录FTP服务器。

anon_upload_enable=YES|NO

anon_other_write_enable=YES|NO

anon_mkdir_write_enable=YES|NO

配置项具体解释请参见—Linux服务器配置-VSFTP服务配置(二)。

c、用户访问控制配置项,也适用于虚拟用户配置,可根据具体配置情况,将不允许访问FTP的虚拟用户添加到访问控制列表中。

userlist_enable=YES|NO

userlist_deny=YES|NO

userlist_file=/etc/vsftpd/user_list

配置项具体解释请参见—Linux服务器配置-VSFTP服务配置(四)。

d、通过user_config_dir设置项,可以为每个虚拟用户设置不同的配置文件,但配置文件名需与虚拟用户名相同。没有单独配置文件的虚拟用户,适用于主配置文件。

二、实例说明使用数据库文件方式配置虚拟用户认证登录FTP服务器

1、配置软件环境说明。

CentOS6系统:

CentOS release 6.10 (Final)

vsftpd-2.2.2-24.el6.x86_64

RHEL7系统

Red Hat Enterprise Linux Server release 7.6 (Maipo)

vsftpd-3.0.2-25.el7.x86_64

服务器配置要求:

FTP服务采用被动模式运行,只允许虚拟用户登录,并将被动端口锁定在59800-59900之间。虚拟用户snowfox为FTP管理员,其FTP根目录设定在/var/vftproot目录中,该用户具有可下载、上传、新建目录(文件)、更名、及删除文件的权限。虚拟用户wendy为一般用户,其FTP根目录设定在/var/vftproot/wendy目录中(即只能访问自己的FTP目录),该用户具有可下载、上传、新建目录(文件)、更名、及删除文件的权限。虚拟用户itcat为一般用户,其FTP根目录设定在/var/vftproot目录中(即可访问其他用户FTP目录),该用户只有查看和下载文件的权限。

2、防火墙配置。

vsftpd服务的防火墙配置已在—Linux服务器配置-VSFTP服务配置(三)中加以说明,这里不再重复。

3、创建虚拟用户明文密钥文件。

文件的内容是:奇数行为虚拟用户名、偶数行为用户密码。当FTP虚拟用户与本地用户重名时,为了系统安全访问FTP服务器的密码一定不要与登录Linux系统的密码相同。

vim /etc/vsftpd/virusers.txt

4、生成虚拟用户密钥认证数据库文件。

将明文密钥文件,使用db_load命令转化成数据库文件。为了安全起见,再转化为数据库文件后,可删除前面创建的虚拟用户明文密钥文件。

db_load -T -t hash -f /etc/vsftpd/virusers.txt /etc/vsftpd/virusers.db

5、编辑 vsftpd 服务的PAM认证文件(/etc/pam.d/vsftpd)。

vim /etc/pam.d/vsftpd

在PAM认证文件中,加入以下两行,并注释掉其他行。其他行为本地用户登陆时的验证项。另外,PAM认证文件中“db=”的参数为使用db_load命令生成的数据库文件的路径,但不写数据库文件的后缀名。

auth required pam_userdb.so db=/etc/vsftpd/virusers

account required pam_userdb.so db=/etc/vsftpd/virusers

另外,可单独在/etc/pam.d/目录中创建用于虚拟用户的PAM认证文件,但需要在 vsftpd 服务配置文件中,修改pam_service_name配置项来加以明确。

6、创建本地映射用户,并设置FTP目录的权限。

在Linux系统中文件都有所有者、所属组的属性,当使用虚拟用户创建文件时,就会导致文件权限出现错误(因为虚拟用户不是系统本地用户)。为此,需要创建一个本地映射用户,也就是说,让虚拟用户默认登录到与之有映射关系的这个本地用户的目录中,虚拟用户创建的文件的属性都归属于这个本地用户。为了安全起见,可将这个本地用户设置为不允许登录Linux服务器。

adduser -d /var/vftproot -s /sbin/nologin virftp

chmod -R 755 /var/vftproot

7、备份配置文件

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

8、修改配置文件

vim /etc/vsftpd/vsftpd.conf

listen_port=21

connect_from_port_20=NO

pasv_enable=YES

pasv_min_port=59800

pasv_max_port=59900

listen=YES

listen_ipv6=NO

max_clients=0

max_per_ip=0

one_process_model=NO

accept_timeout=60

data_connection_timeout=300

idle_session_timeout=300

dirmessage_enable=YES

message_file=.message

write_enable=YES

download_enable=YES

chroot_local_user=YES

tcp_wrappers=YES

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd/user_list

xferlog_enable=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

use_localtime=YES

anonymous_enable=NO

anon_umask=022

local_enable=YES

guest_enable=YES

guest_username=virftp

virtual_use_local_privs=NO

user_config_dir=/etc/vsftpd/vuser_config

pam_service_name=vsftpd

在RHEL7系统中,配置文件还需要加入以下配置项。

allow_writeable_chroot=YES

新版(2.3.5以上)的 vsftpd 程序为了安全,FTP目录没有写权限,才允许用户登录,也可将此项设置为YES。

9、重启vsftpd服务

CentOS6系统

service vsftpd restart

RHEL7系统

systemctl restart vsftpd

10、为虚拟用户单独创建配置文件及相应目录,已调整各个虚拟用户的不同访问权限。

同过上述配置及主配置文件可以看出,现在所有虚拟用户的访问权限为:所有虚拟用户都可以登录FTP服务器,FTP的家目录为/var/vftproot,并具有浏览和下载文件的权限。

创建自定义虚拟用户配置文件所在的目录

mkdir -p /etc/vsftpd/vuser_config

为虚拟用户单独创建配置文件及相应目录

snowfox虚拟用户

vim /etc/vsftpd/vuser_config/snowfox #创建snowfox虚拟用户的配置文件

加入以下配置项:

anon_upload_enable=YES

anon_other_write_enable=YES

anon_mkdir_write_enable=YES

wendy虚拟用户

mkdir /var/vftproot/wendy #创建wendy虚拟用户家目录

chown virftp:virftp /var/vftproot/wendy/ #更改目录的所有者及所属组为本地映射用户virftp

chmod 755 /var/vftproot/wendy/ #更改目录权限

vim /etc/vsftpd/vuser_config/wendy #创建wendy虚拟用户的配置文件

加入以下配置项:

local_root=/var/vftproot/wendy

anon_upload_enable=YES

anon_other_write_enable=YES

anon_mkdir_write_enable=YES

itcat虚拟用户

由于vsftpd的主配置文件,已经满足了itcat虚拟用户的要求,顾不需为其建立单独的配置文件。

11、SELinux设置

CentOS6系统

更改vsftp的SELinux布尔变量

setsebool -P ftp_home_dir on

setsebool -P allow_ftpd_full_access on

RHEL7系统

setsebool -P ftpd_full_access on

12、验证配置结果

snowfox用户登录认证wendy用户登录认证itcat用户登录认证

以上是我在学习Linux系统中整理的一些学习要点,肯定会有不对的地方,希望各位大侠给与指正,我们共同学习!谢谢!

下篇:Linux服务器配置-VSFTP服务配置(六)

通过实例说明数据库+虚拟用户配置登录FTP服务器。

标签: #centos7没有vsftpd