实现基于文件验证的vsftpd虚拟用户和基于MYSQL验证的vsftpd虚拟用户

实现基于文件验证的vsftpd虚拟用户

一、创建用户数据库文件 • vim /etc/vsftpd/vusers.txt

wang wangpass mage magepass

cd /etc/vsftpd/

db_load -T -t hash -f vusers.txt vusers.db

chmod 600 vusers.db

rm -rf vusers.txt

 

二、创建用户和访问FTP目录

• useradd -d /var/ftproot -s /sbin/nologin vuser

• chmod +rx /var/ftproot/

• centos7 还需要执行以下操作:

• chmod -w /var/ftproot/

• mkdir /var/ftproot/upload

• setfacl -m u:vuser:rwx /var/ftproot/upload

 

三、创建pam配置文件(通过pam模块来告诉通过数据库文件来验证身份)

• vim /etc/pam.d/vsftpd.db

auth required pam_userdb.so db=/etc/vsftpd/vusers

account required pam_userdb.so db=/etc/vsftpd/vusers

 

四、指定pam配置文件

• vim /etc/vsftpd/vsftpd.conf

guest_enable=YES 启用guest账号

guest_username=vuser 映射,把所有的虚拟用户映射成vuser

pam_service_name=vsftpd.db(在配置文件中指定pam模块的配置文件)

systemctl reload vsftpd

 

五、SELinux设置: 禁用SELinux 或者 setsebool -P ftpd_full_access 1

 

六、虚拟用户建立独立的配置文件(使每个用户权限不同才有意义)

mdkir /etc/vsftpd/vusers.d/ 创建配置文件存放的路径

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers.d/

cd /etc/vsftpd/vusers.d/ 进入此目录

允许wang用户可读写,其它用户只读, vim wang 创建各用户自已的配置文件 anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

vim mage 创建各用户自已的配置文件 local_root=/ftproot 登录目录改变至指定的目录

 

 

实现基于MYSQL验证的vsftpd虚拟用户

说明:本实验在两台CentOS主机上实现,一台做为FTP服务 器,一台做数据库服务器

一、安装所需要包和包组:

在数据库服务器上安装包:

• Centos7:在数据库服务器上安装 yum –y install mariadb-server

systemctl start mariadb.service

mysql_secure_install

systemctl enable mariadb

• Centos6:在数据库服务器上安装 yum –y install mysql-server

在FTP服务器上安装vsftpd和pam_mysql包

centos6:pam_mysql由epel6的源中提供 yum install vsftpd pam_mysql

centos7:无对应rpm包,需手动编译安装 yum -y groupinstall "Development Tools"

yum -y install mariadb-devel pam-devel vsftpd

下载pam_mysql-0.7RC1.tar.gz

ftp://172.16.0.1/pub/Sources/sources/pam/

tar xvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1/

./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security

make

make install

 

二、在数据库服务器上创建虚拟用户账号

• 1.建立存储虚拟用户数据库和连接的数据库用户 mysql> CREATE DATABASE vsftpd;

mysql> SHOW DATABASES;

ftp服务和mysql不在同一主机:(注意:蓝色字体指的是允许哪些机器连接数据库服务器的ip地址,比如我们这里实验时的数据库服务器是192.168.159.130)

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'172.16.%.%' IDENTIFIED BY 'magedu';

ftp服务和mysql在同一主机

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'magedu'; mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'127.0.0.1' IDENTIFIED BY 'magedu'; mysql> FLUSH PRIVILEGES;

2.准备相关表 mysql> USE vsftpd;

Mysql> SHOW TABLES;

mysql> CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );

mysql>DESC users;

测试连接 mysql -uvsftpd -h 172.16.200.200 -pmagedu

mysql> SHOW DATABASES;

测试:

 

3.添加虚拟用户

根据需要添加所需要的用户,为了安全应该使用PASSWORD 函数加密其密码后存储

mysql>DESC users;

 

mysql> INSERT INTO users(name,password) values('wang',password('magedu'));

