基于访问控制和虚拟用户的FTP服务器的实现

时间:2022-08-04 08:10:05

基于访问控制和虚拟用户的FTP服务器的实现

摘要:该文讨论了FTP服务器的典型访问方式,通过配置文件的编辑实现了FTP的访问控制,通过构建的数据库实现了FTP的基于虚拟用户的访问,通过该文的所述的方法对实现FTP服务器安全及正常的运行会有很大的帮助。

关键词:LINUX;FTP;访问控制;身份验证;虚拟用户

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)36-8265-02

随着互联网使用越来越普及,网民会经常需要在网络中通过网页或者命令行方式进行上传或者下载的任务,这些任务的使用是基于FTP( File Transfer Protocol,文件传输协议)在互联网络的实现,该协议在FTP服务器(存放文件资源)和FTP客户端通过2对端口进行通讯。在服务器端依靠TCP端口20和21进行工作,使用端口20进行数据的接收和发送,而使用端口21进行TCP传输控制,而客户端可以随机选择大于1024的端口和FTP服务器的20个21端口进行连接。

在目前的互联网络中,由于上传下载的业务量相当大,对应的FTP服务器会承担越来越重的工作任务,要确保这些服务器的安全及正常使用,可以使用身份验证和访问控制来实现。下面就这两个方面来阐述:(本文所述为基于RED HAT ENTERPRISE LINUX 5的配置)

1 FTP访问控制

可以修改和FTP配置文件所在路径下的文件ftpusers和user_list达到对不同的用户访问控制的目的。可以在ftpusers文件中添加用户,那么该用户就不被允许登陆FTP服务器。而是否可以使用user_list文件中的用户登陆FTP服务器与在主配置文件/etc/vsftpd/vsftpd.conf中的定义有关,如果定义了userlist_deny=NO,则仅仅允许在该文件中中出现的用户登陆FTP服务器,而如果定义userlist_deny=YES,那么该文件中出现的用户不被允许登陆FTP服务器。

2 身份验证

对FTP服务器的访问可以采用三种方式:

1)匿名访问

这种访问模式不需要用户输入身份信息,系统会自动采用anonymous用户连接FTP服务器,而且不需要密码,使用比较简单也很普遍,但是由于访问量较大,对服务器有较高要求。

2)采用LINUX服务器的本地用户在远程登录

采用这种方式需要有本地账号,如果访问的人数太多,而且人员在企业流动性很大,分配给用户的目录较多导致管理上比较困难。

3)采用虚拟用户访问

管理员可以在服务器端创建虚拟用户,让远程用户使用虚拟用户来登录服务器,可以避免上边出现的两个问题,由于需要知道虚拟用户的账号和口令,所以不会使得对所有无关用户都可以访问,访问被局限于一个范围,同时由于虚拟用户对应的目录就一个,管理上更加简单,如果需要不同的权限可以设置不同的虚拟用户来解决,这样做也不会创建大量的目录,管理上不会那么困难。下面是虚拟用户的配置和测试步骤:

① 要安装db4-utils-4.3.29-9.fc6.i386.rpm这个软件包(笔者是在RHEL5版本上使用),使用这个软件可以安装一个创建口令库文件的命令db_load。

② 建待验证的用户和口令文件,在该文件中,单数行为用户名,双数行为口令。

#vi /etc/vsftpd/vsftpd_log.txt

添加如下用户及口令

图1

③ 用如下命令创建对应于vsftpd_log.txt的数据库文件

#db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db

④ 辑虚拟用户验证的认证文件(该认证文件会被VSFTPD配置文件调用),该文件位于/etc/ vsftpd/vsftpd,可以将原件所有内容注释掉(加上“#”),同时添加如下两行,参数DB中的文件名和第三步的数据库文件同名,然后保存即可。

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

⑤ 立虚拟账号并配置相应的用户目录(可以任意选位置),并根据需要设定权限,命令如下:

# useradd -s /sbin/nologin -d /var/ftp/zs (设定zs这个虚拟用户对应的主目录,为安全起见,所以加上-s /sbin/nologin使得客户端登录FTP服务器不能够使用命令行)。

# chmod 704 /var/ftp/ (使得登录用户具有读的权限)

⑥ 改FTP的主配置文件/etc/vsftpd/vsftpd.conf,使得文件中包含如下行

local_enable=YES (设定本地用户登录,本质上是为了能够让虚拟用户可以访问FTP服务器)

guest_enable=YES (设定虚拟账户可以访问FTP服务器)

user_config_dir=/etc/vsftpd/users_config (设定虚拟账户的配置文件所在的路径为/etc/vsftpd/users_config )

同时根据需要可以设定如下行

local_umask=022 (虚拟用户上传的文件的掩码)

anon_umask=077 (匿名用户上传的文件的掩码)

chown_uploads=YES (允许改变上传的文件的属主)

⑦ 不同的用户设定配置文件

可以在/etc/vsftpd/创建目录users_config,然后创建虚拟用户的配置文件,可用如下命令:

#mkdir /etc/vsftpd/users_config

#cd /etc/vsftpd/users_config

#touch zs (创建空文件zs)

在ZS这个文件中添加如下内容(以下可以根据具体情况进行选取)

guest_username=ls

anon_world_readable_only=NO (表示用户可以浏览FTP目录和下载文件)

anon_upload_enable=YES (表示用户可以上传文件)

anon_mkdir_write_enable=YES (表示用户具有建立和删除目录的权利)

anon_other_write_enable=YES (表示用户具有文件改名和删除文件的权限)

⑧ 启动服务并测试FTP的虚拟用户的登录

# service vsftpd restart

测试结果如下:

[root@localhost ~]# ftp 192.168.1.100

Connected to 192.168.1.100.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.1.100:root): zs

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

在灵活的设定FTP服务器的根目录及合理配置文件及目录的前提下,再配合以FTP访问控制和虚拟用户的访问可以最大限度的保障FTP服务器的安全、稳定运行。

参考文献:

[1] 杨鹏.Linux服务器架设[M].北京:清华大学出版社,2008:249-251.

[2] 马少斌.Linux企业级FTP服务器的架设及管理[J].甘肃联合大学学报:自然科学版,2009, 23(4).

上一篇:基于Android的社交网络系统的设计与实现 下一篇:基于社会计算的个性化推荐系统的设计