参考-Vsftpd虚拟用户

Vsftpd虚拟用户

FTP 的数据链路原理

FTP 是相当古老的传输协议之一,他最主要的功能是在服务器与客户端之间进行档案的传输。 FTP 其实是以 TCP 封包的模式进行服务器与客户端计算机之间的联机,当联机建立后,使用者可以在客户端端连上 FTP 服务器来进行档案的下载与上传,此外,也可以直接管理用户在 FTP 服务器上面的档案呢,相当的方便! 而这个古老的协议是使用明码传输,且过去有相当多的安全危机历史。为了更安全的使用 FTP 协议, 我们主要介绍较为安全但功能较少的 vsftpd 这个软件吶。

FTP 功能简介

FTP 服务器的功能除了单纯的进行档案的传输与管理之外,依据服务器软件的设定架构, 他还可以提供几个主要的功能,底下我们约略的来谈一谈:

· 不同等级的用户身份:

FTP 服务器在预设的情况下,依据使用者登入的情况而分为三种不同的身份,分别是 (1)实体账号,real user;(2)访客, guest;(3)匿名登录者, anonymous 这三种。这三种身份的用户在系统上面的权限差异很大喔! 例如实体用户取得系统的权限比较完整,所以可以进行比较多的动作;至于匿名登录者, 大概我们就仅提供他下载一下资源而已,并不许匿名者使用太多主机的资源啊! 当然,这三种人物能够使用的『在线指令』自然也就不相同啰! ^_^

· 命令记录与登录文件记录:

FTP 可以利用系统的 syslogd 这个 daemon 来进行数据的纪录, 而记录的数据报括了用户曾经下达过的命令与用户传输数据(传输时间、档案大小等等)的纪录呢! 所以你可以很轻松的在 /var/log/ 里面找到各项登录信息喔!

· 限制或解除用户家目录所在(change root, 简称 chroot):

为了避免用户在您的 Linux 系统当中随意逛大街 (意指离开用户自己的家目录而进入到 Linux 系统的其他目录去), 所以将使用者的工作范围『局限』在用户的家目录底下,嗯!实在是个不错的好主意!FTP 可以限制用户仅能在自己的家目录当中活动喔!如此一来,由于使用者无法离开自己的家目录,而且登入 FTP 后,显示的『根目录』就是自己家目录的内容,这种环境称之为 change root ,简称 chroot ,改变根目录的意思啦!

这有什么好处呢?当一个恶意的使用者以 FTP 登入您的系统当中,如果没有 chroot 的环境下,他可以到 /etc, /usr/local, /home 等其他重要目录底下去察看档案数据,尤其是很重要的 /etc/ 底下的配置文件,如 /etc/passwd 等等。如果您没有做好一些档案权限的管理与保护,那他就有办法取得系统的某些重要信息, 用来『入侵』您的系统呢!所以在 chroot的环境下,当然就比较安全一些咯!

FTP 的运作流程与使用到的端口

FTP 的传输使用的是较为可靠的 TCP 封包协议,在前几章的网络基础当中我们谈过, TCP 这种封包格式在建立联机前会先进行三向交握的。不过 FTP 服务器是比较麻烦一些,因为 FTP 服务器使用了两个联机,分别是命令信道与数据流通道 (ftp-data) 。这两个联机都需要经过三向交握, 因为是 TCP 封包嘛!那么这两个联机通道的关系是如何呢?底下我们先以 FTP 预设的主动式 (active) 联机来作个简略的说明啰:

图一、FTP 服务器的主动式联机示意图

简单的联机就如上图所示,至于联机的步骤是这样的:

1. 建立命令通道的联机
如上图一所示,客户端会随机取一个大于 1024 以上的埠口 (port AA) 来与 FTP 服务器端的 port 21 达成联机, 这个过程当然需要三向交握了!达成联机后客户端便可以透过这个联机来对 FTP 服务器下达指令, 包括查询档名、下载、上传等等指令都是利用这个通道来下达的;

2. 通知 FTP 服务器端使用 active 且告知连接的埠号
FTP 服务器的 21 埠号主要用在命令的下达,但是当牵涉到数据流时,就不是使用这个联机了。 客户端在需要数据的情况下,会告知服务器端要用什么方式来联机,如果是主动式 (active) 联机时, 客户端会先随机启用一个埠口 (图一当中的 port BB) ,且透过命令通道告知 FTP 服务器这两个信息,并等待 FTP 服务器的联机;