mysql> INSERT INTO users(name,password) values('mage',password('magedu'));

mysql> SELECT * FROM users;

 

三、在FTP服务器上配置vsftpd服务

1.在FTP服务器上建立pam认证所需文件 vi /etc/pam.d/vsftpd.mysql

添加如下两行:

auth required pam_mysql.so user=vsftpd

passwd=magedu host=mysqlserver db=vsftpd table=users

usercolumn=name passwdcolumn=password crypt=2

 

account required pam_mysql.so user=vsftpd

passwd=magedu host=mysqlserver db=vsftpd table=users

usercolumn=name passwdcolumn=password crypt=2

注意:参考README文档,选择正确的加密方式 crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示 使用mysql password()函数加密,3表示md5加密,4表示 sha1加密

【【【【配置字段说明

auth 表示认证

• account 验证账号密码正常使用

• required 表示认证要通过

• pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路 径而言,也可以写绝对路径;后面为给此模块传递的参数

• user=vsftpd为登录mysql的用户 • passwd=magedu 登录mysql的的密码 • host=mysqlserver mysql服务器的主机名或ip地址 • db=vsftpd 指定连接msyql的数据库名称 • table=users 指定连接数据库中的表名 • usercolumn=name 当做用户名的字段 • passwdcolumn=password 当做用户名字段的密码 • crypt=2 密码的加密方式为mysql password()函数加密】】】

 

2.建立相应用户和修改vsftpd配置文件,使其适应mysql认证 建立虚拟用户映射的系统用户及对应的目录

useradd -s /sbin/nologin -d /var/ftproot vuser

chmod 555 /var/ftproot

centos7 需除去ftp根目录的写权限(chmod -w /var/ftproot)

mkdir /var/ftproot/{upload,pub}

setfacl –m u:vuser:rwx /var/ftproot/upload

确保/etc/vsftpd/vsftpd.conf中已经启用了以下选项 anonymous_enable=YES

添加下面两项

guest_enable=YES

guest_username=vuser

修改下面一项,原系统用户无法登录 pam_service_name=vsftpd.mysql

 

 

四、启动vsftpd服务

service vsftpd start;

systemctl start vsftpd

chkconfig vsftpd on;

systemctl enable vsftpd

查看端口开启情况 netstat -tnlp |grep :21

 

 

五、Selinux相关设置:

在FTP服务器上执行 • restorecon -R /lib64/security

• setsebool -P ftpd_connect_db 1

• setsebool -P ftp_home_dir 1

• chcon -R -t public_content_rw_t /var/ftproot/

 

 

六、测试:利用FTP客户端工具,以虚拟用户登录验证结果

• tail /var/log/secure

 

 

七、在FTP服务器上配置虚拟用户具有不同的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以 定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用 户的用户名

配置文件目录可以是任意未使用目录,只需要在 vsftpd.conf指定其路径及名称即可

• 1、配置vsftpd为虚拟用户使用配置文件目录

vim /etc/vsftpd/vsftpd.conf 添加如下选项

user_config_dir=/etc/vsftpd/vusers_config

• 2、创建所需要目录,并为虚拟用户提供配置文件

mkdir /etc/vsftpd/vusers_config/

cd /etc/vsftpd/vusers_config/

touch wang mage

3、配置虚拟用户的访问权限

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关 指令进行的。如果需要让用户wang具有上传文件的权限,可以 修改/etc/vsftpd/vusers_config/wang文件,在里面添加如下 选项并设置为YES即可,只读则设为NO

注意:需确保对应的映射用户对于文件系统有写权限

anon_upload_enable={YES|NO}

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}

local_root=/var/ftproot 登录目录改变至指定的目录(注意:这个目录必须是一个存在的目录,由于做实验的时候没有注意这个地方随手写了一个不存在的目录导致实验出错,排错都找不到原因)

注意:vuser登录上之后想要切换到upload目录就必须更改upload目录权限并且在/etc/vsftpd/vusers_config/vuser文件里定义允许读写删除等权限

ftp命令行下使用?是查看ftp的命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值