本文向您展示了如何配置VSFTP+MySQL虚拟用户。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。
VSFTPD是UNIX/Linux中非常安全、快速的FTP服务器,已经被很多大型网站采用。VSFTPD支持将用户名和密码保存在数据库文件或数据库服务器中。VSFTPD将这种形式的用户称为虚拟用户。与FTP的本地(系统)用户相比,虚拟用户是FTP服务器的独占用户,虚拟用户只能访问FTP服务器提供的资源,大大增强了系统本身的安全性。与匿名用户相比,虚拟用户需要用户名和密码来获取FTP服务器中的文件,增加了用户和下载的可管理性。需要提供下载服务,但不希望大家匿名下载;虚拟用户是FTP站点的一个很好的解决方案,需要对下载用户进行管理,并考虑主机安全性和方便管理。介绍了如何在红帽Linux 9上的MySQL数据库服务器中保存VSFTPD的虚拟用户名和密码。
一、VSFTPD的安装
目前VSFTPD的最新版本是1.2.0版本。官方下载地址为FTP ://vsftpd . guest . org/users/ce vans/vsftpd-1 . 2 . 0 . tar . gz,安装前需要做好以下准备工作:
VSFTPD的默认配置中需要“无人”用户。将此用户添加到系统中。如果用户已经存在,useradd命令将相应地提示您。
[root@hpe45 root]# useradd nobody
useradd:用户无人存在
在VSFTPD的默认配置中需要“/usr/share/empty”目录。在系统的这个目录中,如果目录已经存在,mkdir命令会相应地提示您。
[root @ hpe 45 root]# mkdir/usr/share/empty/
mkdir:无法创建目录'/usr/share/empty':文件存在
当VSftpD提供匿名FTP服务时,需要“FTP”用户和有效的匿名目录。
[root @ hpe 45 root]# mkdir/var/FTP/
[root @ hpe 45 root]# user add-d/var/FTP FTP FTP
以下操作对于ftp用户是否已经存在很有用。
[root @ hpe 45 root]# chown root . root/var/FTP
[root @ hpe 45 root]# chmod og-w/var/FTP
以上准备工作完成后,我们就可以开始编译源代码了。假设我们下载的vsftpd-1.2.0.tar.gz位于/根目录下,执行以下命令:
[root @ hpe 45 root]# tar zxvf vsftpd-1.2.0.tar.gz
[root @ hpe 45 root]# CD vsftpd-1 . 2 . 0
[root@hpe45 vsftpd-1.2.0]# make
[root@hpe45 vsftpd-1.2.0]#进行安装
上面的“make install”命令复制了编译后的二进制文件、手册等。到相应的目录。在RHL9上,您可能需要手动执行以下复制:
[root @ hpe 45 vsftpd-1 . 2 . 0]# CP vsftpd/usr/local/sbin/vsftpd
[root @ hpe 45 vsftpd-1 . 2 . 0]# CP vsftpd . conf . 5/usr/local/share/man/man5
[root @ hpe 45 vsftpd-1 . 2 . 0]# CP vsftpd . 8/usr/local/share/man/man 8
接下来,我们复制一个简单的配置文件,作为以后修改的基础。
[root @ hpe 45 vsftpd-1 . 2 . 0]# CP vsftpd . conf/等
[root @ hpe 45 vsftpd-1 . 2 . 0]# CP RedHat/vsftpd . PAM/etc/PAM . d/FTP
复制PAM身份验证文件,以允许本地用户登录到VSFTPD。
[root @ hpe 45 vsftpd-1 . 2 . 0]# CP RedHat/vsftpd . PAM/etc/PAM . d/FTP
二、创建guest用户
VSFTPD使用PAM对虚拟用户进行身份验证。由于虚拟用户的用户名/密码是单独保存的,因此在验证时,VSFTPD需要使用系统用户的身份读取数据库文件或数据库服务器来完成验证,是VSFTPD的来宾用户。就像匿名用户也需要有系统用户ftp一样。当然,我们也可以将访客用户视为系统中虚拟用户的代表。接下来,将vsftpdguest用户作为VSFTPD的来宾添加到系统中。
[root@hpe45 vsftpd-1。
2.0]# useradd vsftpdguest
当虚拟用户登录后,所在的位置为vsftpdguest的自家目录/home/vsftpdguest。如果要让虚拟用户登录到/var/ftp等其他目录,修改vsftpdguest的自家目录即可。
三、设置VSFTPD配置文件
在/etc/vsftpd.conf文件中,加入以下选项:
guest_enable=YES
guest_username=vsftpdguest
然后执行以下命令,让VSFTPD在后台运行:
[root@hpe45 vsftpd-1.2.0]# /usr/local/sbin/vsftpd &
四、将虚拟用户保存在MySQL数据库服务器中
我们建立数据库vsftpdvu,表users,字段name和passwd用于保存虚拟用户的用户名和口令,同时增加两个虚拟用户xiaotong和xiaowang。
[root@hpe45 vsftpd-1.2.0]# mysql -p
mysql>create database vsftpdvu;
mysql>use vsftpdvu;
mysql>create table users(name char(16) binary,passwd char(16) binary);
mysql>insert into users (name,passwd) values ('xiaotong',password('qqmywife'));
mysql>insert into users (name,passwd) values ('xiaowang',password('ttmywife'));
mysql>quit
然后,授权vsftpdguest可以读vsftpdvu数据库的users表。执行以下命令:
[root@hpe45 vsftpd-1.2.0]# mysql -u root mysql -p
mysql>grant select on vsftpdvu.users to vsftpdguest@localhost identified by 'i52serial0';
mysql>quit
如果要验证刚才的操作是否成功可以执行下面命令:
[root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu
mysql>select * from users;
如果成功,将会列出xiaotong、xiaowang和加密后的密码
五、设置MySQL的PAM验证
这里我们要用到一个利用mysql进行pam验证的开源项目(http://sourceforge.net/projects/pam-mysql/)。首先从网站下载它的程序包pam_myql-0.5.tar.gz,复制到/root目录中。在编译安装之前,要确保mysql-devel的RPM包已经安装在你的机器上,如果没有请从RHL安装光盘中安装该包。然后,执行以下命令:
[root@hpe45 root]#tar xvzf pam_mysql-0.5.tar.gz
[root@hpe45 root]#cd pam_mysql
[root@hpe45 pam_mysql]#make
[root@hpe45 pam_mysql]#make install
make install这一步可能会出现错误,那只好手动将该目录下生成的pam_mysql.o复制到/lib/security目录下。
接下来,我们要设置vsftpd的PAM验证文件。打开/etc/pam.d/ftp文件,加入以下内容:
auth required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
account required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
上面涉及到的参数,只要对应前面数据库的设置就可以明白它们的含义。这里需要说明的是crypt参数。crypt表示口令字段中口令的加密方式:crypt=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。
六、进一步的虚拟用户设置
经过以上的步骤,虚拟用户就可以正常使用了。这里介绍进一步的虚拟用户设置。首先,介绍虚拟用户的权限设置。
VSFTPD-1.2.0新添了virtual_use_local_privs参数,当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限,这也就是VSFTPD-1.2.0之前版本对虚拟用户权限的处理方法。这两者种做法相比,后者更加严格一些,特别是在有写访问的情形下。默认情况下此参数是关闭的(NO)。
当virtual_use_local_privs=YES时,只需设置write_enable=YES,虚拟用户就可以就拥有写权限。而virtual_use_local_privs=NO时,对虚拟用户权限的设置就更多一些更严格一些。
控制虚拟用户浏览目录:如果让用户不能浏览目录,但仍可以对文件操作,那么需要执行以下二个步骤:一,配置文件中,anon_world_readable_only=YES。二,虚拟用户目录的权限改为只能由vsftpdguest操作:
[root@hpe45 root]# chown vsftpdguest.vsftpdguest /home/vsftpdguest
[root@hpe45 root]# chmod 700 /home/vsftpdguest
允许虚拟用户上传文件:
write_enable=YES
anon_upload_enable=YES
允许虚拟用户修改文件名和删除文件:
anon_other_write_enable=YES
由于以上选项的设置同样会对匿名用户生效。如果不想匿名用户趁机拥有同样的权限,最好是禁止匿名用户登录。
其次,由于虚拟用户在系统中是vsftpdguest身份,所以可以访问到系统的其他目录。为了更加安全,我们可以将虚拟用户限制在自家目录下。有两种做法:一,在配置文件中增加以下选项
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
然后,在/etc/vsftpd.chroot_list文件中加入虚拟用户名xiaotong和xiaowang。
第二种做法,在配置文件中修改chroot_local_user=YES。
经过修改后,虚拟用户登录后其根目录就限制在/home/vsftpdguest下,无法访问其他目录。
七、虚拟用户的个人目录
大家可以发现,无论是哪个虚拟用户,登录后所在的目录都是/home/vsftpdguest,即都是guest_username用户的自家目录。下面,介绍如何为每个虚拟用户建立自家目录。首先,在主配置文件中加入以下选项:
user_config_dir=/etc/vsftpd/vsftpd_user_conf
然后,生成/etc/vsftpd/vsftpd_user_conf目录,并在该目录下建立与特定虚拟用户同名的文件:
[root@hpe45 root]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@hpe45 root]# cd /etc/vsftpd/vsftpd_user_conf
上述内容就是如何进行VSFTP+MySQL虚拟用户配置,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/107004.html