myftpadmin vsftp mysql_基于vsftpd+pam+mysql架设ftp并实现虚拟用户登录

1、系统环境和所需软件包

Redhat Enterprise-5.8、vsftpd、mysql、pam-mysql-0.7RC1

2、本文大致内容

①、vsftpd安装

②、vsftpd配置文件的介绍

③、vsftpd服务器的基本实现和一般控制设置

④、虚拟用户vsftpd服务器的搭建、测试等

3、FTP服务器介绍

FTP服务器的连接分为两种:

控制连接:客户端向服务器端请求连接,而且一旦建立就不在断开,等到人为断开的时候此连接才会释放,此连接是

利用tcp的21号端口

数据连接:客户端和服务器之间进行数据传输的连接,是一种按需连接,一旦数据传输介绍,此连接就会断开,

此连接利用一种随机的端口。

FTP服务器常用的命令

get:下载文件

mget:下载多个文件

put:上传文件

mput:上传多个文件

lcd:切换本地目录

cd、ls等等众多的命令。

4、FTP服务器的安装

在红帽上面利用红帽自身的rpm包安装即可实现一个简单的ftp服务器架设

yum install vsftpd

4016d8f9aef5320b93077c81a81d513d.png

此处一个简单的ftp服务器就建成了~~~~~~

e1048c165b0ea5d57f9be51cb925749e.png

编辑vsftpd.conf配置文件

anonymous_enable=YES//是否开启匿名用户访问

anonymous_enable=YES//是否开启本地用户既系统用户访问

write_enable=YES//是否开启本地用户的写权限:上传文件的权限

local_umask=022//系统用户上传文件时候的umask默认值

anon_upload_enable=YES//是否开启虚拟用户上传文件的权限

anon_mkdir_write_enable=YES//是否开启虚拟用户新建文件件的权限

chown_uploads=YES//是否开启上传文件的属主修改

chown_username=whoever//上传文件后所属主

xferlog_file=/var/log/xferlog

xferlog_std_format=YES//日志记录,需要开启上面两项才可以生效

idle_session_timeout=600//连接超时时间

data_connection_timeout=120//数据传输超时时间

ascii_upload_enable=YES

ascii_download_enable=YES//是否开启ascii码的上传、下载

chroot_list_enable=YES//是否锁定用户登录后的目录,配置文件在/etc/vsftpd/chroot_list,

表内定义了锁定的用户列表

chroot_list_file=/etc/vsftpd/chroot_list  //用户登录以后把用户锁在那个目录下的定义

listen=YES//设置ftp服务是否为独立进程

pam_service_name=vsftpd//pam认证服务名称

userlist_enable=YES// 用户列表限定

用法(定义黑白名单)

定义黑名单:userlist_enable=YES、userlist_deny=YES

定义白名单:userlist_enable=YES、userlist_deny=NO

max_clients=                           // 单个IP最多发起几个请求的

max_per_ip=//最多允许几个IP链接FTP服务器

另外的两个vsftpd的配置文件:

/etc/vsftpd/ftpusers------------内规定的用户都禁止登陆ftp服务

/etc/vsftpd/user_list-----------规定了不能登陆ftp服务器的用户

5、设置环境实现测试:

测试之前需要保证本机的SElinux是关闭的,否则会造成失败的!

setenforce 0  立即关闭 SElinux

vim /etc/selinux/config  永久关闭 SElinux

新建两个用户:chris和chrislee,然后把chris锁定在家目录内。修改vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

新建chroot_list

vim /etc/vsftpd/chroot_list

增加chris

然后重启服务器

service vsftpd restart

20632e262cddd42f3bf708ad89f44a8f.png

另外注意:

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list--这两个配置可以直接被下面一句话所替代:chroot_local_user=YES,这样就可以限制所有的用户登录以后只能停留在自己的家目录里了

6、由于FTP服务的传输都是明文的,在网络上非常不安全,我们可以利用openssh来对ftp服务的传输进行加密,既是sftp服务。

①、建立CA、自签证书、

先生成CA和CA的自签证书

cd /etc/pki/CA

mkdir certs newcerts crl

touch index.txt

echo 01 >serial

创建CA的私钥

(umask 007;openssl genrsa –out priviate/cakey.pem 2048);

生成自签证书

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365 //-days是指有效期

ed970323b2d879718b72dddcdd1ab0d1.png

②、为vsftp服务进行CA认证

mkdir /etc/vsftpd/ssl

cd /etc/vsftpd/ssl

生成私钥和认证的公钥

(umask 077;openssl genrsa -out vsftpd.key 2048);

openssl req -new -key vsftpd.key -out vsftpd.csr

e5fd70c0110786af660ae11932064419.png

修改CA目录,修改的话必须在特定的目录下才能签署证书

vim /etc/pki/tls/openssl.cnf

b603cfa5836ba50dda5575da7305d0fa.png

签署证书

openssl ca -in vsftpd.csr -out vsftpd.crt

③、然后ftp配置使用加密的认证方式

vim /etc/vsftpd/vsftpd.conf

ssl_enable=YES//开启ssl功能

