Linux云计算-07_Linux文件服务器之vsftpd服务器

本章向读者介绍企业vsftpd服务器实战、匿名用户访问、系统用户访问及虚拟用户实战等。

1 vsftpd服务器企业实战

文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。

1.1 FTP传输模式

FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。主被动模式如图(a)、(b)所示,主被动模式详细区别如下:

  • FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。
  • FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

在企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。关于防火墙配置后面章节会讲解。

204156_vG81_97118.jpg

图1-1(a) FTP主动模式

204218_G2gD_97118.jpg

图1-1(b) FTP被动模式

1.2 vsftpd服务器安装配置

vsftpd服务器端安装有两种方法,一是基于YUM方式安装,而是基于源码编译安装,最终实现效果完全一致,本文采用yum安装vsftpd,步骤如下:

1.2.1 yum安装vsftpd

在命令行执行如下命令

# yum install vsftpd* -y

image-20210715180422132

图1-2 yum安装vsftpd

1.2.2 检查vsftpd安装后的配置文件路径

# rpm -ql vsftpd|more

image-20210715180519983

图1-3 检查vsftpd安装后的配置文件路径

1.2.3 启动vsftpd服务

# systemctl restart vsftpd.service

image-20210715180619290

图1-4 启动vsftpd服务

1.2.4 查看进程是否启动

# ps -ef |grep vsftpd

image-20210715180655568

图1-5 查看vsftp进程

1.2.5 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        FTP使用20端口进行数据传输;
xferlog_std_format=YES          日志文件将根据xferlog的标准格式写入;
listen=NO                       vsftpd不以独立的服务启动,通过xinetd服务管理,建议改成YES;
listen_ipv6=YES                 启用IPV6监听;
pam_service_name=vsftpd         登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证;
userlist_enable=YES             vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP;
tcp_wrappers=YES                设置vsftpd与tcp wrapper结合进行主机的访问控制,vsftpd服务器检查/etc/hosts.allow 和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。
1.2.6 通过Windows客户端资源管理器访问Vsftp服务器端

ftp://192.168.1.181

image-20210715181201553

图1-6 匿名用户访问FTP默认目录

1.2.7 FTP设置为被动模式使用端口方法

FTP主被动模式,默认为主动模式,设置为被动模式使用端口方法如下:

pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100  

1.3 vsftpd服务器简介

目前主流的FTP服务器软件包括:vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、 FileZilla Server等软件,其中Unix/Linux使用较为广泛的FTP服务器软件为vsftpd 。

非常安全的FTP服务进程(Very Secure FTP daemon,vsftpd),vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用(1000用户)等。

vsftpd基于GPL开源协议发布,在中小企业中得到广泛的应用,vsftpd可以快速上手,基于vsftpd虚拟用户方式,访问验证更加安全。vsftpd还可以基于MYSQL数据库做安全验证,多重安全防护。

1.4 FTP客户端简介

windows和Linux系统默认都自带有ftp命令程序,可以连接到FTP服务器进行交互式的上传,下载通信。除此以外,还有大量的图形化FTP客户端工具。

windows中常用FTP客户端软件包括CuteFTP、FlashFXP、LeapFTP、Filezilla等。

1.5 vsftpd匿名用户配置

vsftpd默认以匿名用户访问,匿名用户默认访问的FTP服务器路径为:/var/ftp/pub,匿名用户只有查看权限,无法创建、删除、修改。如需关闭FTP匿名用户访问,需修改配置文件/etc/vsftpd/vsftpd.conf,将anonymous_enable=YES修改为anonymous_enable=NO,重启vsftpd服务即可。

1、设置允许匿名用户能够上传、下载、删除文件

如果允许匿名用户能够上传、下载、删除文件,需在/etc/vsftpd/vsftpd.conf配置文件中加入如下:

anon_upload_enable=YES              允许匿名用户上传文件;
anon_mkdir_write_enable=YES         允许匿名用户创建目录; 

匿名用户完整vsftpd.conf配置文件如下:

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
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

2、修改目录权限

由于默认vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要ftp用户对/var/ftp/pub目录有写入权限,使用如下chown和chmod任意一种即可,设置命令如下:

方法一:

# chown -R ftp /var/ftp/pub

方法二:

# chmod o+w /var/ftp/pub

image-20210715183544247

图1-6 (a)更改/var/ftp/pub目录属主

image-20210715183915726

图1-6(b)更改/var/ftp/pub目录写入权限

如上vsftpd.conf配置文件配置完毕,同时权限设置完

4、重启vsftpd服务

# systemctl restart vsftpd.service

image-20210715191136086

5、通过Windows客户端访问,能够上传文件、删除文件、创建目录等操作,如图1-7所示:

image-20210715184800868

图1-7 匿名用户访问上传文件

1.6 vsftpd系统用户配置

vsftpd匿名用户设置完毕,匿名用户,任何人都可以查看FTP服务器的文件、目录,甚至可以修改、删除,此方案不适合存放私密文件在FTP服务器,如何保证文件或者目录专属拥有者呢,vsftpd系统用户可以实现该需求。

实现vsftpd系统用户方式验证,只需在Linux系统中创建多个用户即可,创建用户使用useradd,同时给用户设置密码,即可通过用户和密码登录FTP,进行文件上传、下载、删除等操作。vsftpd系统用户实现方法步骤如下:

