vsftp虚拟账户pam认证移植

vsftp虚拟账户pam认证移植说明

  • 背景介绍

vsftpd英文全称:very secure ftp daemon,中文释义:非常安全的FTP守护进程,它是一款完全开源且免费、运行在Linux操作系统上的FTP服务程序。

vsftpd支持3种认证模式登录FTP服务器,它们分别是匿名开放模式本地用户模式虚拟用户模式

匿名开放模式最不安全的一种认证模式,任何人都可以无须密码验证而直接登录到FTP服务器,默认的用户名是:anonmous。

本地用户模式是通过Linux系统本地的账户密码信息进行认证的模式,对比匿名开放模式更安全。但是如果黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制该服务器。

虚拟用户模式是更安全地一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行密码验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务器认证使用。这样,即便黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

目前以使用的虚拟用户模式来介绍其编译和安装使用过程

  • 第三方库说明

编译支持虚拟用户模式的vsftp需要libcap和pamdb三个组件库。

  1. libcap库介绍和下载

Linux中的libcap全称为Linux capabilities,是Linux操作系统中的一个用户空间库,用于处理权限的库,可以让我们在执行程序时更加灵活地控制权限。通过libcap,用户可以将程序的权限进行细分,实现对程序仅开放特定的权限,而不是像传统的权限管理一样采用二进制方式,具有或不具有某个权限。

其下载地址,可以参考:

https://mirrors.edge.kernel.org/pub/linux/libs/security/linux-privs/libcap2/  

本文以libcap-2.70.tar.gz为例进行操作。

  1. pam库介绍和下载

PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制,通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。

pam框架有以下四部分组成:PAM应用程序,也称为消费方;PAM库;PAM配置文件;PAM服务模块,也称为提供者。在PAM库中有几个比较重要可能实用到的如下:

pam_limits.so模块的主要功能是限制用户会话过程中对各种系统资源的使用情况。缺省情况下该模 块的配置文件是/etc/security/limits.conf

pam_rootok.so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。 pam_rootok.so模块的一个典型应用是插入到一些应用程序的认证配置文件中,当root用户执行这些 命令的时候可以不用输入口令而直接通过认证。

pam_userdb.so模块的主要作用是通过一个轻量级的Berkeley数据库来保存用户和口令信息。这样用户认证将通过该数据库进行,而不是传统的/etc/passwd和/etc/shadow或者其它的一些基于 LDAP或者NIS等类型的网络认证。所以存在于Berkeley数据库中的用户也称为虚拟用户。 pam_userdb.so模块的一个典型用途就是结合vsftpd配置基于虚拟用户访问的FTP服务器。 相对于本地用户以及匿名用户来说,虚拟用户只是相对于FTP服务器而言才有用的用户,这些用户 被严格地限定在pam_userdb数据库当中。所以虚拟用户只能访问FTP服务器所提供的资源,因而可 以大大提高系统安全性。另外相对于匿名用户而言,虚拟用户必须通过用户名和密码才能够访问 FTP的资源。这样也提高了对FTP用户下载的可管理性。

pam_cracklib.so模块是控制密码复杂度的关键文件。

我们本次VSFTP则使用PAM 库中pam_userdb.so来实现虚拟用户登录。其下载地址,可以参考:

https://github.com/linux-pam/linux-pam/releases (github,有时不能登录)

blfs-conglomeration-Linux-PAM安装包下载_开源镜像站-阿里云 (推荐)

本文以Linux-PAM-1.6.1.tar.xz为例进行操作。

  1. db库介绍和下载

Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、SQL解析等步骤。本次主要使用其db4-utils中的db_load工具创建Berkeley DB格式的数据库文件。其主要是对虚拟用户和密码生成口令认证文件,可以通过db_dump来查看db中的内容。

下载地址如下:

https://www.oracle.com/database/technologies/related/berkeleydb-downloads.html

http://download.oracle.com/berkeley-db/db-6.2.32.tar.gz

本文以db-6.2.32.tar.gz为例。

  1. vsftp库下载

http://fossies.org/linux/misc/vsftpd-3.0.5.tar.gz

https://security.appspot.com/vsftpd.html。需要翻墙

本文以vsftpd-3.0.5.tar.gz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值