赞
踩
目录
使用linux中FTP虚拟用户进行FTP服务使用的前提下,虽说解决了一些用户安全性的问题,但从多方面考虑,该方法多多少少还会隐藏一些安全问题,比如用户在使用时被一些抓包工具截取到,这样就直接把用户的密码进行了截取,确保不了用户使用的安全性。
可以通过vsftpd+MySQL的这种数据用户认证方式,来实现FTP服务的正常使用,使用数据库存放的好处,是因为数据库中表的数据,一般是不会轻易删除或是清理,还有用户的登录信息都在数据表中且密码是加密的,抓包工具截取时,无法正常获取到用户的密码。
以下是针对vsftpd+MySQL的FTP服务虚拟用户认证方法,供大学参考和学习。
# tar -zxvf pam_mysql-0.5.tar.gz
# cd pam_mysql
# make
# cp pam_mysql.so /lib/security/
pam_mysql下载地址:Download pam_mysql-0.5.tar.gz (pam-mysql)
# mysql -uroot -p
mysql> create database vsftpd;
mysql> use vsftpd;
mysql> create table user(
-> id int not null auto_increment primary key,
-> name char(15) not null unique key,
-> password char(48) not null
-> );
mysql> insert into users (name,password) values ('user1',password('123456')),('user2',password('123456'));
mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456';
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123456';
mysql> flush privileges;
# vi /etc/pam.d/vsftpd.mysql
//添加如下两行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2
crypt说明如下:
crypt=0:明文密码
crypt=1:使用crpyt()函数(对应SQL数据里的encrypt(),encrypt()随机产生salt)
crypt=2:使用MYSQL中的password()函数加密
crypt=3:表示使用md5的散列方式
# useradd -s /sbin/nologin -d /var/ftp/ftproot vuser
# chmod go+rx /var/ftp/ftproot
# vi /etc/vsftpd/vsftpd.conf
填加如下内容:
pam_service_name=vsftpd.mysql
chroot_local_user=YES
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vuser
# service vsftpd restart
# ftp 192.168.2.1
Connected to 192.168.2.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication
type
Name (192.168.2.1:root): user1
331 Please specify the password.
Password:
230 Login successful. ------已经登录成功了!
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
有时候会给一些特定的用户设置一些特定的权限,比如:user1用户可以上传和下载,user2用户只能看,不能下载,可以用以下方法实现。
# vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vuser
# cd /etc/vsftpd/vuser
# vi user1
填加
anon_upload_enable=YES
anon_mdkir_write_enable=YES
anon_other_write_enable=YES
以上是可以上传与下载,如果不想让user2有下载的功能,进行以下操作
# cd /etc/vsftpd/vuser
# vi user2
填加
anon_upload_enable=YES
anon_mdkir_write_enable=NO
anon_other_write_enable=NO
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。