1、Linux系统中创建系统用户superman1、superman2,分别设置密码为123456:

# useradd superman1

# useradd superman2

# echo 123456|passwd --stdin superman1

# echo 123456|passwd --stdin superman2

image-20210715190004494

图1-8 创建用户并设置密码

2、修改vsftpd.conf配置文件如下:

anonymous_enable=NO
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

3、重启vsftpd服务

# systemctl restart vsftpd.service

image-20210715191136086

4、通过Windows资源客户端验证,使用superman1、superman2用户登录FTP服务器,即可上传文件、删除文件、下载文件,superman1、superman2系统用户上传文件的家目录在/home/superman1、/home/superman2下,如图1-9(a)、1-9(b)所示:

image-20210715190713620

图1-9(a) superman1用户登录FTP服务器

image-20210715191043049

图1-9(b) superman1登录FTP服务器上传文件

1.7 vsftpd虚拟用户配置

注意:当允许虚拟用户登录时,就不能实现实体用户登录!!两者不共存!

如果基于vsftpd系统用户访问FTP服务器,系统用户越多越不利于管理,而且不利于系统安全管理,鉴于此,为了能更加的安全使用vsftpd,需使用vsftpd虚拟用户方式。

vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。

vsftpd虚拟用户企业案例配置步骤如下:

1、安装vsftpd虚拟用户需用到的软件及认证模块;

# yum install pam* libdb-utils libdb* --skip-broken -y

image-20210715213047910

图1-10 安装vsftpd虚拟用户需用到的软件及认证模块

2、创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中superman001、superman002为虚拟用户名,123456为密码,如果有多个用户,依次格式填写即可;

# echo "superman001
123456
superman002
123456" > /etc/vsftpd/ftpusers.txt

image-20210715214033668

图1-11 创建虚拟用户临时文件

3、生成vsftpd虚拟用户数据库认证文件,设置权限700;

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

# chmod 700 /etc/vsftpd/vsftpd_login.db

image-20210715214157482

图1-12 生成vsftpd虚拟用户数据库认证文件

4、配置PAM认证文件,/etc/pam.d/vsftpd文件配置成如下两行;

# echo "auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login" > /etc/pam.d/vsftpd

image-20210716190326946

图1-13 配置PAM认证文件

5、所有vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下;

# useradd -s /sbin/nologin ftpuser

image-20210715214512694

图1-14 创建虚拟用户需要映射到的一个系统用户

6、完整vsftpd.conf配置文件如下;

#global config Vsftpd
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
chroot_local_user=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES

#config virtual user FTP
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
allow_writeable_chroot=YES

如上vsftpd虚拟用户配置文件参数详解:

#config virtual user FTP
pam_service_name=vsftpd                         虚拟用户启用pam认证;
guest_enable=YES                                启用虚拟用户;
guest_username=ftpuser                          映射虚拟用户至系统用户ftpuser;
user_config_dir=/etc/vsftpd/vsftpd_user_conf    设置虚拟用户配置文件所在的目录;
virtual_use_local_privs=YES                     虚拟用户使用与本地用户相同的权限;
allow_writeable_chroot=YES                      所有的用户都将拥有chroot权限。

7、至此,所有虚拟用户共同基于/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录;

# mkdir -p /etc/vsftpd/vsftpd_user_conf

image-20210715215120478

图1-15 创建虚拟用户配置文件主目录

8、如下分别为虚拟用户superman001、superman002用户创建配置文件;

为superman001用户创建配置文件,同时创建私有的虚拟目录,配置如下:

# echo "local_root=/home/ftpuser/superman001
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES" > /etc/vsftpd/vsftpd_user_conf/superman001

image-20210715215533883

图1-16 为superman001用户创建配置文件,同时创建私有的虚拟目录

为superman002用户创建配置文件,同时创建私有的虚拟目录,配置如下:

# echo "local_root=/home/ftpuser/superman002
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES" > /etc/vsftpd/vsftpd_user_conf/superman002

image-20210715215644250

图1-17 为superman002用户创建配置文件,同时创建私有的虚拟目录

虚拟用户配置文件内容详解:

local_root=/home/ftpuser/superman002    superman002虚拟用户配置文件路径;
write_enable=YES                        允许登陆用户有写权限;     
anon_world_readable_only=YES            允许匿名用户下载,然后读取文件;
anon_upload_enable=YES                  允许匿名用户上传文件权限,只有在write_enable=YES时该参数才生效;
anon_mkdir_write_enable=YES             允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;
anon_other_write_enable=YES             允许匿名用户其他权限,例如删除、重命名等。

9、创建虚拟用户各自虚拟目录;

# mkdir -p /home/ftpuser/{superman001,superman002}

# chown -R ftpuser:ftpuser /home/ftpuser

image-20210715220219109

图1-18 创建虚拟用户各自虚拟目录

10、重启vsftpd服务;

# systemctl restart vsftpd.service

image-20210715180619290

图1-19 启动vsftpd服务

11、通过Windows客户端资源管理器登录vsftpd服务端,测试结果如图1-20(a)、1-20(b)所示:

image-20210715220724327

图1-20(a) superman001虚拟用户登录FTP服务器

image-20210716190507033

图1-20(b) superman001虚拟用户上传下载文件

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容