您的位置:首页 > 数据库 > SQL

利用mysql搭建vsftpd虚拟用户登录服务

2008-08-04 14:33 483 查看
1、vsftpd 的安装
vsftpd-2.0.5-10.el5

2、安装支持包和配置文件:
a.安装必要的支持文件
db4-utils-4.3.29-9.fc6
db4-4.3.29-9.fc6
db4-devel-4.3.29-9.fc6
b、配置
第一步:建立本地虚拟用户
Mkdir /home/vsftpd
useradd -d /home/vsftpd -s /sbin/nologin -M virtual
新建virtual用户,指定主目录为/home/vsftpd (该目录实际存在)
第二步:建立vsftpd.conf文件
Vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
listen=YES
pam_service_name=ftp
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999

3、将虚拟用户保存在MySQL数据库服务器中
A.设置MySQL的PAM验证
这里我们要用到一个利用mysql进行pam验证的开源项目(http://sourceforge.net/projects/pam-mysql/)。首先从网站下载它的程序包pam_myql-0.6.2.tar.gz,复制到/root目录中。在编译安装之前,要确保mysql-devel的RPM包已经安装在你的机器上,如果没有请从RHL安装光盘中安装该包。然后,执行以下命令:
[root@localhost root]# tar -zxvf pam_mysql-0.6.2.tar.gz
[root@localhost root]# cd pam_mysql-0.6.2
[root@localhost pam_mysql]# ./configure
(如果mysql用源代码包安装则要加参数—with-mysql=/usr/local/mysql)
[root@localhost pam_mysql]#make
[root@localhost pam_mysql]#make install
  make install这一步可能会出现错误,那只好手动将该目录下生成的pam_mysql.so复制到/usr/lib/security目录下。
  接下来,我们要设置vsftpd的PAM验证文件。打开/etc/pam.d/ftp文件,加入以下内容:
auth required /usr/lib/security/pam_mysql.so user=virtual passwd=pwd@520 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
account required /usr/lib/security/pam_mysql.so user=virtual passwd=pwd@520 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
上面涉及到的参数,只要对应前面数据库的设置就可以明白它们的含义。这里需要说明的是crypt参数。crypt表示口令字段中口令的加密方式:crypt=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。
B、建立数据库
建立数据库vsftpd,表users,字段name和passwd用于保存虚拟用户的用户名和口令,同时增加两个虚拟用户benet和aptech。
  [root@localhost vsftpd]# mysql -p
  mysql>create database vsftpd;
  mysql>use vsftpd;
  mysql>create table users(name char(16) binary,passwd char(16) binary);
  mysql>insert into users (name,passwd) values ('benet','123456');
  mysql>insert into users (name,passwd) values ('aptech','123456');
mysql>quit
然后,授权vitrual可以读vsftpd数据库的users表。执行以下命令:
  [root@localhost vsftpd]# mysql -u root mysql -p
mysql>grant select on vsftpd.users to virtual@localhost identified by 'pwd@520';
  mysql>quit
 如果要验证刚才的操作是否成功可以执行下面命令:
  [root@localhost vsftpd]#mysql -u virtual –ppwd@520 vsftpd
  mysql>select * from users;
  如果成功,将会列出benet、加密后的密码
  
4、进一步的虚拟用户设置
经过以上的步骤,虚拟用户就可以正常使用了。这里介绍进一步的虚拟用户设置。首先,介绍虚拟用户的权限设置。
  VSFTPD新添了virtual_use_local_privs参数,当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限,这也就是VSFTPD之前版本对虚拟用户权限的处理方法。这两者种做法相比,后者更加严格一些,特别是在有写访问的情形下。默认情况下此参数是关闭的(NO)。
  当virtual_use_local_privs=YES时,只需设置write_enable=YES,虚拟用户就可以就拥有写权限。而virtual_use_local_privs=NO时,对虚拟用户权限的设置就更多一些更严格一些。
  控制虚拟用户浏览目录:如果让用户不能浏览目录,但仍可以对文件操作,那么需要执行以下二个步骤:一,配置文件中,anon_world_readable_only=YES。二,虚拟用户目录的权限改为只能由virtual操作:
  [root@localhost root]# chown virtual.virtual /home/vsftpd
  [root@localhost root]# chmod 700 /home/vsftpd
  允许虚拟用户上传文件:
  write_enable=YES
  anon_upload_enable=YES
  允许虚拟用户修改文件名和删除文件:
  anon_other_write_enable=YES
  由于以上选项的设置同样会对匿名用户生效。如果不想匿名用户趁机拥有同样的权限,最好是禁止匿名用户登录。
其次,由于虚拟用户在系统中是virtual身份,所以可以访问到系统的其他目录。为了更加安全,我们可以将虚拟用户限制在自家目录下。有两种做法:一,在配置文件中增加以下选项
  chroot_local_user=NO
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd.chroot_list
  然后,在/etc/vsftpd.chroot_list文件中加入虚拟用户名benet和aptech。
  第二种做法,在配置文件中修改chroot_local_user=YES。
  经过修改后,虚拟用户登录后其根目录就限制在/home/vsftpd下,无法访问其他目录。
  
5、虚拟用户的个人目录与权限
 建立针对虚拟用户库中不同用户的权限文件
先建立用户权限目录: # mkdir /etc/vsftpd/vsftpd_user_conf
再在/etc/vsftpd/vsftpd_user_conf目录下建立限权文件
download文件内容(只能下载权限)
local_root=/home/vsftpd/
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
upload文件内容(可上传权限)
local_root=/home/vsftpd/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
admin文件内容(管理权限)
local_root=/home/vsftpd/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

6、防火墙配置
-A INPUT -s 192.168.100.0/255.255.255.0 -d 192.168.100.110 -i eth1 -p tcp --dport 20 -j ACCEPT
-A INPUT -s 192.168.100.0/255.255.255.0 -d 192.168.100.110 -i eth1 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.100.0/255.255.255.0 -d 192.168.100.110 -i eth1 -p tcp --dport 30000:30999 -j ACCEPT

9、 启动vsftpd和iptables
service vsftpd restart
service iptables restart
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息