网络文件共享服务(一)

存储类型

在这里插入图片描述
存储类型分为三种

直连式存储:Direct-Attached Storage,简称DAS
eg:家用电脑
网络附加存储:Network-Attached Storage,简称NAS

存储区域网络:Storage Area Network,简称SAN

DAS存储

在这里插入图片描述
DAS存储是最常见的一种存储方式,尤其是在中小企业应用中。PC中的硬盘或只有一个外部SCSI接口的JBOD都属于DAS架构。DAS是指存储设备直接连接到服务器总线上,存储设备只与一台独立的主机连接,其他主机不能使用这个存储设备。DAS存储设备与服务器主机之间的连接通道通常采用SCSI连接,DAS存储设备主要是磁盘阵列(RAID: Redundant Arrays of Independent Disks)、磁盘簇(JBOD:Just a Bunch Of Disks)等。不具有一定的容错性。

NAS存储

在这里插入图片描述
NAS存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群计算机上。与DAS以及SAN不同,NAS是文件级的存储方法。采用NAS较多的功能是用来进行文件共享。管理机制是基于文件的形式。

NAS存储也通常被称为附加存储,顾名思义,就是存储设备通过标准的网络拓扑结构(例如以太网)添加到一群计算机上。NAS是文件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。如今更多的人采用NAS较多的功能是用来文档共享、图片共享、电影共享等等,而且随着云计算的发展,一些NAS厂商也推出了云存储功能,大大方便了企业和亲们等个人用户的使用。

NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内,同时NAS的应用非常灵活。但NAS有一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。

SAN存储

在这里插入图片描述
存储区域网络,这个是通过光纤通道或以太网交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。SAN经过十多年历史的发展,已经相当成熟,成为业界的事实标准(但各个厂商的光纤交换技术不完全相同,其服务器和SAN存储有兼容性的要求)。

SAN提供了一种与现有LAN连接的简易方法,并且通过同一物理通道支持广泛使用的SCSI和IP协议。SAN不受现今主流的、基于SCSI存储结构的布局限制。特别重要的是,随着存储容量的爆炸性增长,SAN允许企业独立地增加它们的存储容量。SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据置放在那里,服务器都可直接存取所需的数据。因为采用了光纤接口,SAN还具有更高的带宽。

如今的SAN解决方案通常会采取以下两种形式:光纤信道以及iSCSI或者基于IP的SAN,也就是FC SAN和IP SAN。光纤信道是SAN解决方案中大家最熟悉的类型,但是,最近一段时间以来,基于iSCSI的SAN解决方案开始大量出现在市场上,与光纤通道技术相比较而言,这种技术具有良好的性能,而且价格低廉。

SAN的优势:
随着存储容量的增长,SAN允许企业独立地增加他们的存储容量。
SAN允许任何服务器连接到任何存储阵列(好处是:不管数据放在哪里,服务器都可以直接存取所需的
数据)
由于使用光纤接口,SAN具有更高的带宽。除了FC连接,SAN连接还有ISCSI(SCSI over IP)以及
SAS(Serial Attached SCSI)接口。
光纤接口可以提供10公里那么长那么远的连接长度,非常容易实现物理分离的存储

三种存储比较

SAN与NAS的主要区别体现在文件系统所在的位置
在这里插入图片描述
三种存储架构的应用场景
DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业

NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低

SAN则适用于大型应用或数据库系统,缺点是成本高、较为复杂

文件传输协议FTP

FTP工作原理介绍

文件传输协议:File Transfer Protocol 早期的三个应用级协议之一,基于C/S结构
数据传输格式:二进制(默认)和文本
双通道协议:命令和数据连接,不同的独立端口

两种模式: 从服务器角度
主动(PORT style):服务器主动连接
命令(控制):客户端:随机port —> 服务器:21/tcp
数据:客户端:随机port <—服务器:20/tcp
主动连接客户端的端口在命令通道三次握手中就提供了随机端口

