ITPub博客

首页 > Linux操作系统 > Linux操作系统 > vsftp vuser虚拟用户

vsftp vuser虚拟用户

原创 Linux操作系统 作者:mengbing1990 时间:2023-01-14 15:03:19 0 删除 编辑

虚拟用户:为了保证系统的安全性,现对系统中vsftpd服务进行调整,主要为禁止OS本地账户直接登录,采用虚拟账户;

 

在vsftpd服务器中支持3类用户,分别是匿名用户,本地用户,和虚拟账户。用途及区别如下。

1)、匿名用户:名为anonymous 或ftp 的FTP 用户,匿名FTP 用户登录后将FTP 服务器中的/var/ftp 作为FTP 根目录。匿名用户通常用于提供公共文件的下载,如架设公共软件下载的FTP 服务器,所有人都可以使用匿名用户进行软件下载。

2)、本地用户:账号是系统用户账号(/etc/passwd),使用FTP 本地用户账号登录FTP 服务器后,登录目录为本地用户的宿主目录。本地FTP用户账号通常和Web 服务器一起提供虚拟主机服务,作为网页虚拟主机更新网页的途径。

3)、 虚拟用户:账号是为了保证FTP 服务器的安全性,由vsftpd 服务器提供的非系统用户账号,相对于FTP的本地用户来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源。虚拟用户FTP 登录后将把指定的目录作为FTP 根目录。虚拟用户与本地用户具有类似的功能,由于虚拟用户账号具有较高的安全性,可以替代本地用户账号使用。

 

安装使用手册如下:

1.安装软体

yum  install vsftpd

2.设置开机启动

systemctl enable vsftpd

3.vsftp 安装完成后,默认配置文件如下:

/etc/vsftpd/vsftpd.conf

VSFTP 主配置文件

/etc/rc.d/init.d/vsftp

VSFTP 启动脚本,独立 (S tand alone) 服务模式

/etc/pam.d/vsftpd

