CentOS下基于虚拟用户访问的FTP服务配置

2019-09-18 08:21
杨凌职业技术学院学报 2019年3期
关键词:配置文件端口防火墙

陈 锦

(泉州经贸职业技术学院, 福建 泉州 362000)

人们将计算机联网的首要目的就是获取资料,而文件传输是一种非常重要的获取资料的方式。FTP则是一种在互联网中进行文件传输的协议, FTP服务能够使文件通过网络从一台主机传送到另外一台主机而不受计算机和操作系统类型的限制[1]。无论是PC、服务器还是Linux、Windows操作系统,只要双方支持FTP协议,就可以方便、可靠地传送文件。本文从单位的实际需求出发,要实现普通教师仅能够下载文件,管理人员能够下载、上传、修改文件并创建目录的功能。CentOS是目前最流行的Linux发行版本[1],下面就以CentOS7系统为例说明配置过程。

1 vsftpd软件的安装

FTP服务采用的是一种基于客户端/服务器的工作模式,FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。Linux平台下可选用的FTP服务器软件常见的有vsftpd、wu-ftpd、pureftpd、proftpd等[2]。vsftpd以其源代码开放、完全免费、安全、稳定、速率高等特点,成为在Linux发行版中首推的FTP服务器软件[3]。

CentOS系统默认情况下是不安装vsftpd软件的,可以通过挂载系统安装光盘,然后再利用yum命令进行安装,方法如下:

#mkdir /iso //在Centos系统中创建挂载点/iso

#mount /dev/cdrom /iso //挂载光盘到/iso

#vim /etc/yum.repos.d/dvd.repo //编辑yum源文件,指定软件包的位置

yum源文件的内容如下:

[dvd]

name=dvd

baseurl=file:///iso

gpgcheck=0

enabled=1

#yum install vstpd -y //安装vsftpd软件

2 修改配置文件

vsftpd作为安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上[4]。

(1)匿名开放模式:访问FTP服务器时,不需要输入用户名和密码就能够直接登录。匿名用户的默认用户名为anonymous或ftp。

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

(3)虚拟用户模式:是这三种模式中最安全的一种认证模式,它将所有非匿名用户都映射成一个虚拟用户,从而统一限制其他用户的访问权限,虚拟用户的用户名和密码存放在一个独立的用户密码文件中,虚拟用户登录服务器时,实际上是映射成服务器的实体账号。从而隐藏了实体账号的信息,提高了服务器的安全性访问[2]。

依据上述,若要实现引言部分的功能需求,普通教师因让其以匿名用户的身份登录FTP服务器,管理人员以虚拟用户的身份登录FTP服务器。

2.1 启用匿名用户登录

利用vim /etc/vsftpd/vsftpd.conf命令打开FTP服务的配置文件,进行如下配置项的设置[3]:

anonymous_enable=YES #开启匿名用户访问

anon_world_readable_only=YES #设置匿名用户只具备下载权限

2.2 虚拟用户登录配置

(1)创建用于进行FTP认证的用户数据库文件,其中奇数行为用户名,偶数行为密码。

#mkdir /vftpusers //创建存放用户数据库文件的目录

#vim /vftpusers/vftpuser.txt //创建存放虚拟用户账户名和密码的文本文件

在打开的vftpuser.txt文件中输入如下两行内容:

admin

qzjmxy

其中第一行为虚拟用户名,第二行为密码。

明文信息即不安全,也不符合让vsftpd服务程序直接加载的格式,因此需要使用db_load命令用哈希算法将原始的明文信息文件转换成数据库文件,并且降低数据库文件的权限,然后再把原始的明文信息文件删除。具体配置如下:

#db_load -T -t hash -f /vftpusers/vftpuser.txt /vftpusers/vftpuser.db

为了保证数据库文件的安全,需要修改该文件的访问权限,并删除虚拟用户文本文件,设置如下:

#chmod 600 /vftpusers/vftpuser.db

#rm /vftpusers/vftpuser.txt

(2)建立用于支持虚拟用户的PAM文件。

PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的API把系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。

打开vsftpd对应的PAM配置文件/etc/pam.d/vsftpd,注释掉文件中原有内容,添加如下配置选项:

(3)创建虚拟账户对应的系统实体账户。

添加虚拟用户admin对应的系统账户为ftpvip,指定主目录为/qzjmedu/share

#mkdir -p /qzjmedu/share

