文件共享服务FTP、NFS

FTP(File Transfer Protocol)文本传输协议

工作机制:基于C/S机构,并且是双通道协议,通过建立2个tcp连接来实现C/S的命令连接和数据的传输

命令连接的tcp(C---àS)端口号Server:21,Client:随机

数据传输的tcp则根据Server不同模式而有不同的端口号(需要注意的是,Server的不同模式是由Client的命令决定的)

FTP的数据传输为两种模式:

第一种:Server主动连接(S---àC),称为PORT style

      在此模式下,S默认开启tcp:20的端口号进行传输数据给C的tcp随机端口

      此模式可能会因为C防火墙的存在而导致数据传输失败

第二种:Server被动连接(C---àS),称为PASV style(一般为默认)

      在此模式下,C和S的tcp都是开启随机端口,S的随机端口会在命令连接时发送消息给C,通过计算得出S的随机端口号,格式如下:

      227 Entering “数据连接模式” Mode (IP_ADDRESS,Num1,Num2)

      端口号=256*Num1+Num2

      此模式下,C的防火墙不会影响数据的得到,但是S的防火墙却会阻碍C发来的请求数据消息。

(这两种模式中,C的随机端口在建立命令连接tcp时已发给S)

(介于防火墙的存在,因而FTP服务更多的是应用于内部局域网)

(命令连接tcp端口一直连接,数据连接tcp端口传完数据就断开)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

FTP服务器目前使用的是vsftpd软件服务

FTP客户端经常使用的工具是ftp、lftp、lftpget/wget(可直接下载数据)、filezilla(图形化界面)

FTP服务的用户认证:

      匿名用户:ftp、anonymous(不需要输密码)

      系统用户:Linux的用户

      虚拟用户:给FTP服务特定使用的用户,独立的用户/密码文件

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

vsftpd服务的配置介绍

默认的共享文件位置会根据用户类型的不同而不同:

匿名用户是/var/ftp(系统用户ftp的家目录)

系统用户是用户家目录

虚拟用户则是根据选项映射为对应的系统用户家目录

对匿名用户的相关配置选项:

      anonymous_enable=no  不支持匿名用户(默认为YES:支持)

      no_anon_password=yes 不检查匿名用户口令(默认为no:检查)

      anon_world_readable_only    只能下载other上有r权限的文件(默认开启:yes)

      anon_upload_enable=yes和anon_mkdir_write_enable=yes     表示可以上传文件和创建目录(需要注意的是登录用户需要对此时共享文件夹有w权限)

      anon_other_write_enable=YES    可删除和修改上传的文件(默认为:no)

对系统用户的配置选项:

guest_enable=YES ,guest_username=ftp      所有系统用户都映射成guest用户,使其登陆后进入到ftp的家目录,并且此时显示的会是“/”,实现禁锢(root默认不允许连接,也可映射成其他用户,但是需要另外设置禁锢选项)

local_root=路径   配合上面两个选项使用,指定登入后的根的实际目录

(注意,登录用户不可以对登入之后pwd命令显示的根有w权限,否则登录不上)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

实验:实现基于SSL的的FTPS(需确认已经调用了FTP服务是否调用了libssl.so模块)

1.进行自签名的证书,可在/etc/pki/tls/certs/下,创建

           make  vsftpd.pem(实际上就是调用原来openssl命令创建)

2.在配置文件/etc/vsftpd/vsftpd.conf中加入需要启用ssl的选项     

ssl_enable=YES        启用SSL

allow_anon_ssl=NO         匿名不支持SSL

force_local_logins_ssl=YES     本地用户登录加密

force_local_data_ssl=YES      本地用户数据传输加密

rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem      调用证书文件

(若是需要测试,可以使用filezilla工具)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

实验:实现基于文件验证的vsftpd虚拟用户(CentOS 7系统下)

1.需要编辑文本文件/etc/vsftpd/FILE,并且以行为单位,奇数行为虚拟用户名,偶数行为对应的密码

2.FILE文件需要被编码为hash格式,命令如下:

      db_load  -T  -t  hash  -f FILE  FILE.db

      (为安全考虑,可对文件设置600权限)

3.在vsftpd服务器上创建需要被映射为的用户,并对用户生成的家目录权限去除w写权限,但是因为用户后续可能会对目录下有操作需求,所以可以建立子目录,让用户对其有rwx权限,示例如下:

      useradd  -d  /var/ftprui  -s /sbin/nologin  USER(家目录可自定义)

      mkdir  /var/ftprui/upload

      setfacl  -m  u:vrui:rwx /var/ftprui/upload

4.需要调用pam模块,在/etc/pam.d/目录下创建pam配置文件,注意文件名需要以“.db”结尾,内容填写如下:

      auth required pam_userdb.so db=/etc/vsftpd/FILE

      account required pam_userdb.so db=/etc/vsftpd/FILE

      (其中后缀.db已省略)

5.在vsftpd服务配置文件/etc/vsftpd/vsftpd.conf中修改选项

guest_enable=YES                启用映射

guest_username=USER         映射登录用户为USER

pam_service_name=第4步创建的.db结尾文件     

6.为了使不同用户连接FTP服务后有不同的权限,可分别创建对应的配置文件,但是需要在配置文件/etc/vsftpd/vsftpd.conf中,指定路径:

      user_config_dir=自定义用户配置文件的父目录

7.第6步完成后,根据需要编写每个用户的配置文件选项,即可完成实验

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

实验:基于MySQL数据库验证的vsftpd虚拟用户(CentOS 7 系统)

1.MYSQL 服务器安装mariadb-server

           创建独立用于FTP服务的数据库

