基于vsftpd虚拟用户设置的研究与实现

2018-06-27 02:38刘陆民董园飞
无线互联科技 2018年5期

刘陆民 董园飞

摘 要:FTP是目前互联网上使用的比较广泛的一种协议,它具高速传输数据和稳定性的特点,是基于GPL发布的在Unix/Linux操作系统上使用的非常安全稳定的FTP服务器软件,它可以做基于多个IP地址的虚拟FTP主机服务器,并且支持虚拟用户和带宽限制。文章通过对vsftpd虚拟用户的研究,提出一种安全认证机制,在提高传输效率的同时,保证传输通道的安全性。

关键词:vsftpd;虚拟用户;安全认证

在互联网飞速发展的今天,人们结合自己在生活中遇到的问题经常需要去网上下载和上传相关资源,在给别人提供方便的同时,也能让自己学到更多的知识。Linux下可用的FTP服务器端是很多的,如vsftp,proftp,uw-ftp等,其中vsftp用得最多,它和很多网络服务一样,也是按照客户机/服务器系统(C/S)模式。针对FTP协议提供两个端口,分别是20和21,其中21端口用于连接客户端,服务器通过这个端口来查看是否有客户端发送请求,另外一个20号端口用于传输数据,FTP客户端会用大于1024的一个随机端口去连接FTP服务器21端口,当传输数据时,客户端会随机产生另外一个大于1024的端口去请求连接服务器20号端口,服务器接收到请求后会用自己的20端口主动去连接客户端,待文件传输完成后,再将该端口释放掉,FTP服务具有管理简单性和双向传输功能,所以目前使用得相当广泛[1]。

虽然使用FTP服务可以快速实现文件简单传输,但FTP协议本身使用明文的方式传输数据,这就使得FTP服务存在着一定的安全隐患。為此,本文提出一种创建虚拟用户采用加密通道的方式来访问FTP服务器,实现了在满足访问资源的同时保证数据传输的安全性。

1 vsftp虚拟用户实现方式

根据用户的类型不同,登录FTP通常有以T3种方式。

(1)匿名用户登录:在访问FTP时,不需要使用用户名密码登录就可以看到服务器上存放的相关资源。

(2)本地用登录:使用超级管理员创建的普通用户登录,给其密码实现用户登录。

(3)虚拟用户登录:对于本地用户来说,虚拟用户是FTP服务器的专有用户,虚拟用户用来访问服务器提供的专有资源,很大程度上提高了服务器的安全性。相对于匿名用户来说,虚拟用户需要提供用户名和密码来访问服务器获取服务器中指定的数据,提高服务器安全的同时增加了对用户和下载的可管理性。

FTP的两种工作模式:(1)主动模式。服务端从20号端口主动向客户端发起连接。(2)被动模式。服务端在指定范围内的某个端口被动等待客户端发起连接。

主配置文件:/etc/vsftpd/vsftpd.conf权限是600,只有root具备可读写的权限。禁止登陆的FTP用户列表:/etc/vsftp d/ftpusers/etc/vsftpd/user_list提供一份FTP用户列表,是否禁止登陆,取决于主配置文件中的设置。

2 具体实现过程

以企业实例,详细描述如何在Redhat9上实现虚拟用户访问FTP服务器资源。要求实现:(1)允许匿名用户访问下载服务器上资源,不能上传、创建和删除资源。(2)允许Tom用户登录,可以下载文件,但不能上传。允许lansha用户可以登录,可以下载和上传文件[2]。

2.1 下载软件包

下载vsftpd软件包,使用tar命令解压缩,vsftp下载地址http s://pkgs.org/download/vsftpd.有32位和64位可供选择,结合本机需求下载指定软件包,这里我们下载64位软件包。

#tar -zxvf vsftpd-3.0.3.tar.gz

#rpm -ivh vsftpd-3.0.3-16.e15_4.l.i386.rpm

2.2 构建基于虚拟用户的vsftpd服务器

详细步骤如下:(1)建立虚拟FTP用户的账号数据库文件。(2)使用超级管理员创建FTP根目录及虚拟用户映射的系统用户。(3)创建支持虚拟用户的PAM认证文件。(4)在vsftpd.conf文件中添加支持配置。(5)为个别虚拟用户建立独立的配置文件。(6)重新加载vsftpd配置。(7)使用虚拟FTP账户访问测试[3]。

2.2.1 建立虚拟FTP用户的账号数据库文件

