Linux之Vsftpd虚拟用户实验总结

一、vsftpd简介

vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征:非常高的安全性需求、带宽限制、良好的可伸缩性、创建虚拟用户的可能性、IPv6支持、中等偏上的性能、分配虚拟 IP 的可能性、高速。

FTP协议中,控制连接均有客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式

PORT模式(主动方式):FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口(一个大于1024的端口)接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

PASV模式(被动方式):在建立控制通道的时候和PORT模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接传送数据。

FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录。

匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous。

本地用户登录:使用系统用户登录,在/etc/passwd中。

虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器。

FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。

二、安装vsftpd

可直接使用yum源直接安装或者下载源码包编译安装(本章节使用yum安装)

# yum -y install vsftpd

三、使用本地数据用户文件

1. 编辑添加虚拟用户文件

#vi /etc/vsftpd/ftps

注意添加格式:第一行为用户名,第二行为密码,以此类推,奇数行为用户名,偶数行为密码。

centos #用户名

111111 #密码

FreeBDS

111111

2. 加密/etc/vsftpd/ftps虚拟用户文件,把ftp生成数据库文件并权限,在/etc/pam.d目录下,编辑vsftpd的PAM认证文件

查看加密认证文件组件db4-utils

#rpm -qa |grep db4-utils

db4-utils-4.7.25-19.el6_6.x86_64

#db_load -T -t hash -f /etc/vsftpd/ftps /etc/vsftpd/ftps.db

说明:

-T:允许non-Berkeley DB应用程序容易文本文件加载到数据库

-t:指定生成数据库文件类型

指定了选项-T,那么一定要追加子选项-t;子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型

#chmod 600 /etc/vsftpd/ftps.db

#vi /etc/pam.d/vsftpd

注释其他,新增以下:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/ftps

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/ftps

3. 建立公共本地映射用户并设置主目录权限(该虚拟用户需要使用一个系统用户,这个系统用户可不需要密码)

#useradd -d /home/ftpshare -s /sbin/nologin ftpuser

#chmod 700 /home/ftpshare

4. 配置vsftpd.conf,启用虚拟用户

#vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO  //是否允许anonymous登录FTP服务器,默认是允许的。

local_enable=YES  //是否允许本地用户登录FTP服务器,默认是允许

write_enable=YES  //是否允许用户具有在FTP服务器文件中执行写的权限,默认是允许

anon_umask=022  //设置虚拟用户的文件生成掩码为022,默认是077

dirmessage_enable=YES  //激活目录信息,当远程用户更改目录时,将出现提示信息

xferlog_enable=YES  //启用上传和下载日志功能

connect_from_port_20=YES  //启用FTP数据端口的连接请求

xferlog_file=/var/log/vsftpd.log  //设置日志文件的文件名和存储路径,这是默认的

xferlog_std_format=YES  //是否使用标准的ftpd xferlog日志文件格式

listen=YES  //使vsftpd 处于独立启动模式

user_config_dir=/home/ftpshare  //使用虚拟用户配置文件的目录

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

userlist_enable=NO  //用户列表中的用户是否允许登录FTP服务器,默认是不允许

chroot_list_enable=YES  //如果希望用户登录后不能切换到自己目录以外的其它目录,需要设置该项

tcp_wrappers=YES  //使用tcp_wrqppers作为主机访问控制方式

guest_enable=YES  //是否启用来宾用户(也就是启用虚拟用户)

guest_username=ftpuser  //如果启用了虚拟用户后上传文件修改文件的用户名

chown_uploads=YES  //是否启用上传文件后修改为指定的属主

chown_username=root  //是否启用上传文件后修改为指定的属主用户

5.创建虚拟用户的根目录、虚拟用户

mkdir  /home/ftpshare/{centos,FreeBDS}

touch  /home/ftpshare/{centos,FreeBDS}

cat /home/ftpshare/centos

anon_world_readable_only=no

write_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

anon_upload_enable=yes

local_root=/home/ftpshare/centos

cat /home/ftpshare/FreeBDS

anon_world_readable_only=no       # 允许匿名用户浏览器整个服务器的文件系统

write_enable=no                             # 允许在文件系统写入权限

anon_mkdir_write_enable=yes              #  允许创建文件夹

anon_other_write_enable=NO                #   允许用户改名和删除文件的权限

anon_upload_enable=yes                            # 允许用户上传文件

local_root=/home/ftpshare/FreeBDS