3. FTP 服务器『主动』向客户端联机
FTP 服务器由命令通道了解客户端的需求后,会主动的由 20 这个埠号向客户端的 port BB 联机, 这个联机当然也会经过三向交握啦!此时 FTP 的客户端与服务器端共会建立两条联机,分别用在命令的下达与数据的传递。 而预设 FTP 服务器端使用的主动联机埠号就是 port 20 啰!

如此一来则成功的建立起『命令』与『数据传输』两个信道!不过,要注意的是, 『数据传输信道』是在有数据传输的行为时才会建立的通道喔!并不是一开始连接到 FTP 服务器就立刻建立的通道呢!留意一下啰!

以上是vsftpd的功能和原理,下面我给大家做一个小小的实验

实验环境

一:Linux6.4一台(192.168.10.199)

测试二:win7(物理机,IP:192.168.10.113)

环境建设起来了,我们想一想要做什么呢!平时企业中用的最多的就是vsftpd虚拟用户。如果要是用本地用户的话,那管理员的工作量有多大!我们可以想想一下,最好的方法就是用vsftpd的强大功能虚拟用户。

下面我来给大家演示:

Linux一

物理机

接下来我们在Linux上安装vsftpd

这里我为了加快进程就安装好了

我们查看一下vsftpd产生哪些配置文件

第一个是日记文件

第二个是虚拟用户认证配置文件

第三个是限制

第四个是黑白名单

第五个是vsftpd的配置文件(核心)

下面我开始配置虚拟用户,看我操作。

Ⅰ:我在/etc/vsftpd/下创建了一个名字为vuser.txt的文本

里面添加了三个用户(奇数为用户,偶数为密码)

Ⅱ:建立访问者的口令库文件,然后修改其权限

