CentOS6.5下搭建ftp服务器(三种认证模式:匿名用户、本地用户、虚拟用户)

CentOS 6.5下搭建ftp服务器

vsftpd(very secure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以及支持虚拟用户验证等其他FTP服务程序不具备的特点,下面开始搭建:

1、用root 进入系统

2、使用命令 rpm  -qa | grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vsftpd的版本

3、如果安装了,可以使用命令 rpm -e vsftpd 即可卸载ftp

4、再使用 rpm  -qa | grep vsftpd 查看系统是否已删除ftp,若删除成功,屏幕上不显示vsftpd的版本

一、安装vsftpd:

查看是否已经安装vsftpd
rpm -qa | grep vsftpd

如果没有,就使用yum安装,并设置开机启动
yum -y install vsftpd

#设置开机启动
chkconfig vsftpd on

#查看vsftpd服务是否为开机启动,如下图说明是开机启动

chkconfig --list vsftpd

#查看vsftp的服务状态

service vsftpd status  或者

/etc/init.d/vsftpd status

管理vsftpd相关命令:

启动 vsftpd:  service vsftpd start

停止 vsftpd:  service vsftpd stop

重启 vsftpd:  service vsftpd restart

二、分别配置三种认证模式(匿名用户、本地用户、虚拟用户)参数:

iptables防火墙管理工具默认禁止了FTP传输协议的端口号,因此在正式配置vsftpd服务程序之前,为了避免这些默认的防火墙策略“捣乱”,还需要清空iptables防火墙的默认策略,并把当前已经被清理的防火墙策略状态保存下来:

[[email protected] ~]# iptables -F
[[email protected] ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

vsftpd服务程序的主配置文件(/etc/vsftpd/vsftpd.conf)内容总长度达到123行,但其中大多数参数在开头都添加了井号(#),从而成为注释信息,大家没有必要在注释信息上花费太多的时间。我们可以在grep命令后面添加-v参数,过滤并反选出没有包含井号(#)的参数行(即过滤掉所有的注释信息),然后将过滤后的参数行通过输出重定向符写回原始的主配置文件中:

[[email protected] ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
[[email protected] ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
[[email protected] ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

表11-1中罗列了vsftpd服务程序主配置文件中常用的参数以及作用。

表11-1                                     vsftpd服务程序常用的参数以及作用

参数 作用
listen=[YES|NO] 是否以独立运行的方式监听服务
listen_address=IP地址 设置要监听的IP地址
listen_port=21 设置FTP服务的监听端口
download_enable=[YES|NO] 是否允许下载文件
userlist_enable=[YES|NO]
userlist_deny=[YES|NO]
设置用户列表为“允许”还是“禁止”操作
max_clients=0 最大客户端连接数,0为不限制
max_per_ip=0 同一IP地址的最大连接数,0为不限制
anonymous_enable=[YES|NO] 是否允许匿名用户访问
anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件
anon_umask=022 匿名用户上传文件的umask值
anon_root=/var/ftp 匿名用户的FTP根目录
anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO] 是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0 匿名用户的最大传输速率(字节/秒),0为不限制
local_enable=[YES|NO] 是否允许本地用户登录FTP
local_umask=022 本地用户上传文件的umask值
local_root=/var/ftp 本地用户的FTP根目录
chroot_local_user=[YES|NO] 是否将用户权限禁锢在FTP目录,以确保安全
local_max_rate=0 本地用户最大传输速率(字节/秒),0为不限制
Vsftpd服务程序

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

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

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

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

在Windows系统下可以使用浏览器、CuteFTP软件以及ftp命令(和Linux系统上的ftp命令功能一样)等方式来访问FTP服务器上的资源,在这里我们使用CuteFTP软件。

在CuteFTP软件界面上单击菜单栏上的【文件】—>【新建】—>【FTP站点】,打开如下图所示的对话框,在该对话框的【一般】选项中输入站点标签、FTP主机地址、FTP站点用户名称、FTP站点密码、登录方法;如果登录方法选择【匿名】,则无须输入FTP站点用户名称和FTP站点密码。还有在【类型】选项卡中指定FTP站点的端口号,默认端口为21,然后单击【连接】按钮。

1.  匿名访问模式:

前文提到,在vsftpd服务程序中,匿名开放模式是最不安全的一种认证模式。任何人都可以无需密码验证而直接登录到FTP服务器。这种模式一般用来访问不重要的公开文件(在生产环境中尽量不要存放重要文件)。

vsftpd服务程序默认开启了匿名开放模式,我们需要做的就是开放匿名用户的上传、下载文件的权限,以及让匿名用户创建、删除、更名文件的权限。需要注意的是,针对匿名用户放开这些权限会带来潜在危险,我们只是为了在Linux系统中练习配置vsftpd服务程序而放开了这些权限,不建议在生产环境中如此行事。表11-2罗列了可以向匿名用户开放的权限参数以及作用。

表11-2                                 可以向匿名用户开放的权限参数以及作用

参数 作用
anonymous_enable=YES 允许匿名访问模式
anon_umask=022 匿名用户上传文件的umask值
anon_upload_enable=YES 允许匿名用户上传文件
anon_mkdir_write_enable=YES 允许匿名用户创建目录
anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=YES
2 anon_umask=022
3 anon_upload_enable=YES
4 anon_mkdir_write_enable=YES
5 anon_other_write_enable=YES
6 local_enable=YES
7 write_enable=YES
8 local_umask=022
9 dirmessage_enable=YES
10 xferlog_enable=YES
11 connect_from_port_20=YES
12 xferlog_std_format=YES
13 listen=NO
14 listen_ipv6=YES
15 pam_service_name=vsftpd
16 userlist_enable=YES
17 tcp_wrappers=YES

在vsftpd服务程序的主配置文件中正确填写参数,然后保存并退出。还需要重启vsftpd服务程序,让新的配置参数生效。在此需要提醒各位读者,在生产环境中或者在RHCSA、RHCE、RHCA认证考试中一定要把配置过的服务程序加入到开机启动项中,以保证服务器在重启后依然能够正常提供传输服务:

service vsftpd restart    #重启ftp服务

chkconfig vsftpd on       #把ftp服务加入到开机启动项中

现在就可以在用Windows下的CuteFTP软件连接到远程的FTP服务器了。在vsftpd服务程序的匿名开放认证模式下,其账户统一为anonymous,密码为空。而且在连接到FTP服务器后,默认访问的是/var/ftp目录。我们可以先到Linux系统下查看是否有/var/ftp目录:

然后,打开Windows下的CuteFTP软件,输入标签,主机地址,选择匿名登录,单击连接:

如上图所示,我们已经成功连接上了FTP服务器,我们先来试着在pub文件夹中创建一个文件,系统显示拒绝创建目录!我们明明在前面清空了iptables防火墙策略,而且也在vsftpd服务程序的主配置文件中添加了允许匿名用户创建目录和写入文件的权限啊。先不要着急,往下看。

前文提到,在vsftpd服务程序的匿名开放认证模式下,默认访问的是/var/ftp目录。查看该目录的权限得知,只有root管理员才有写入权限。怪不得系统会拒绝操作呢!下面将目录的所有者身份改成系统账户ftp即可(该账户在系统中已经存在),这样应该可以了吧:

# ls -ld /var/ftp/pub

# chown -Rf ftp /var/ftp/pub

系统再次报错!尽管我们在使用ftp命令登入FTP服务器后,再创建目录时系统依然提示操作失败,但是报错信息却发生了变化。在没有写入权限时,系统提示“权限拒绝”(Permission denied)所以老师怀疑是权限的问题。但现在系统提示“创建目录的操作失败”(Create directory operation failed),其实这里是SELinux服务在“捣乱”。

下面使用getsebool命令查看与FTP相关的SELinux域策略都有哪些:

# getsebool -a | grep ftp

我们可以根据经验(需要长期培养,别无它法)和策略的名称判断出是 ftpd_full_access--> off 策略规则导致了操作失败。接下来修改该策略规则,并且在设置时使用-P参数让修改过的策略永久生效,确保在服务器重启后依然能够顺利写入文件。

注意:在实验课程和生产环境中设置SELinux域策略时,一定记得添加-P参数,否则服务器在重启后就会按照原有的策略进行控制,从而导致配置过的服务无法使用。

# setsebool -P allow_ftpd_full_access=on

现在便可以顺利执行文件创建、修改及删除等操作了。

2.  本地用户模式:

相较于匿名开放模式,本地用户模式要更安全,而且配置起来也很简单。如果大家之前用的是匿名开放模式,现在就可以将它关了,然后开启本地用户模式。针对本地用户模式的权限参数以及作用如表11-3所示。

表11-3                                   本地用户模式使用的权限参数以及作用

参数 作用
anonymous_enable=NO 禁止匿名访问模式
local_enable=YES 允许本地用户模式
write_enable=YES 设置可写权限
local_umask=022 本地用户模式创建文件的umask值
userlist_deny=YES 启用“禁止用户名单”,名单文件为ftpusers和user_list
userlist_enable=YES 开启用户作用名单文件功能
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=NO
2 local_enable=YES
3 write_enable=YES
4 local_umask=022
5 dirmessage_enable=YES
6 xferlog_enable=YES
7 connect_from_port_20=YES
8 xferlog_std_format=YES
9 listen=NO
10 listen_ipv6=YES
11 pam_service_name=vsftpd
12 userlist_enable=YES
13 tcp_wrappers=YES

在vsftpd服务程序的主配置文件中正确填写参数,然后保存并退出。还需要重启vsftpd服务程序,让新的配置参数生效。

# service vsftpd restart

按理来讲,现在已经完全可以本地用户的身份登录FTP服务器了。但是在使用root管理员登录后,CuteFTP显示连接不上:

可见,在我们输入root管理员的密码之前,就已经被系统拒绝访问了。这是因为vsftpd服务程序所在的目录中默认存放着两个名为“用户名单”的文件(ftpusers和user_list)。vsftpd服务程序目录中的这两个文件只要里面写有某位用户的名字,就不再允许这位用户登录到FTP服务器上。分别打开 ftpusers 和 user_list 这两个文件,删除里面的root,然后保存并退出。

vim /etc/vsftpd/user_list

vim /etc/vsftpd/ftpusers

果然如此!vsftpd服务程序为了保证服务器的安全性而默认禁止了root管理员和大多数系统用户的登录行为,这样可以有效地避免黑客通过FTP服务对root管理员密码进行暴力破解。如果您确认在生产环境中使用root管理员不会对系统安全产生影响,只需按照上面的提示删除掉root用户名即可。我们也可以选择 ftpusers 和 user_list 文件中没有的一个普通用户尝试登录FTP服务器:

在采用本地用户模式登录FTP服务器后,默认访问的是该用户的家目录,也就是说,访问的是/home/CentOS目录。而且该目录的默认所有者、所属组都是该用户自己,因此不存在写入权限不足的情况。如果想更改访问目录,在 vim /etc/vsftpd/vsftpd.conf 这个文件下输入 local_root=/***/***,路径和文件名,保存并退出。

最后记得重启ftp服务
 service vsftpd restart

本文参考自:《Linux就该这么学》    刘遄     著 

原文地址:https://www.cnblogs.com/opsprobe/p/9185139.html

时间: 2024-10-22 19:00:21

CentOS6.5下搭建ftp服务器(三种认证模式:匿名用户、本地用户、虚拟用户)的相关文章

server2016下搭建web服务器&三种虚拟主机实验文档

安装web服务器 首先打开server2016的服务器管理器,点击添加角色和功能如图所示: 开始之前默认下一步如图所示: 安装类型默认下一步选择基于角色或基于功能的安装如图所示: 服务器选择默认下一步如图所示: 服务器角色选择web服务器(IIS)如图所示: 功能选项一般默认即可哦如图所示: 确认下无误后点击安装如图所示: 安装完成点击关闭如图所示: 以上web服务器安装完成我们在Windows管理工具里打开如图所示: 点击打开后点到网站会有一个站点在这里我们可以进行操作更改,点击这里的web网

server2016下搭建web服务器&三种虚拟主机实验

虚拟主机:同一台服务器上运行多个网站实现方式:基于ip地址:基于端口号(默认80,修改1024以上任何):基于主机名(host,DNS)用host方式需在主机c/windows/system32/drivers/etc修改.实验内容:在server2016里搭建web服务器,然后创建2个网页,分别是主要为城市和开心首页.之后通过ip地址,端口号,主机名这三种方式运行网站. 首先在server2016上搭建web服务器,在服务器管理器--添加角色和功能--接着在服务器角色里勾选web服务器(IIS

RedHat5.9下搭建FTP服务器

FTP服务:基于C/S结构的文件传输协议 FTP会话属于复合TCP连接: 控制连接:TCP 21端口,发送FTP命令信息 数据连接:TCP 20端口,上传/下载数据 实验环境: Linux Client -----RHEL5.9(vmnet1)----------(vmnet1) Win7 Client 一. 实验要求:配置可匿名上传FTP服务 1.安装软件包 [[email protected] ~]# rpm -q vsftpd package vsftpd is not installed

ubuntu12.04下搭建ftp服务器

楼主想把同学硬盘里面的200多G电影共享给实验室的小伙伴们看,就打算在内网服务器上搭建一个ftp的服务器. 1.安装ftp 首先在终端下键入如下内容,安装ftp服务器: sudo apt-get install vsftpd 2.配置ftp 修改ftp的配置文件,该文件在/etc目录下,在终端中键入如下命令以打开配置文件: sudo gedit /etc/vsftpd.conf 简单的修改以下几个配置项即可: #禁止匿名访问 anonymous_enable=NO #接受本地用户 local_e

Windows下搭建FTP服务器

以Windows8 为例,介绍一下搭建 FTP服务器的步骤: 1.为Windows开启FTP功能:控制面板->程序->启用或关闭Windows功能,将下图所示的复选框选中 2.添加FTP站点:右键计算机->管理->服务和应用程序,选择Internet 信息服务 IIS 管理,如下图所示添加FTP站点 3.设置站点名称和你想要公开的路径 4.绑定地址和ssl设置: ip地址填上本机地址,端口默认21,需要ssl,证书选择IIS Express Development Certific

Centos6.8下搭建SVN服务器

1.Centos6.8下搭建SVN服务器 Subversion是一个自由,开源的版本控制系统.Subversion将文件存放在中心版本库里.这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况.这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节.Subversion是Apache基金会下的一个项目,官网 https://subversion.apache.org/ . 2.安装 yum -y install subversion 3.创建SVN版本库 m

vsftpd服务程序的三种认证模式

vsftpd服务程序的三种认证模式的配置方法--匿名开放模式.本地用户模式以及虚拟用户模式.了解PAM可插拔认证模块的原理.作用以及实战配置方法,通过实战课程进一步继续学习SELinux服务的配置方法,扩展学习TFTP简单文件传输协议理论及实操课程 文件传输协议 一般来讲,人们将电脑联网的首要需求就是获取资料,而文件传输是其中非常重要的方式之一,21世纪的互联网是由几千万台个人电脑.工作站.小型机.大型机等等不同型号.架构的物理设备共同组成的,即便是个人电脑上也可能会装有诸如Linux.Wind

Vsftpd文件传输服务(三种认证模式:匿名开放 、本地用户、虚拟用户)

FTP是一种在互联网中进行中文件传输的协议,基于客户端/服务器端模式,默认使用20.21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数. FTP的出现解决了各类设备.各类操作系统之间文件传输问题,极大地方便了用户通过网络资源的获取. FTP服务器常部署于企业内网中,具有容易搭建.方便管理的特点,目前有些FTP客户端工具还可以支持文件的多点下载以及断点续传,因此FTP服务得到了广大用户的青睐. FTP协议有两种工作模式: 1. 主动模

Ubunton下搭建ftp服务器 实现虚拟用户、本地用户、匿名用户的登陆及权限

#在ubunton系统下安装和配置ftp可以说是比较简单的 本篇教程是为了解决一下问题 需要搭建ftp服务器实现三种用户的登陆及权限管理 其中 anon可以自由的到特定的目录里下载东东: stu则可以到特定的目录里上传东东; 而tearcher,则可以对特定的目录里上传.下载东东; admin则可以对stu.teacher的数据进行统一的管理. 另外,做为系统上已经有的本地用户则可以登录自己的home目录. 针对上面的需求,ftp需要开通对匿名用户.本地用户.及虚拟用户的支持.并且特别对虚拟用户