ssl_tlsv1=YES//开启支持tlsv1

ssl_sslv2=YES

ssl_sslv3=YES

allow_anon_ssl=NO//是否开启匿名用户利用ssl

force_local_data_ssl=YES//开启系统用户数据传输利用ssl

force_local_logins_ssl=YES//开启系统用户登录利用ssl

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt   //指定证书位置

rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key //指定私钥位置

④重启服务、验证

c53ca9cdd3c1df85e642959ca5d2aa1d.png

利用Flashxp软件进行连接测试

9930b9ea20a935010343ac99bb1e51f0.png

9cdf8975f1411d8323b9beb6f404a406.png

ok~~到此我们的sftp服务器就已经建成了,相对来说比原来安全多了~~

7、vsftpd+pam+mysql,实现虚拟用户

环境必须安装相应的开发环境和开发库:Development Libraries和Development Tools

下面用到的软件安装方式采用yum安装,可以自动解决软件的依赖关系,由于实验是在在虚拟机上,所以采用DVD盘作为yum池,配置为下

mount /dev/cdrom /media

/etc/yum.repos.d/server.repo //yum服务配置如下

# repos on instructor for cla***oom use

# Main rhel5 server

[base]

name=InstructorServer Repository

baseurl=file:///media/Server

gpgcheck=0

# This one is needed for xen packages

[VT]

name=InstructorVT Repository

baseurl=file:///media/VT

gpgcheck=0

# This one is needed for clustering packages

[Cluster]

name=InstructorCluster Repository

baseurl=file:///media/Cluster

gpgcheck=0

# This one is needed for cluster storage (GFS, iSCSI target, etc...) packages

[ClusterStorage]

name=InstructorClusterStorage Repository

baseurl=file:///media/ClusterStorage

gpgcheck=0

①、安装数据库和开发环境

检查开发库和开发工具是否安装

3b4c742c01caa1e7afbf271dcfc329c9.png

yum -y install mysql-server mysql-devel  //安装数据库服务器软件和devel,devel包是为了后面编译pam的时候必须的软件包。不安装的话就无法实现其功能了。

启动mysql服务器,然后测试,保证mysql服务器运行正常,service mysqld start,mysql连接进入查看,如下图

62d9831f2eb8b413db7f8da9c817c261.png

②、手动编译、安装mysql基于pam的认证的驱动文件pam_mysql-0.7RC1.tar.gz。

tar xf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1

./configure --with-mysql=/usr  //—with-mysql=指定mysql库所在的位置

make

make install

③、进入数据库准备所需的数据库和表等

mysql    //进入数据库

mysql>create database vsftpd;

mysql>use vsftpd;

mysql>create table users(

->id int AUTO_INCREMENT NOT NULL,

->name char(20) binary NOT NULL,

->password char(48) binary NOT NULL,

->primary key(id)

->);

77e72694d27fdfb816744534e0eb599e.png

授权定义

GRANT SELECT ON vsftpd.* to vsftpd@localhost identified by 'work';

GRANT SELECT ON vsftpd.* to vsftpd@127.0.0.1 identified by 'work';

affb54c1294d95c08efaf5eb4a8188f4.png

④、在数据库内增加两个虚拟用户,然后用其测试

mysql>insert into users(name,password) values('chris','work');

mysql>insert into users(name,password) values('chrislee','work');

a28dc047fc30742afd56d5ae5f8803b9.png

⑤、配置vsftpd

建立pam认证所需的文件

vi /etc/pam.d/vsftpd.mysql--这个文件默认是不存在的,需要新建

添加如下两行

auth required /lib/security/pam_mysql.so user=vsftpdpasswd=workhost=localhostdb=vsftpd

table=usersusercolumn=namepasswdcolumn=passwordcrypt=0

account required /lib/security/pam_mysql.so user=vsftpdpasswd=workhost=localhost

db=vsftpdtable=usersusercolumn=namepasswdcolumn=passwordcrypt=0

建立虚拟用户映射的系统用户及对应的目录

#useradd -s /sbin/nologin -d /var/ftproot vuser  //新建虚拟用户

#chmod go+rx /var/ftproot   //为其他用户增加读和执行权限。

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

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

而后添加以下选项

guest_enable=YES//是否允许来宾账户访问

guest_username=vuser//来宾账户访问映射为那个用户

并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql

然后配置完后重启服务器

3e66a2c6028d97c12ab7b0f89874e5fb.png

service vsftpd restart

测试登录

00026d9adec6fbad821c19124162c27f.png

ca9d5d67bc92630e4e7b83e68014411f.png

b32d229397a4b3618eebd880ef779125.png

备注:

配置vsftpd.conf为虚拟用户的默认权限为匿名用户的权限,若想单独定义每个用户的权限,则可以利用

# vim vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_dir

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

mkdir /etc/vsftpd/vusers_dir/

cd /etc/vsftpd/vusers_dir/

touch chris

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,

可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。

fg:vim chris增加配置

anon_upload_enable=YES//是否开启数据上传

从而可以实现单独用户的权限控制,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值