(如果系统提示找不到db_load命令,则需先安装yum –y install db4 (pam*是否需安装没经过测试)

Ⅲ:进入/etc/pam.d/中创建vsftpd.vuser

在其中添加如下信息:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser (32位系统是/lib/目录)

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser(32位系统是/lib/目录)

Ⅳ:创建虚拟用户映射的系统账号

Useradd –d /home/vsftpd –s /sbin/nologin vuser (创建系统账号,但不能登录系统)

Chmod 700 /home/vsftpd

Ⅴ:修改主配置文件(/etc/vsftpd/vsftpd.conf)

在里面添加如下几行信息

Guest_enable=yes  开启虚拟用户

User_config_dir=/etc/vsftpd/vsftpd_vuser_conf   虚拟用户配置文件存放目录

Guest_username=vuser虚拟用户映射到系统账号

Pam_service_name=vsftpd.vuser PAM认证文件

Ⅵ:进入/etc/vsftpd/vsftpd_vuser_conf目录,创建与虚拟用户名相同名称的文件(虚拟用户名即vuser.txt中的用户名名),比如创建test1。

这个目录是手工创建出来的,默认没有的。

Ⅶ: 在test1中填写如下信息

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_root=/usr/local/amp/apache/htdocs/test1 (此路径根据虚拟用户要访问的目录对应修改)

全部弄好之后不要忘记重新启动服务器

测试:我在物理机上!

先来互拼一下,看看网络到底通不通.(如果不通关闭防火墙iptables -F)

此时我们就开始测试了。

如果一开始访问不了的话,我们把防火墙和selinux全部关掉在试

我们发现此时是可以访问了,但是不要用户和密码,那就说明我们的主配置文件内的匿名用户还开启中。我们去把他关掉在试试看。还有没有同样的错误。

看,我们修改了主配置内的匿名,不允许登录了,测试成功了。

总结:客户端根据创建的虚拟用户连接服务器,虚拟用户映射到系统账号vuser登录ftp,然后FTP根据配置文件vsftpd.conf的设置(user_config_dir=/etc/vsftpd/vsftpd_vuser_conf)找到虚拟用户配置文件的存放目录,然后根据虚拟用户的配置文件指定的目录路径(local_root=/usr/local/amp/apache/htdocs/demo)访问到指定的目录。(注:虚拟用户访问到的文件根目录属主需要改成vuser)

时间: 2024-11-01 01:01:16

参考-Vsftpd虚拟用户的相关文章

vsftpd虚拟用户整理

Vsftpd虚拟用户的配置 第一步.安装 # wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo # yum clean all # yum -y install vsftpd # yum -y install db4-utils 第二步.建立虚拟用户 #vim /home/ftpusr.txt 1.  user1 2.  password1 3.  user2 4.  password2 5.  user3 6.  passwor

烂泥:ubuntu下vsftpd虚拟用户配置

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可是实际情况告诉我是,我太想当然了.经过一番的折腾终于把ubuntu下vsftpd虚拟用户的配置搞定了,下面就把我的配置步骤贴出来供得为参考. 一.业务要求 现在要求创建一个FTP账号ailanni,该账号只能登录到/www目录下,不能切换到上级目录.同时处于安全考虑还要求该账号上传的文件权限为644

Vsftpd 虚拟用户配置

System:Centos6.7x86_64 Author:miles Date:2015/11/24 shanghai step 1 安装 yum -y install vsftpd db4-utils step 2 创建虚拟用户 vim /opt/loginuser.txt milesaway   milesawaypwd db_load -T -t hash -f /home/loginuser.txt /etc/vsftpd/vsftpd_login.db chmod 600 /etc/

推荐-Vsftpd虚拟用户的配置 for CentOS

Vsftpd虚拟用户的配置 System:Linux centos6.5 2.6.32-431.el6.x86_64 vsftpd-2.2.2-21.el6.x86_64 第一步.安装 #cd  /etc/yum.repos.d/ # rm -rf * # wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo # yum clean all # yum -y install vsftpd # yum -y install db4-ut

实现验证的vsftpd虚拟用户

实现基于文件验证的vsftpd虚拟用户--(一台) 一.创建用户数据库文件 vim /etc/vsftpd/vuser cd /etc/vsftpd/ db_load -T -t hash -f vusers.txt vusers.db //利用文本生成虚拟用户的数据库文件 chmod 600 vusers.db //实现基于文件验证的vsftpd虚拟用户 二.创建用户和访问FTP目录 useradd -d /var/ftproot -s /sbin/nologin vuser chmod +r

VSFTPD虚拟用户实现

VSFTPD虚拟用户 所有的虚拟用户会统一映射为一个指定的系统帐号:访问共享位置即为此系统帐号的家目录各虚拟用户可赋予不同的访问权限,通过匿名用户的权限控制参数进行指定. 1.创建虚拟用户的帐号密码数据库文件     a.创建帐号密码文件 格式:奇数行为帐号,偶数行为密码 [[email protected]~]# vim /etc/vsftpd/vusers.list test1     #用户 123456   #密码 test2 123456 test3 123456 b.将该文件转换为二

实现基于mysql验证的vsftpd虚拟用户 (centos6)

实现基于mysql验证的vsftpd虚拟用户 (centos6) 说明:本实验在两台Cento主机上实现,一台作为FTP服务器,一台作为数据库服务器 FTP服务器ip:172.16.250.90 Mysql服务器ip:172.16.252.16 一.安装ftp服务器安装包 yum install vsftpd pam_mysql 二.数据库服务器创建虚拟用户帐号   1.建立虚拟用户数据库      mysql> create database vsftpd;     mysql> show 

VSFTPD虚拟用户实战配置

FTP是文件传输协议,正是由于这种协议使得主机间可以共享文件. FTP 使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输. vsftpd是一款在LINUX发行版中最主流的FTP服务器程序:特点是小巧轻快,安全易用:能让其自身特点得发发挥和掌握.如果使用系统用户登录FTP,是比较危险的,所以我们主要采用vsftpd虚拟用户登录FTP服务器进行常见的操作,当然配置就相对复杂一点.(centos7安装) 1.首先安装FTP以及虚拟用户需要用到的软件及认证模块 yu

FTP服务学习笔记之基于MySQL+PAM的vsftpd虚拟用户

基于mysql+PAM的vsftpd虚拟用户配置 一.实验说明 操作系统:Redhat5.8_X64bit 实验平台:VMware Workstation 所需要的软件包:pam_mysql-0.7RC1.tar.gz 二.安装所需要程序 1.事先安装好开发环境和mysql数据库 # yum -y groupinstall "Development Tools" "Development Libraries" #yum -y install mysql-server