6. 重启vsftpd服务

#service vsftpd start

7. 测试虚拟用户登录FTP

四、虚拟用户-mysql数据库管理用户+pam认证

1.安装MySQL

#yum -y install mysql-server mysql-devel

2.启动数据库,创建数据库用户vsftp密码vsftp,新增数据库vsftp数据库,授权访问该库所有表,新建users表,添加字段(id主键、name、passwd),添加用户、密码均为centos、freebds

3.配置vsftpd,建立pam认证需要的文件

#vi /etc/pam.d/vsftpd

注意:密文验证必须是2因为mysql授权时时密文,0是明文

4.新建虚拟用户映射的系统用户及目录并且附权限

5.配置/etc/vsftpd/vsftpd.conf文件使其对应mysql认证

    anonymous_enable=YES listen=YES local_enable=YESwrite_enable=YESanon_upload_enable=NOanon_mkdir_write_enable=NOchroot_local_user=YESguest_enable=YESguest_username=vuserpam_service_name=vsftpdanon_umask=022

6.启动vsftpd服务

#service vsftpd start

注意截图中报

7.登录测试输入密码出现530错误,查下发现pam_mysql.so模块

[root@lvs ~]# ftp 127.0.0.1

Connected to 127.0.0.1 (127.0.0.1).

220 (vsFTPd 2.2.2)

Name (127.0.0.1:root): centos

331 Please specify the password.

Password:

530 Login incorrect.

Login failed.

解决方法:装载epel源,安装pam_mysql模块

8.重新登录测试正常

9.扩展应用:给不同的虚拟用户创建不同的权限,如果不设置,虚拟用户会使用主配置文件中定义的匿名用户的权限。

在/etc/vsftpd/vsftpd.conf主配置文件添加如下行:

user_config_dir=/etc/vsftpd/ftp_dir  指定用户的主目录,可以随意创建目录

#cd /etc/vsftpd

#mkdir ftp_dir

创建用户centos,freebds,编辑权限centos有上传权限, freebds没有上传权限

[root@lvs ftp_dir]# pwd

/etc/vsftpd/ftp_dir

通过centos、freebds登录操作测试验证

五、扩展应用tcp_wrapper

TCP Wrappers扩展了inetd为受其控制的服务程序实施控制的能力,通过使用这种方法,它能够提供日志支持、返回消息给联入的连接、使得服务程序只接受内部连接等。由TCP-Wrappers提供的一些额外的安全功能,不应被视为好的防火墙的替代品,TCP Wrappers 应结合防火墙或其他安全加强设施一并使用,为系统多提供一层安全防护。

下图为tcp_wrappers工作机制

tcp_wrapper控制

1.只需将受控制程序名写入配置文件即可实现控制(程序链接的库文件,会自动在用户访问服务时,基于tcpd检测):

允许访问:/etc/hosts.allow

拒绝访问:/etc/hosts.deny

2.匹配机制:先检查/etc/hosts.allow,如果被允许,则直接放行;如果/etc/hosts.allow没有匹配项,则检查/etc/hosts.deny;如果有匹配项则禁止访问;

练习:控制vsftpd仅允许192.168.2.0/255.255.255.0网络中的主机访问,但192.168.2.5除外;对所被被拒绝的访问尝试都记录在/var/log/tcp_wrapper.log日志文件中。

环境:192.168.2.9为vsftp服务器,暂定192.168.2.5、192.168.2.6客户端

1、安装vsftp,ftp

2、添加用户centos,新建ftp目录pulbic,赋予centos访问权限

3、配置vsftp配置文件vsftp.conf,开启tcp_wrapper功能

测试:192.168.2.5、192.168.2.6客户端验证

4、编辑配置/etc/hosts.allow, /etc/hosts.deny 文件,并且重启vsftpd服务

    注:spawn:发起执行一条命令,比如:如果有人访问访问服务器,别拒绝了,这通常是一种恶意访问,或非正常访问,就可以使用spawn echo一些命令保存至日志中

      EXCEPT:排除

5、以192.168.2.5、192.168.2.6客户端验证

转载于:https://blog.51cto.com/daisywei/1710712

