基于vsftpd+pam+mysql架设ftp并实现虚拟用户登录
2013-05-03 22:26
866 查看
1、系统环境和所需软件包
Redhat Enterprise-5.8、vsftpd、mysql、pam-mysql-0.7RC1
2、本文大致内容
①、vsftpd安装
②、vsftpd配置文件的介绍
③、vsftpd服务器的基本实现和一般控制设置
④、虚拟用户vsftpd服务器的搭建、测试等
3、FTP服务器介绍
4、FTP服务器的安装
在红帽上面利用红帽自身的rpm包安装即可实现一个简单的ftp服务器架设
yum install vsftpd
此处一个简单的ftp服务器就建成了~~~~~~
编辑vsftpd.conf配置文件
5、设置环境实现测试:
然后重启服务器
service vsftpd restart
另外注意:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list--这两个配置可以直接被下面一句话所替代:chroot_local_user=YES,这样就可以限制所有的用户登录以后只能停留在自己的家目录里了
6、由于FTP服务的传输都是明文的,在网络上非常不安全,我们可以利用openssh来对ftp服务的传输进行加密,既是sftp服务。
①、建立CA、自签证书、
②、为vsftp服务进行CA认证
修改CA目录,修改的话必须在特定的目录下才能签署证书
vim /etc/pki/tls/openssl.cnf
签署证书
openssl ca -in vsftpd.csr -out vsftpd.crt
③、然后ftp配置使用加密的认证方式
④重启服务、验证
利用Flashxp软件进行连接测试
ok~~到此我们的sftp服务器就已经建成了,相对来说比原来安全多了~~
7、vsftpd+pam+mysql,实现虚拟用户
环境必须安装相应的开发环境和开发库:Development Libraries和Development Tools
下面用到的软件安装方式采用yum安装,可以自动解决软件的依赖关系,由于实验是在在虚拟机上,所以采用DVD盘作为yum池,配置为下
①、安装数据库和开发环境
检查开发库和开发工具是否安装
yum -y install mysql-server mysql-devel //安装数据库服务器软件和devel,devel包是为了后面编译pam的时候必须的软件包。不安装的话就无法实现其功能了。
启动mysql服务器,然后测试,保证mysql服务器运行正常,service mysqld start,mysql连接进入查看,如下图
②、手动编译、安装mysql基于pam的认证的驱动文件pam_mysql-0.7RC1.tar.gz。
③、进入数据库准备所需的数据库和表等
授权定义
④、在数据库内增加两个虚拟用户,然后用其测试
⑤、配置vsftpd
建立pam认证所需的文件
建立虚拟用户映射的系统用户及对应的目录
然后配置完后重启服务器
service vsftpd restart
测试登录
备注:
配置vsftpd.conf为虚拟用户的默认权限为匿名用户的权限,若想单独定义每个用户的权限,则可以利用
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
此处一个简单的ftp服务器就建成了~~~~~~
编辑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
另外注意:
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是指有效期
②、为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
修改CA目录,修改的话必须在特定的目录下才能签署证书
vim /etc/pki/tls/openssl.cnf
签署证书
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 //指定私钥位置
④重启服务、验证
利用Flashxp软件进行连接测试
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 classroom use # Main rhel5 server [base] name=Instructor Server Repository baseurl=file:///media/Server gpgcheck=0 # This one is needed for xen packages [VT] name=Instructor VT Repository baseurl=file:///media/VT gpgcheck=0 # This one is needed for clustering packages [Cluster] name=Instructor Cluster Repository baseurl=file:///media/Cluster gpgcheck=0 # This one is needed for cluster storage (GFS, iSCSI target, etc...) packages [ClusterStorage] name=Instructor ClusterStorage Repository baseurl=file:///media/ClusterStorage gpgcheck=0
①、安装数据库和开发环境
检查开发库和开发工具是否安装
yum -y install mysql-server mysql-devel //安装数据库服务器软件和devel,devel包是为了后面编译pam的时候必须的软件包。不安装的话就无法实现其功能了。
启动mysql服务器,然后测试,保证mysql服务器运行正常,service mysqld start,mysql连接进入查看,如下图
②、手动编译、安装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) -> );
授权定义
GRANT SELECT ON vsftpd.* to vsftpd@localhost identified by 'work'; GRANT SELECT ON vsftpd.* to vsftpd@127.0.0.1 identified by 'work';
④、在数据库内增加两个虚拟用户,然后用其测试
mysql> insert into users(name,password) values('chris','work'); mysql> insert into users(name,password) values('chrislee','work');
⑤、配置vsftpd
建立pam认证所需的文件
vi /etc/pam.d/vsftpd.mysql--这个文件默认是不存在的,需要新建 添加如下两行 auth required /lib/security/pam_mysql.so user=vsftpd passwd=work host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0 account required /lib/security/pam_mysql.so user=vsftpd passwd=work host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=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
然后配置完后重启服务器
service vsftpd restart
测试登录
备注:
配置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 //是否开启数据上传 从而可以实现单独用户的权限控制,
相关文章推荐
- 基于vsftpd+pam+mysql架设ftp并实现虚拟用户登录
- vsftpd的基于pam_mysql的虚拟用户机制实现数据传输
- FTP服务学习笔记之基于MySQL+PAM的vsftpd虚拟用户
- FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制
- FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制 推荐
- FTP服务系列之vsftpd+pam+mysql实现虚拟用户认证
- vsftpd架设匿名FTP,本地用户和虚拟用户mysql登录
- 基于vsftpd + pam + mysql实现虚拟用户访问机制
- vsftpd+mysql+pam实现ftp登录验证
- vsftpd服务器结合mysql实现虚拟用户登录
- 实现基于MYSQL验证的vsftpd虚拟用户
- vsftpd基于pam_mysql的虚拟用户认证
- vsftpd基于pam_mysql的虚拟用户机制
- vsftpd基于pam_mysql的认证和hash编码的方式配置虚拟用户
- Linux运维 第三阶段 (三) VSFTPD(ftps及vsftpd+pam+mysql实现虚拟用户认证)
- vsftpd基于pam_mysql做虚拟用户认证
- vsftpd的基于pam_mysql的虚拟用户机制
- 基于ssl/tls实现vsftpd的安全通信并通过PAM实现对vsftpd的虚拟用户认证
- 搭建FTP-----实现基于mysql验证的虚拟用户
- 实现基于文件验证的vsftpd虚拟用户和基于MYSQL验证的vsftpd虚拟用户