Linux文件服务器实战(金沙官网线上虚拟用户)

vsftpd基于系统用户访问ftp服务器,系统用户越多越不利于管理,不利于系统安全,这样就以vsftp虚拟防护的方式来解决。

文件传输协议(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传输模式

[root@www ~]# yum install pam* libd-utils libdb* --skip -broken -y

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

2.创建虚拟用户临时文件

(1)FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。

/etc/vsftpd/ftpusers.txt

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

xj3

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

123456

wKiom1lDWSzSkpDmAAB9bg8ow7I525.png

xj4

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

123456


3.生成虚拟用户数据库认证文件,权限为700

wKioL1lDWUeCGsLxAAB6fItEgs4558.png

[root@www vsftpd]# db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db

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

[root@www vsftpd]# chmod 700 /etc/vsftpd/vsftpd_login.db

2、Vsftpd服务器简介

4.配置pam认证文件/etc/pam.d/vsftpd加入下面两行代码:

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

auth_required pam_userdb .so db=/etc/vsftpd/vsftpd_login

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

account_required pam_userdb.so db=/etc/vsftpd/vsftpd_login

3、Vsftpd服务器安装配置

5.vsftp虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登陆,主要用于虚拟用户映射使用

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

useradd -s /sbin/nologin ftpuser

(1)  在命令行执行如下命令,如图1-3所示:

6.vsftpd配置

yum  install    vsftpd*  -y

#globle config vsftpd 2018

wKioL1lDWZjQAKPkAABj9o17jDo450.png

  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=YES
  listen_ipv6=NO
  userlist_enable=YES
  tcp_wrappers=YES

图1-3 YUM安装Vsftpd服务端

#  config virtual user ftp

(2)  打印vsftpd安装后的配置文件路径、启动Vsftpd服务及查看进程是否启动,如图1-4所示:

  pam_service_name=vsftpd 虚拟用户企业pam认证

rpm  -ql    vsftpd|more

 

systemctl  restart  vsftpd.service

  guest_enable=YES         启用虚拟用户

ps  -ef |grep  vsftpd

  guest_username=ftpuser 映射虚拟用户至系统用户ftpuser

wKiom1lDWaSyBSMHAABVwwmbNvk536.png

  user_config_dir=/etc/vsftpd/vsftpd_user_conf虚拟用户配置文件所在的目录

图1-4 打印Vsftpd软件安装后路径

  virtual_use_local_privs=YES 虚拟用户使用与本地用户相同的权限

(3)  Vsftpd.conf默认配置文件详解如下:

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

anonymous_enable=YES          开启匿名用户访问;

mkdir -p /etc/vsftpd/vsftpd_user_conf/

local_enable=YES                      启用本地系统用户访问;

8,为虚拟用户创建配置文件,同时创建私有的虚拟目录

write_enable=YES                    本地系统用户写入权限;

vim /etc/vsftpd/vsftpd_user_conf/xj3

local_umask=022                      本地用户创建文件及目录默认权限掩码;

local_root=/home/ftpuser/xj3   虚拟用户配置文件路径

dirmessage_enable=YES          打印目录显示信息,通常用于用户第一次访问目录时,信息提示;

write_enable=YES 允许登陆用户有写权限

xferlog_enable=YES                  启用上传/下载日志记录;

anon_world_readable_onle=YES允许匿名用户下载,然后读取文件

connect_from_port_20=YES      FTP使用20端口进行数据传输;

anon_upload_enable=YES允许匿名用户上传文件权限,只有在write_enable=yes是才生效**

xferlog_std_format=YES          日志文件将根据xferlog的标准格式写入;

anon_mkdir_write_enable=YES允许匿名用户创建目录,只有在**write_enable=yes是才生效**

listen=NO                                  Vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES;

anon_other_write_enable=YES允许匿名用户其它权限,如删除,重命名

listen_ipv6=YES                        启用IPV6监听;

vim /etc/vsftpd/vsftpd_user_conf/xj3

pam_service_name=vsftpd      登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证;

local_root=/home/ftpuser/xj3

userlist_enable=YES                  Vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP;

write_enable=YES

tcp_wrappers=YES                    设置vsftpd与tcp wrapper结合进行主机的访问控制,Vsftpd服务器检查/etc/hosts.allow 和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。

anon_world_readable_onle=YES

(4)  启动Vsftpd服务后,通过Windows客户端资源管理器访问Vsftp服务器端,如图1-5所示:

anon_upload_enable=YES

ftp://192.168.111.131/

anon_mkdir_write_enable=YES

wKiom1lDWbPwzQwUAADR3nl92ao762.png

anon_other_write_enable=YES

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

 

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

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

pasv_enable=YES

mkdir -p /home/ftpuser/{xj3,xj4};

pasv_min_port=60000

chown -R ftpuser:ftpuser /home/ftpuser

pasv_max_port=60100

4、Vsftpd匿名用户配置

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

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

anon_upload_enable=YES                  允许匿名用户上传文件;

anon_mkdir_write_enable=YES          允许匿名用户创建目录;

anon_other_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

anon_other_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

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

chown    -R  ftp        pub/

chmod          o+w    pub/

如上Vsftpd.conf配置文件配置完毕,同时权限设置完,重启vsftpd服务即可,通过Windows客户端访问,能够上传文件、删除文件、创建目录等操作,如图1-6所示:

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

5、Vsftpd系统用户配置

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

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

(1)  Linux系统中创建系统用户jfedu1、jfedu2,分别设置密码为123456:

useradd  jfedu1

useradd  jfedu2

echo 123456|passwd --stdin  jfedu1

echo 123456|passwd --stdin  jfedu2

(2)  修改vsftpd.conf配置文件代码如下:

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

本文由金沙官网线上发布于操作系统,转载请注明出处:Linux文件服务器实战(金沙官网线上虚拟用户)

您可能还会对下面的文章感兴趣: