上文:Linux服务器配置-VSFTP服务配置(四)
使用虚拟用户登陆FTP服务器是最安全的一种认证模式,由于用于登陆FTP服务器的用户名在Linux中不是真实存在的(非本地用户),虽然通过抓包工具得到了用户名及密码,也不能用于登陆Linux系统。
一、配置前的打算工作
1、安装db4-utils软件包
因为在配置时,须要使用db_load,用哈希(hash)算法将明文的虚拟用户秘钥文件转换成数据库文件,所以须要安装db4-utils这个软件包。
yuminstall-ydb4-utils
2、db_load说明
句型:db_load[-nTV][-cname=value][-ffile][-hhome][-Ppassword][-tbtree|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系统:
CentOSrelease6.10(Final)
vsftpd-2.2.2-24.el6.x86_64
RHEL7系统
RedHatEnterpriseLinuxServerrelease7.6(Maipo)
vsftpd-3.0.2-25.el7.x86_64
服务器配置要求:
2、防火墙配置。
vsftpd服务的防火墙配置已在—Linux服务器配置-VSFTP服务配置(三)中加以说明,这儿不再重复。
3、创建虚拟用户明文秘钥文件。
文件的内容是:质数行为虚拟用户名、偶数行为用户密码。当FTP虚拟用户与本地用户重名时,为了系统安全访问FTP服务器的密码一定不要与登陆Linux系统的密码相同。
vim/etc/vsftpd/virusers.txt
4、生成虚拟用户秘钥认证数据库文件。
将明文秘钥文件,使用db_load转化成数据库文件。为了安全起见,再转化为数据库文件后,可删掉后面创建的虚拟用户明文秘钥文件。
db_load-T-thash-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命令生成的数据库文件的路径,但不写数据库文件的后缀名。
authrequiredpam_userdb.sodb=/etc/vsftpd/virusers
accountrequiredpam_userdb.sodb=/etc/vsftpd/virusers
另外,可单独在/etc/pam.d/目录中创建用于虚拟用户的PAM认证文件,但须要在vsftpd服务配置文件中,更改pam_service_name配置项来加以明晰。
6、创建本地映射用户linux系统下载官网,并设置FTP目录的权限。
在Linux系统中文件都有所有者、所属组的属性,当使用虚拟用户创建文件时,都会造成文件权限出现错误(由于虚拟用户不是系统本地用户)。因此,须要创建一个本地映射用户,也就是说suse linux,让虚拟用户默认登陆到与之有映射关系的这个本地用户的目录中,虚拟用户创建的文件的属性都归属于这个本地用户。为了安全起见,可将这个本地用户设置为不容许登陆Linux服务器。
adduser-d/var/vftproot-s/sbin/nologinvirftp
chmod-R755/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服务
servicevsftpdrestart
systemctlrestartvsftpd
10、为虚拟用户单独创建配置文件及相应目录,已调整各个虚拟用户的不同访问权限。
同过上述配置及主配置文件可以看出,现今所有虚拟用户的访问权限为:所有虚拟用户都可以登入FTP服务器linux 数据库服务器,FTP的家目录为/var/vftprootlinux 数据库服务器,并具有浏览和下载文件的权限。
创建自定义虚拟用户配置文件所在的目录
mkdir-p/etc/vsftpd/vuser_config
为虚拟用户单独创建配置文件及相应目录
vim/etc/vsftpd/vuser_config/snowfox#创建snowfox虚拟用户的配置文件
加入以下配置项:
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
mkdir/var/vftproot/wendy#创建wendy虚拟用户家目录
chownvirftp:virftp/var/vftproot/wendy/#修改目录的所有者及所属组为本地映射用户virftp
chmod755/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
因为vsftpd的主配置文件,早已满足了itcat虚拟用户的要求,顾不需为其完善单独的配置文件。
11、SELinux设置
修改vsftp的SELinux布尔变量
setsebool-Pftp_home_diron
setsebool-Pallow_ftpd_full_accesson
setsebool-Pftpd_full_accesson
12、验证配置结果
以上是我在学习Linux系统中整理的一些学习要点,肯定会有不对的地方,希望诸位高手给予见谅,我们共同学习!感谢!
上篇:Linux服务器配置-VSFTP服务配置(六)
通过实例说明数据库+虚拟用户配置登陆FTP服务器。
本文原创地址://q13zd.cn/lfwqpzvfwpzs.html编辑:刘遄,审核员:暂无