被动(PASV style):客户端主动连接
命令(控制):客户端:随机port —> 服务器:21/tcp
数据:客户端:随机port —> 服务器:随机port /tcp
被动连接的端口在命令通道三次握手中的时候会协商

命令的端口都是21端口。服务器端口一般是固定的。

范例:服务器被动模式数据端口
227 Entering Passive Mode (172,16,0,1,224,59)
服务器数据端口为:224*256+59
在这里插入图片描述

防火墙:防火墙会分析命令通道中的协商端口。理解FTP协议内容,智能打开对应的端口,用完之后自动断开。

FTP服务状态码:
1XX:信息 125:数据连接打开
2XX:成功类状态 200:命令OK 230:登录成功
3XX:补充类 331:用户名OK
4XX:客户端错误 425:不能打开数据连接
5XX:服务器错误 530:不能登录

用户认证:
匿名用户:ftp,anonymous,对应Linux用户ftp
系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
虚拟用户:特定服务的专用用户,独立的用户/密码文件

常见 FTP 相关软件

FTP服务器端软件
Wu-ftpd,Proftpd,Pureftpd,Filezilla Server,Serv-U,Wing FTP Server,IIS

vsftpd:Very Secure FTP Daemon,CentOS 默认FTP服务器
高速,稳定,下载速度是WU-FTP的两倍

ftp.redhat.com数据:单机最多可支持15000个并发

客户端软件:
ftp,lftp,lftpget,wget,curl lftp:有颜色,支持补全 yum install lftp -y
ftp -A ftpserver port -A主动模式 –p 被动模式
lftp –u username ftpserver
lftp username@ftpserver
lftpget ftp://ftpserver/pub/file
gftp:GUI centos5 最新版2.0.19 (11/30/2008)
filezilla,FTP Rush,CuteFtp,FlashFXP,LeapFtp
IE ftp://username:password@ftpserver

vsftpd 软件介绍

由vsftpd包提供,不再由xinetd管理
用户认证配置文件:/etc/pam.d/vsftpd

启动服务相关文件:
/usr/lib/systemd/system/vsftpd.service
/etc/rc.d/init.d/vsftpd

配置文件:
/etc/vsftpd/vsftpd.conf
man 5 vsftpd.conf

配置文件格式:
option=value
注意:= 前后不要有空格

用户和其共享目录
匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
系统用户共享文件位置:用户家目录
虚拟用户共享文件位置:为其映射的系统用户的家目录

vsftpd服务常见配置

查看对应命令的帮助:

[root@centos8mini ~]#man 5 vsftpd.conf

命令端口

[root@centos8mini ~]#yum install vsftpd -y

[root@centos8mini ~]#ss -ntl
State         Recv-Q         Send-Q                  Local Address:Port                  Peer Address:Port         
LISTEN        0              128                           0.0.0.0:22                         0.0.0.0:*            
LISTEN        0              128                              [::]:22                            [::]:*            
[root@centos8mini ~]#systemctl start vsftpd
[root@centos8mini ~]#ss -ntl
State         Recv-Q         Send-Q                  Local Address:Port                  Peer Address:Port         
LISTEN        0              128                           0.0.0.0:22                         0.0.0.0:*            
LISTEN        0              32                                  *:21                               *:*            
LISTEN        0              128                              [::]:22                            [::]:*            
[root@centos8mini ~]#

listen_port=21
可以加到主配置文件的最下面
[root@centos8mini ~]#vim /etc/vsftpd/vsftpd.conf

在这里插入图片描述

主动模式端口

connect_from_port_20=YES 主动模式端口为20

ftp_data_port=20 (默认) 指定主动模式的端口
在这里插入图片描述

被动模式端口范围

linux 客户端默认使用被动模式
windows 客户端默认使用主动模式
pasv_min_port=6000 0为随机分配
pasv_max_port=6010
在这里插入图片描述

使用当地时间

use_localtime=YES 使用当地时间(默认为NO,使用GMT)
在这里插入图片描述

匿名用户登录

