前言:
当前你们对“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