vsftp pam mysql_实验记录:vsftp整合mysql-pam管理虚拟账号

为了提高系统的安全性,我们采用虚拟用户而非系统(匿名)用户的形式访问FTP。整体思路是通过开启vsftp中的虚拟账户功能并调用新的pam认证模块,然后再修改pam模块使得可以通过mysql验证用户的合法性。以下为实验过程。

第一步装包:

yum install -y vsftpd mysql-server mysql-devel pam-devel

yum groupinstall -y Development tools

tar -xf pam_mysql-0.7RC1.tar.gz -C /usr/src/

cd /usr/src/pam_mysql-0.7RC1

./configure

make && make install

第二步配置mysql

service mysqld start

mysql -p

create database ftpusers;

use ftpusers;

create table users( id int AUTO_INCREMENT NOT NULL,name char(20) NOT NULL UNIQUE KEY, passwd char(48) NOT NULL, primary key(id) );

insert into users(name,passwd)values('nick',password('redhat'));

grant select on ftpusers.* to virftp@localhost identified by 'vftpadm';

flush privileges;

第三步编辑vsftpd.conf,以下是我的配置:

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

anon_upload_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

xferlog_std_format=YES

connect_from_port_20=YES

xferlog_std_format=YES

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

listen=YES

user_config_dir=/etc/vsftpd/user_config

local_root=/var/ftp/pub

guest_enable=YES

guest_username=virftp

pam_service_name=vftp

userlist_enable=YES

tcp_wrappers=YES

userlist_deny=YES

第四步编辑pam文件:vim /etc/pam.d/vftp

session optional pam_keyinit.so force revoke

auth sufficient /lib64/security/pam_mysql.so user=virftp passwd=vftpadm host=localhost db=ftpusers table=users usercolumn=name passwdcolumn=passwd crypt=2

auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth required pam_shells.so

auth include password-auth

account sufficient /lib64/security/pam_mysql.so user=virftp passwd=vftpadm host=localhost db=ftpusers table=users usercolumn=name passwdcolumn=passwd crypt=2

account include password-auth

session required pam_loginuid.so

session include password-auth

上面红色字体是验证虚拟账户用的,其余为默认vsftpd验证,local账户验证时用得到。

第五步:添加虚拟账户

useradd virftp -s /sbin/nologin -d /home/virftp virftp

chown virftp. -R /home/virftp/

第六步:创建虚拟账户配置文件

mkdir /etc/vsftpd/user_config

cd /etc/vsftpd/user_config

创建虚拟账户nick:

vim nick

local_root=/home/virftp/

这里只限制了其根目录,这里不定义的一律继承主配置文件的设定(/etc/vsftp/vsftpd.conf)

cp一个文件到此目录来验证试验

cp /etc/inittab /home/virftp

service vsftpd restart

最后登陆账户nick 密码redhat 查看结果

试验总结:开始我在pam文件中mysql验证没用sufficient而用了required,直接导致不能用local账户登录。

这里解释下两者的含义,sufficient代表一旦满足这条规则,则直接退出不往下匹配了,如果不满足,则往下继续匹配。

required说明如果不匹配则直接退出,如果匹配则继续往下匹配。

所以当我用required时,local账户不匹配直接退出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值