anonymous_enable=YES 支持匿名用户 centos8中默认不能匿名访问。
在这里插入图片描述
no_anon_password=YES 匿名用户略过口令检查 , 默认NO
在这里插入图片描述
no_anon_password,可以加在主配置文件 /etc/vsftpd/vsftpd.conf 最后面。

[root@centos8mini ~]#vim /etc/vsftpd/vsftpd.conf

在这里插入图片描述

匿名用户上传

下载不受限制,但是上传会存在限制。

anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录
主配置文件中 vim /etc/vsftpd/vsftpd.conf 取消对应的注释即可
在这里插入图片描述
以上步骤做好之后依旧不能上传文件,这里就变成了权限问题。文件系统级的权限。

[root@centos8mini ~]#ll -d /var/ftp/pub/
drwxr-xr-x 2 root root 6 May 14  2019 /var/ftp/pub/
[root@centos8mini ~]#  这里的默认共享文件目录的权限都是root的,需要给匿名访问账户ftp或者annoymous改为读写执行权限
[root@centos8mini ~]#setfacl -m u:ftp:rwx /var/ftp/pub/      #授权,属于文件系统级的权限开放

到这里可以上传文件到共享服务器/var/ftp/pub/ 但是不能下载该上传的文件,下载上传文件需要全部都要读权限

chmod 440 /var/ftp/pub    单个文件下载

anon_world_readable_only 只能下载全部读的文件, 默认YES
这个改为NO,之后,不需要之前的文件都要全部读才能下载。

anon_umask=0333 指定匿名上传文件的umask,默认077
前面的0必须写,这样上传的文件都是440 就可以直接上传下载了
在这里插入图片描述

anon_other_write_enable=YES 可删除和修改上传的文件, ,默认NO
默认不能覆盖别人的文件,新加在主配置文件的最后面即可
在这里插入图片描述
对默认共享文件根 /var/ftp 也可以增加读写执行权限,可以上传数据。但是命令行登入的时候会出现提示:不能运行在可写的根中的提示。居于安全考虑,不能对根目录给可写权限
取消acl权限:

[root@centos8mini ~]#setfacl -b /var/ftp/
[root@centos8mini ~]#getfacl /var/ftp/
getfacl: Removing leading '/' from absolute path names
# file: var/ftp/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

指定匿名用户的上传文件的默认的所有者和权限

默认上传的所有者是 ftp
修改主配置文件最后写上下面的配置,修改默认上传所有者为kaivi,并且权限为0644
chown_uploads=YES #默认NO
chown_username=kaivi
chown_upload_mode=0644 #0必须写

Linux系统用户

local_enable=YES 是否允许linux用户登录
在这里插入图片描述
write_enable=YES 允许linux用户上传文件
在这里插入图片描述
local_umask=022 指定系统用户上传文件的默认权限
在这里插入图片描述

将系统用户映射为指定的guest用户

在主配置文件最后面加上其配置即可 /etc/vsftpd/vsftpd.conf

guest_enable=YES 所有系统用户都映射成guest用户
在这里插入图片描述
guest_username=ftp 配合上面选项才生效,指定guest用户
在这里插入图片描述
local_root=/ftproot guest用户登录所在目录
指定guest用户指定的特定文件夹。也是在主配置文件的最后面增加即可

local_root=/data/ftproot       #指定访问/data/ftproot

在这里插入图片描述

禁锢系统用户

禁锢所有系统在家目录中

chroot_local_user=YES 禁锢系统用户,默认NO,即不禁锢
在这里插入图片描述

禁锢或不禁锢特定的系统用户在家目录中

chroot_list_enable=YES #启动列表功能
chroot_list_file=/etc/vsftpd/chroot_list #一个用户文件 里面是用户账号名称,默认这个文件不存在。

当chroot_local_user=YES时,则chroot_list中用户不禁锢
当chroot_local_user=NO时,则chroot_list中用户禁锢

一般会把超级用户映射为guest账户,让虚拟用户访问不同的目录以及权限。虚拟用户账号密码可以整合放置在数据库中。

日志