Linux之Vsftpd虚拟用户、扩展应用tcp_wrapper实验总结相关推荐

  1. linux搭建vsftpd虚拟用户访问

    配置vsftpd服务 FTP服务器默认匿名可以访问. 1.搭建yum仓库   [root@accp~]# vim /etc/yum.repos.d/dvd.repo   [server]   name ...

  2. linux之vsftpd虚拟用户搭建

    vsftpd虚拟用户的配置过程 系统版本:Redhat 4.0 1.安装软件包          #rpm -ivh /mnt/RedHat/RPMS/vsftpd...... 2.建立虚拟用户口令库 ...

  3. FTP服务学习笔记之基于MySQL+PAM的vsftpd虚拟用户

    基于mysql+PAM的vsftpd虚拟用户配置 一.实验说明 操作系统:Redhat5.8_X64bit 实验平台:VMware Workstation 所需要的软件包:pam_mysql-0.7R ...

  4. linux下配置vsftpd虚拟用户为登录用户

    1.安装vsftpd 安装依赖包: yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl 新建vsftpd系统用户: #建立Vsft ...

  5. vsftpd虚拟用户

    转自 http://kindit.blog.51cto.com/2286921/1217428 使用vsftpd虚拟用户可以将权限限制在每个用户的根目录里,这样解决了匿名用户不能正对每个人进行权限控制 ...

  6. Linux虚拟用户怎么建立,linux下ftp虚拟用户的创建方法

    本文介绍下,在linux系统中,为ftp创建虚拟用户的方法,这里使用vsftpd作为服务器软件,有需要的朋友参考学习下. vsftpd虚拟用户创建示例 Linux的FTP服务支持3种用户: 1.匿名帐 ...

  7. 两种方式建立Vsftpd虚拟用户

    http://blog.51cto.com/yuanbin/129071 两种方式建立Vsftpd虚拟用户 我们登录FTP有三种方式,匿名登录.本地用户登录和虚拟用户登录. 匿名登录:在登录FTP时使 ...

  8. centos创建vsftpd虚拟用户

    CentOS Vsftpd服务器(虚拟用户建立) 一.安装vsftpd服务相关组件 需要安装组件vsftpd pam db4 db4-utils [root@CentOS /]# yum -y ins ...

  9. FTP服务(3)实现基于文件验证的vsftpd虚拟用户

    1.虚拟用户 所有虚拟用户会统一映射为一个指定的系统帐号: 访问共享位置,即为此系统帐号的家目录各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定虚拟用户 帐号的存储方式: 文件:编 ...

最新文章

  1. 猪八戒网CI/CD最佳实践之路
  2. mysql read timed out_java.sql.SQLException: Socket read timed out
  3. BZOJ2648: SJY摆棋子
  4. docker 安装mysql 5.7
  5. 如何从ERP将Material的Batch信息下载到CRM
  6. 洛谷 P1757 通天之分组背包
  7. POI读取单元格信息及单元格公式
  8. python 编辑距离_python实现编辑距离edit distance
  9. Linux命令之xargs命令详解
  10. 判断鼠标向右或向左滑动,响应不同的事件
  11. 自己整理的Linux指令全集,附思维导图(适合刚入门的看),顺带命令大全网址方便查找指令
  12. catia v5r18 百度云_CATIA V5 R18全套的教程.pdf
  13. 怎样让Excel数据自动标记颜色?学会这一招让大家对你刮目相看
  14. 038--想和权证恋个爱
  15. dedecms二次开发总结 变量参数
  16. JAVA实现音频采样率转换
  17. 双系统安装,错误:验证无效shim签名?
  18. java计算机毕业设计楼宇管理系统源码+数据库+lw文档+系统
  19. 移动硬盘在计算机中不显示数据能恢复,移动硬盘无法访问提示'此卷不包含可识别的文件系统'怎么办?...
  20. 嵌入式开发人员应该关心机器学习的 5 个理由

热门文章

  1. c语言程序设计江宝钏实验六答案,《C语言程序设计》(江宝钏著)实验三答案.doc...
  2. Jvm 系列(三):GC 算法 垃圾收集器
  3. 用Python防止头上一片青青草原
  4. 无冬连接不上账号服务器,电脑中玩无冬online掉线怎么回事_电脑中玩无冬online游戏总是掉线如何修复...
  5. java中原生方法_java中原生(native)函数的用法
  6. 【PHPWord】创建带样式表格的Word文档
  7. table列最小宽度 vue_vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)...
  8. python打包发布到手机_Python打包操作与在线发布
  9. python经典例题图形_Python 入门经典100实例:实例23 菱形
  10. 鸿蒙系统啥时候发布新手机,鸿蒙系统新手机面世还有多远?明年3月发布的华为P40可能搭载...