建立虚拟用户账号数据库文件用于存放授权用户的账号,具体过程如下:

# vim vusers.txt

wendy 123

natasha 456

# db_ load_T—t hash -fvusers.txt vusers.db

# file vusers.db

vusers.db: Berkeley DB (Hash, version 8,native byte-order)

# chmod 600 /etc/vsftpd/{vusers.txt,vusers.db

2.2.2 创建FTP根目录及虚拟用户映射的系统用户

# mkdir /var/ftproot

#useradd—d/var/ftproot-s /sbin/nologin vsftp

# chmod 755 /var/ftproot

#chown vsftp:vsftp /var/ftproot

2.2.3 创建支持虚拟用户的PAM认证文件

#vim /etc/pam.d/vsftpd.vu

auturequired pam—userdb.so db=/etc/vsftp/vusers∥这儿vusers指的是vusers.db文件,在这要把db省略,否则报错,当时笔者就出错在这儿

account required pam_userdb.so db=/etc/vsftp/vusers//这个地方同上

2.2.4 编辑vsftp.conf配置文件,添加支持配置

匿名用户:anonymous或ftp

anonymous_enable=YES∥启用匿名访问

anon_ umask-022 11匿名用户所上传的权限掩码

anon_root=/var/ftp∥匿名用戶的FTP根目录

anon_upload_enable=YES∥允许匿名用户上传文件

anon_mkdir_ write_enable-YES//允许匿名用户创建目录

anon_other write_ enable-YES//开放匿名用户其他的权限

anon__ max_ rate=0 11限制最大传输速率,单位为字节

常用的本地用户FTP配置项

listen=YES//是否以独立运行的方式监听服务

listen address-192.168.4.1 11设置监听的IP地址

listen_port=21//设置监听FTP服务的端口号

write enable-YES//是否允许下载文件

userlist enable-YES//是否启用user list中的用户列表

max clients-0//限制并发客户端连接数

max_per_jp=0//限制同-IP地址的并发连接数目

#vim /etc/vsftpd/vsftpd.conf

local enable=YES

write enable=YES

anon_ umask=022

guest_enable=YES

guest- username=vsftp

pam_service__ name=vsftpd.vu

user_config_dir=/etc/vsfipf/vu sers

2.2.5 为个别虚拟用户建立独立配置文件

# mkdir /etc/vsftpd/vusers;cd /etc/vsftpd/vusers

#vim wendy

anon_upload_enable=NO

anon__ mkdir write_ enable-NO

# vim natasha

anon_upload_enable=YES

anon__ mkdir write_ enable-YES

2.2.6 重新启动vsftp服务,使用ftp虚拟账户测试

# service vsftpd restart

测试结果Tom用户可以登录,可以下载文件,但不能上传

lansha用户可以登录,可以下载文件,可以上传

3 结语

互联网的普及使得资源利用共享得到快速发展,FTP备受各位企事业单位青睐。本文利用客户端输入虚拟用户的名称和密码连接服务器,虚拟用户会映射到系统账号vuser文件中登录ftp,然后修改服务器的配置文件vsftpd.conf找到虚拟用户配置文件的存放目录,根据虚拟用户的配置文件指定的目录路径(local_root=/usr/local/amp/apache/htdocs/demo)访问到指定的目录。注:虚拟用户访问到的文件根目录属主需要改成vuserftp,即真正存在的用户。在使用过程当中,可以限制或指定用户不可访问或只可访问服务器上的定点资源,极大提高了服务器的安全性与稳定性,对服务器上的一些数据起到至关重要的作用。

本文的创新点:FTP默认是明文传输数据的,可以通过一些类似sniffer抓包软件获取到传输的数据包,对数据包进行分析破解可以获取到主机和服务器之间传输的数据,对数据安全性来说是灾难性的。我们通过建立支持虚拟用户的PAM认证文件,对用户本身认证后再传输数据,点对点的传输数据被加密起到了保护作用。本文详细描述了基于vsftpd虚拟用户的实现过程,可以将配置好的服务器文件直接拷贝到其他同系统的服务器上使用,具有一定的使用价值。

[参考文献]

[1]张玉琴.FTP服务器配置与管理[J].数字技术与应用,2017 (4):53.

[2]郭杰.基于Vsftpd服务器数据传输模式浅析[J]电子测试,2015 (14):43-46.

[3]韩英慈.使用Linux系统建立网站的方法[J].数字技术与应用,2016 (4):243.