PAM 认证文件(此文件中 file=/etc/vsftpd/ftpusers   > 指的是阻止该文件中用户访问

/etc/vsftp/ftpusers

禁止使用vsftp的ftp用户列表

/etc/vsftp/user_list

禁止或者允许使用vsftp的ftp用户列表(根据主配置文件来定)

/var/ftp

匿名登陆用户主目录

/var/log/xferlog

vsftp 日志文件

4.创建虚拟用户口令库

  4.1 建立虚拟用户的口令文件,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令

  4.2 修改主配置文件

    mv vsftpd.conf vsftpd.conf.bak

    grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf

    vi /etc/vsftpd/vsftpd.conf 内容如下:

anonymous_enable=NO # (是否允许匿名登录FTP 服务器,默认设置为YES 允许,即用户可使用用户名ftp 或anonymous 进行ftp 登录,口令为空。如不允许匿名访问设置为NO)

local_enable=YES # (是否允许本地用户登录FTP服务器,默认设置为YES允许,本地用户登录后会进入指定的用户主目录,而匿名用户登录后进入匿名用户的下载目录/var/ftp/pub;设置虚拟账户必须设会YES)

write_enable=YES #(决定是否允许一些FTP命令去更改文件系统。包括上传文件,删除文件,新增目录,删除目录)

local_umask=022  #(设置本地用户的文件掩码为缺省022,得到上传文件的初始权限)

file_open_mode=0775 #(对于上传的文件设定权限。默认为0666,如果你想被上传的文件可被执行,umask要改成0777,与local_umask配合使用))

anon_umask=002

dirmessage_enable=YES

connect_from_port_20=YES

xferlog_enable=YES # (默认值为NO如果启用此选项,系统将会维护记录服务器上传和下载情况的日志文件,默认情况该日志文件                        为/var/log/vsftpd.log,也可以通过下面的xferlog_file 选项对其进行设定)

xferlog_std_format=no

log_ftp_protocol=yes

reverse_lookup_enable=NO

dual_log_enable=YES

xferlog_file=/ftplog/log/xferlog #(设定系统维护记录FTP 服务器上传和下载情况的日志文件,/var/log/vsftpd.log是默认的,也可以另设其它)

vsftpd_log_file=/ftplog/log/vsftpd.log

#

listen=NO #(如果设置为YES,则 vsftpd 将以独立模式运行,由vsftpd 自己监听和处理连接请求)

listen_ipv6=YES #(设定是否支持IPV6)

#

userlist_enable=YES #(此选项默认值为NO,则不启用user_list文件;若此项设为YES ,则启用user_list 文件,而如果同时设置了 userlist_deny=YES ,则 user_list 文件中的用户将不允许登录FTP 服务器,甚至连输入密码提示信息都没有,直接被FTP 服务器拒绝,如果userlist_deny=NO,将则只允许user_list文件中的用户登陆FTP服务器)

tcp_wrappers=YES #(表明服务器使用tcp_wrappers作为主机访问控制方式)

guest_enable=YES # (如果启用,所有的非匿名用户登录时将被视为游客,其名字将被映射为guest_username里所指定的名字。采用虚拟用户必须设置该选项)

guest_username=ftpvuser #(设置当游客进入后,其将会被映射的名字。这里设置为“ftpvuser”,即虚拟用户登陆ftp后被映射的本地用户名)

pam_service_name=vsftpd.vu #( 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/目录下 )

user_config_dir=/etc/vsftpd/vuser_dir #(使用虚拟用户配置文件的目录)

allow_writeable_chroot=YES #开启限制在用户的家目录中。

>

#

#ftpd_banner=Welcome to V3 CIM DFS service. ##欢迎信息

#

#banned_email_file=/etc/vsftpd/banned_emails

max_clients=1000   #同时最多连接客户端数

anon_max_rate=15728640  #设置匿名用户每条连接最大上传或下载速率单位Bytes

local_max_rate=15728640  # 设置本地用户每条连接最大上传或下载速率单位Bytes

max_per_ip=1000         #每个IP限制登陆的客户端数

 

4.3 建立虚拟用户的口令文件,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令。

vi /etc/vsftpd/ ftpvuser

4.4 生成虚拟用户的口令库,(db_load)

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

其中,“ -f ” 命令选项设置的是虚拟用户的口令文件,即上面新建的 ftpvuser ,最终生成口令库文件 ftpvuser.db

  并修改其属性,

chmod 600 ftpvuser.db

  4.5 修改认证文件

  vi /etc/pam.d/vsftpd .vu

vi /etc/pam.d/vsftp

5. 创建本地用户组及用户,创建目录及配置权限

    groupadd -g 8000 ftpgrp

    useradd -g ftpgrp -s /sbin/nologin -u 8000 ftpvuser

    chown -R ftpvuser:ftpgrp /ftproot/

    chown root:ftpgrp /ftplog/*/

    chmod 755 /ftplog/*/

6.管控单独用户权限

  

     从上面的配置中可以看到,我把“ write_enable” 和“ download_enable” 参数都设置为 NO ,那 ftp 用户该如何进行文件的传输呢?其实,这里为了管控权限,在主配置文件中都设置为“ NO” ,然后再对每个 ftp 用户进行单独的控制,分别对应单独的配置文件,从而保证权限分配的合理性及安全性。

      其中 user_config_dir 参数指定了定义用户配置文件的目录,在这里只需要在 user_config_dir 中建立以 ftp 用户名命名的文件,内容为数据传输和用户权限。里面设置个人的合适的选项,就可以保证不同的虚拟用户获得不同的权限。

  6.1 新建 user_config目录,路径为 /etc/vsftpd/vuser_dir

  touch qmadmin

 vi qmadmin



7. 重启服务 , 完成。

service vsftpd restart


另外:

vsftpd通过cmds_allowed进行精确权限控制

将允许的命令写在cmds_allowed=后面。命令之间用,分隔,整条参数没有空格,且全是大写。

比如:


cmds_allowed=ABOR,CDUP,CWD,DELE,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,TYPE,USER,,ACCT*,APPE,CDUP,HELP,MODE,NOOP,REIN*,STAT,STOU,STRU,SYST


cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST


参数详解:


ABOR – abort a file transfer

CWD – change working directory

DELE – delete a remote file

LIST – list remote files

MDTM – return the modification time of a file

MKD – make a remote directory

NLST – name list of remote directory

PASS – send password

PASV – enter passive mode

PORT – open a data port

PWD – print working directory

QUIT – terminate the connection

RETR – retrieve a remote file

RMD – remove a remote directory

RNFR – rename from

RNTO – rename to

SITE – site-specific commands

SIZE – return the size of a file

STOR – store a file on the remote host

TYPE – set transfer type

USER – send username

less common commands:

ACCT* – send account information

APPE – append to a remote file

CDUP – CWD to the parent of the current directory

HELP – return help on using the server

MODE – set transfer mode

NOOP – do nothing

REIN* – reinitialize the connection

STAT – return server status

STOU – store a file uniquely

STRU – set file transfer structure

SYST – return system type


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29551564/viewspace-2932209/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
v❤550166897

注册时间:2014-03-19

  • 博文量
    88
  • 访问量
    195225