wu-ftp日志:默认启用
xferlog_enable=YES 启用记录上传下载日志,此为默认值
xferlog_std_format=YES 使用wu-ftp日志格式,此为默认值
xferlog_file=/var/log/xferlog 可自动生成, 此为默认值

[root@centos8mini ~]#ll /var/log/xferlog 
-rw------- 1 root root 0 Dec 17 21:48 /var/log/xferlog
[root@centos8mini ~]#

vsftpd日志:默认不启用 比上面的详细
直接在主配置文件中新增打开即可

dual_log_enable=YES 使用vsftpd日志格式,默认不启用
vsftpd_log_file=/var/log/vsftpd.log 可自动生成, 此为默认值

提示信息

登录提示信息

ftpd_banner=“welcome to kaivi ftp server”
在这里插入图片描述
banner_file=/etc/vsftpd/ftpbanner.txt #优先级更高
在这里插入图片描述

目录访问提示信息

dirmessage_enable=YES 此为默认值
在文件夹中新建一个.message即可
在这里插入图片描述
message_file=.message 信息存放在指定目录下.message ,此为默认值

PAM模块实现用户访问控制

pam_service_name=vsftpd
在主配置文件的最后,默认是开启的

[root@centos8mini ~]#vim /etc/pam.d/vsftpd 
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
 #pam_listfile.so此模块调用 auth验证      上述 sense=deny改为 sense=allow则相反
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

在这里插入图片描述
pam配置文件:/etc/pam.d/vsftpd

[root@centos8mini ~]#man 8 pam_listfile  #查看对应帮助

/etc/vsftpd/ftpusers 默认文件中用户拒绝登录

[root@centos8mini ~]#cat /etc/vsftpd/ftpusers  #本身的系统账号
# Users that are not allowed to login via ftp  #默认为deny
root              #root不能登入的原因之一  还有一个下面的userlist_enable   #/etc/vsftpd/user_list 黑名单
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

是否启用控制用户登录的列表文件

userlist_enable=YES 此为默认值 默认是一个黑名单,在列表中拒绝。

[root@centos8mini ~]#vim /etc/vsftpd/user_list 
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password. #连口令提交都不用就拒绝
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers  #联合提示/etc/vsftpd/ftpusers
# for users that are denied.
root                #root不能登入的原因之一  还有上面的pam验证
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

userlist_deny=YES(默认值) 黑名单,不提示口令,NO为白名单

userlist_file=/etc/vsftpd/users_list 此为默认值
在这里插入图片描述

vsftpd服务指定用户身份运行

nopriv_user=nobody 此为默认值
直接在主配置后面添加即可 /etc/vsftpd/vsftpd.conf

[root@centos8mini ~]#ps -auxf
......
root       3066  0.0  0.0  26952  1296 ?      Ss   Dec17   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root       4904  0.0  0.2  61616  4112 ?      Ss   11:03   0:00 \_/usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf
nobody     4905  0.0  0.1  37260  2476 ?      S    11:03   0:00   \_/usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf
[root@centos8mini ~]#

连接数限制

直接添加在主配置文件之后即可 /etc/vsftpd/vsftpd.conf
max_clients=0 最大并发连接数
在这里插入图片描述
max_per_ip=0 每个IP同时发起的最大连接数
在这里插入图片描述

传输速率,字节/秒

anon_max_rate=0 匿名用户的最大传输速率
在这里插入图片描述
local_max_rate=0 本地用户的最大传输速率
在这里插入图片描述

连接时间:秒为单位

connect_timeout=60 主动模式数据连接超时时长
accept_timeout=60 被动模式数据连接超时时长
data_connection_timeout=300 数据连接无数据输超时时长
idle_session_timeout=60 无命令操作超时时长

优先以文本方式传输

windows:回车 换行
linux:只有换行
在主配置文件中后面添加下面2行命令即可 ,或者取消主配置文件中的注释
ascii_upload_enable=YES
ascii_download_enable=YES
在这里插入图片描述
在文件传输的时候最好用二进制的binary

实现基于SSL的FTPS