#useradd -d /qzjmedu/share ftpvip

#chown ftpvip:ftpvip /qzjmedu/share //修改主目录的属主和属组为ftpvip

#chmod o=rx /qzjmedu/share //设置其他用户有读和进入目录的权限

(4)建立虚拟用户配置文件。

修改vsftpd的配置文件/etc/vsftpd/vsftpd.conf,设置如下配置项:

local_enable=YES

#启用本地用户访问,不能设置为NO,否则虚拟用户无法登录,虚拟用户访问在主机上其实也是映射成一种特殊本地用户身份访问。

chroot_local_user=NO;chroot_list_enable=YES;chroot_list_file=/etc/vsftpd/chroot_list;

#以上三个参数搭配使用,能够锁定用户在根目录中。

pam_service_name=vsftpd #设置PAM认证文件名为vsftpd

user_config_dir=/etc/vsftpd/ftpconfig #指定存放虚拟用户个人独立配置文件的目录

若多个虚拟用户拥有不同的访问权限,使用一个配置文件是无法实现功能的,这时需要为每个虚拟账户建立独立的配置文件,并根据需要进行相应的配置项的设置。在user_config_dir指定路径下,建立与虚拟账号同名的配置文件admin,并添加相应的配置字段,如下操作所示:

guest_enable=yes #开启虚拟账号登录

guest_username=ftpvip #指定虚拟用户admin对应的系统实体账号为ftpvip

anon_upload_enable=YES #允许虚拟用户admin上传文件

anon_mkdir_write_enable=YES #允许虚拟用户admin创建目录

anon_mkdir_write_enable=YES #允许虚拟用户有其他写入权如删除文件、重命名文件等

3 防火墙及SELinux的设置

要让客户端以虚拟用户的身份访问FTP服务器,需对防火墙及SElinux做正确的配置。

3.1 防火墙配置

FTP默认使用20,21号端口,其中端口20用于数据传输,端口21用于接受客户端发出的相关FTP命令与参数。Iptables防火墙管理工具默认禁止了FTP传输协议的端口号,因此为了避免默认的防火墙策略“捣乱”,让防火墙放行FTP服务,还需设置iptales访问策略,在终端中输入如下命令:

#vim /etc/sysconfig/iptables

在打开的文件中,添加如下策略[3]

#开启20,21端口

-A INPUT -p tcp -m multiport --dport 20,21 -m state --state NEW -j ACCEPT

#开启21主动端口

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

#开启被动端口

-A INPUT -p tcp --dport 30000:31000 -j ACCEPT

3.2 配置SELinux

SELinux(Security-Enhanced Linux)即安全增强型 Linux,它是一个内核级别的安全机制,主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。Linux系统中SELinux防护主要是通过各种安全策略、规则及安全上下文设定保护系统安全[5]。利用vim /etc/sysconfig/selinux命令打开SELinux配置文件,修改SELINUX选项值为disabled来关闭SELinux。

4 客户端测试

客户端可以是Windows、Linux等操作系统,下面以最常见的Windows客户端为例进行测试,设置FTP服务器的IP地址为:192.168.1.2,测试结果如下:

(1)以匿名用户ftp登录,测试结果如图1所示。

(2)以虚拟用户admin登录,如图2,进入到配置文件指定目录/qzjmedu/share,并可进行数据的上传和下载,如图3所示。

图1 匿名用户访问FTP服务

图2 虚拟用户登录FTP服务器

图3 虚拟用户上传下载文件

5 结 语

CentOS因其开源、安全、稳定成为备受企事业单位青睐的Linux系统,FTP服务则是其上搭建的一种常用的服务,由于ftp采用明文传输,那么如何保证数据传输的安全性,提高服务器的安全性和稳定性就变得至关重要。本文通过配置虚拟用户访问,让客户端通过虚拟账户登录到服务器,从而提高了服务器的安全性,而且配置过程中建立了支持虚拟用户的PAM认证文件,实现用户身份认证后再传输数据,数据被加密从而保证了数据传输的安全性[6]。

猜你喜欢
配置文件端口防火墙
从Windows 10中删除所有网络配置文件
一种端口故障的解决方案
硬件解耦三端口变换器的软开关分析与仿真
互不干涉混用Chromium Edge
构建防控金融风险“防火墙”
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
交换机生成树安全
在舌尖上筑牢抵御“僵尸肉”的防火墙
卫星三端口DC-DC变换器技术综述