创建表来管理需要登入FTP服务的虚拟用户,必须有用户名和密码两个字段,然后添加用户

授权指定用户可进行管理

2.FTP服务器需安装vsftpd服务和pam_mysql,注意CentOS 7上需要手动编译pam_mysql程序包(目前最新的为pam_mysql-0.7RC1.tar.gz),其中额外需要的安装包mysql-devel、pam-devel,并且基本的编译选项如下:

./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr

3.在FTP服务器上建立pam认证所需文件,在/etc/pam.d/目录下创建文件,并在文件中写入以下内容:

auth required pam_mysql.so user=N passwd=M host=MySQLServer-IP db=DB_NAME table=TB_NAME usercolumn=name passwdcolumn=password crypt=2

account required pam_mysql.so user=N passwd=M host=MySQLServer-IP db=DB_NAME table=TB_NAME usercolumn=name passwdcolumn=password crypt=2

      (N、M是第1步授权管理独立用于FTP数据库的指定用户和密码,crypt=2表示MySQL数据库中增加的虚拟用户的密码是使用password()函数加密的)

4.在FTP服务器上在配置文件/etc/vsftpd/vsftpd.conf中修改选项:

guest_enable=YES                启用映射

guest_username=USER_NAME 映射登录用户为USER_NAME

pam_service_name=第3步创建的文件路径

还需确保anonymous_enable=YES 已启用

5.在FTP服务器上建立虚拟用户映射的系统用户,注意家目录的w写权限去除

6. 为了使不同用户连接FTP服务后有不同的权限,可分别创建对应的配置文件,但是需要在配置文件/etc/vsftpd/vsftpd.conf中,指定路径:

      user_config_dir=自定义用户配置文件的父目录

7.第6步完成后,根据需要编写每个用户的配置文件选项,即可完成实验

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

================================================================================================

================================================================================================

NFS(Network File system)网络文件系统

基于内核的文件系统,利用RPC(Remote Procedure Call Protocol)远程过程调用实现访问远端系统的文件

提供NFS服务的软件包为nfs-utils(Linux系统默认安装),并且服务的启用还要依赖于rpcbind服务,不可缺少。

NFS服务是由多个进程组合而成,主要服务启动项为nfs-server(CentOS 7),启动后的主端口:2049,还有一些额外随机端口

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

NFS配置文件

NFS服务共享资源的设定,是在配置文件/etc/exports以及/etc/exports.d/*.exports进行配置,每行代表一个共享资源,基本格式规则如下:

DIR_NAME    IP/NETMASK  (填写DIR_NAME的权限设定)

当IP/NETMASK为*时,是最简单共享方式,对所有主机用户开放

()里默认设定的选项如下:

  ro(默认),rw       只读和读写

  sync(默认),async     同步,异步传输

  root_squash(默认)     所有远程root用户会被压榨映射为nfsnobody,若使用no_ root_squash,则不进行压榨

  all_squash   所有远程用户都会被压榨映射为nfsnobody,若使用no_ all_squash(默认)则会保留远程用户的UID和GID

  anonuid、anongid    可指定远程用户都被映射为指定的UID和GID,配合all_squash使用

当远程主机在NFS共享配置文件设定的可访问列表里,则可在自己的机器上对这些共享文件夹进行mount挂载:

mount  NFS_SERVER_IP:共享目录 挂载点

           若是需要开机自动挂载,则可写入/etc/fstab文件中,文件系统为nfs

此时对这些文件夹的权限,则会根据NFS服务设定配置文件时有关

注意,在NFS服务已经启动的情况下,修改配置文件后可以使用特殊命令:

      exportfs  –r 重新加载配置文件,使之生效

      exportfs  –v     查看已共享信息

      exportfs  –a     恢复共享服务

      exportfs  –au    暂停共享服务

若是需要查看指定主机的NFS共享信息可通过命令:

      showmount –e IP_ADDRESS

NFS服务共享支持多主机同时挂载,同时进行各主机的数据操作

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

基于安全考虑,在客户端对NFS服务共享信息文件夹进行mount挂载时,建议使用如下选项:

      nosuid        不允许使用有特殊权限的文件

      fg,hard,intr         三者结合,可在挂载出现故障时,手动终端

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

远程主机实现NFS服务共享信息的自动挂载

依赖于autofs程序包,服务autofs默认开机启动

配置文件分为主配置文件/etc/auto.master和从配置文件/etc/auto.*(可自定义,不是必须为此路径)

自动挂载的方式有两种:

第一种是挂载目录的相对路径挂载法:

1.在主配置文件/etc/auto.master中,写入挂载目录的dirname,格式如下:

           dirname   从配置文件路径

           (需要注意的是dirname最后不能加“/”)

2.在从配置文件中写入挂载目录的basename和具体的挂载信息,格式如下:

           basename   挂载选项信息   NFS_IP:共享的目录

第二种是挂载目录的绝对路径挂载法:

1.在主配置文件/etc/auto.master中设置如下:

            /-  配置文件路径

2.在配置文件中设置如下:

           完整路径  挂载选项信息   NFS_IP:共享的目录

      (此方法不会影响挂载点目录下原有文件的查看)

挂载信息中需要指定文件系统“ –fstype=文件系统”

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

若是希望NFS共享的文件夹与远程主机挂载点的basename相同,则可使用相对路径方法进行挂载:

在主配置文件/etc/auto.master中,写入“dirname   从配置文件路径”

在从配置文件中写入“    *  挂载选项信息   NFS_IP:dirname    ”

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

猜你喜欢

转载自blog.csdn.net/Ruixycowboy/article/details/81780897