查看是否支持SSL

[root@centos8mini ~]#which vsftpd
/usr/sbin/vsftpd
[root@centos8mini ~]#ldd /usr/sbin/vsftpd 
或者:
[root@centos8mini ~]#ldd `which vsftpd`

在这里插入图片描述
FTP只需要一个文件,公钥和私钥都是放在一起。
如何把公钥和私钥组合一起,可以用cat命令加到最后重定向到一个新文件即可。
不过这里本身有一个命令make vsftpd.pem,可以直接生成一个既有公钥又有私钥的文件。
但是需要一个makefile文件生成,默认8上没有此文件。

创建自签名证书

#CentOS 7 上可以实现
cd /etc/pki/tls/certs/
make vsftpd.pem
openssl x509 -in vsftpd.pem -noout –text
#或者分别生成一个证书和私钥文件
mkdir /etc/vsftpd/ssl
cd /etc/vsftpd/ssl
openssl req -x509 -nodes -keyout vsftpd.key -out vsftpd.crt -days 365 -newkey
rsa:2048

操作实验:

[root@centos8mini ~]#cd /etc/pki/tls/certs/
[root@centos8mini certs]#ls
ca-bundle.crt  ca-bundle.trust.crt
[root@centos8mini certs]#

这里在centos7中把Makefile生成文件传输过来也可以

[root@centos7mini ~]#cd /etc/pki/tls/certs/
[root@centos7mini certs]#ls
ca-bundle.crt  ca-bundle.trust.crt  make-dummy-cert  Makefile  renew-dummy-cert
[root@centos7mini certs]#scp Makefile 192.168.32.8:/etc/pki/tls/certs/
The authenticity of host '192.168.32.8 (192.168.32.8)' can't be established.
ECDSA key fingerprint is SHA256:ofG5ch7HSw0hxj2Ef76oh4WuOnpubsABj0/YiNrGqYw.
ECDSA key fingerprint is MD5:cc:68:4d:5c:63:31:d1:62:2b:f9:d4:b5:fc:5e:1d:7c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.32.8' (ECDSA) to the list of known hosts.
root@192.168.32.8's password: 
Makefile                                                                         100% 2516   214.8KB/s   00:00    
[root@centos7mini certs]#

centos8中操作,因为Makefile文件是一个针对后缀名运行的脚本生成文件,可以打开看看。只要要求后缀时 .pem 即可

[root@centos8mini certs]#ls
ca-bundle.crt  ca-bundle.trust.crt  Makefile
[root@centos8mini certs]#
[root@centos8mini certs]#
[root@centos8mini certs]#make vsftpd.pem
umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2  ; \
cat $PEM1 >  vsftpd.pem ; \
echo ""    >> vsftpd.pem ; \
cat $PEM2 >> vsftpd.pem ; \
rm -f $PEM1 $PEM2
Generating a RSA private key
.....+++++
........................................................+++++
writing new private key to '/tmp/openssl.ONZeVL'  #自己生成的临时文件夹
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing	  
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:M39       
Common Name (eg, your name or your server's hostname) []:likai.tech
Email Address []:
[root@centos8mini certs]#

[root@centos8mini certs]#cat vsftpd.pem     #查看生成的文件,公钥私钥都包含

在这里插入图片描述
然后需要在主配置文件中引用这个生成的SSL文件vsftpd.pem

配置vsftpd服务支持SSL:

[root@centos8mini ~]#vim /etc/vsftpd/vsftpd.conf  #在主配置文件最后面添加即可

ssl_enable=YES
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

[root@centos8mini ~]#systemctl restart vsftpd

在centos6中当作客户端测试

[root@centos6mini ~]#ftp 192.168.32.8
Connected to 192.168.32.8 (192.168.32.8).
220 (vsFTPd 3.0.3)
Name (192.168.32.8:root): kaivi
530 Non-anonymous sessions must use encryption.   #提示需要加密
Login failed.
421 Service not available, remote server has closed connection
ftp> 

#用filezilla等工具测试
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值