1.vsftpd介绍
vsftpd:是非常安全的ftp守护进程(Very secure ftp Daemon)。
进程:正在进行(运行running)的程序。
守护进程Daemon:网络服务类的程序都会有守护进程。守护进程是指实时监测服务访问状态的程序。通常都是在系统后台运行。
FTP的工作端口:
21 控制端口,用于在客户机和服务器之间建立连接。
20 数据端口。用于服务器给客户机主动进行数据连接。

2.配置思路
1.关闭安全功能,并查状态:
2.查软件是否已安装,如果未安装就安装软件。
3.启动服务,并允许开机自动启动
4.设置共享目录,重新加载设置。
5.做本地(内测)访问测试,做异地(公测)访问测试。

3.vsftpd的配置文件
/etc/logrotate.d/vsftpd 日志轮滚策略文件
/etc/pam.d/vsftpd pam认证文件(重点)
/etc/vsftpd/ftpusers 黑名单文件(重点)
/etc/vsftpd/user_list 用户访问列表文件(重点),默认是黑名单,但是可以设置成白名单
将user_list设置成白名单文件。
vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO 找到此行,如果没有就在最后添加此行
/etc/vsftpd/vsftpd.conf 服务的主配置文件(重点)

4.主配置文件
12:anonymous_enable=YES 允许匿名访问共享
16:local_enable=YES 允许本地普通用户(是指用useradd创建的用户)访问共享
19:write_enable=YES 允许写操作,即可写权限
23:local_umask=022 本地用户的umask值
37:dirmessage_enable=YES 允许显示目录信息
40:xferlog_enable=YES 允许xferlog日志,xferlog文件路径是/var/log/xferlog文件,仅记录文件的上传和下载日志
43:connect_from_port_20=YES 启用20号端口的连接(data数据端口)
57:xferlog_std_format=YES 启用xferlog标准(std是standard)格式的日志
115:listen=NO 不启用ipv4监听
124:listen_ipv6=YES 启用IPV6监听,会向下兼容ipv4
126:pam_service_name=vsftpd vsftpd的pam用户认证服务文件,是/etc/pam.d/vsftpd文件
127:userlist_enable=YES 启用user_list用户列表文件
128:tcp_wrappers=YES 启用tcp_wrappers防火墙功能,用来做基于IP的TCP访问控制

vsftpd.conf默认设置的功能:
1.允许匿名用访问共享,访问的是/var/ftp目录,且只能下载文件,不能上传文件。
2.允许普通用访问共享,访问的是用户自己的家目录,既能下载文件,也能上传文件。
3.普通用户用ftp命令登录到vsftpd服务器之后,能chroot到服务器的其他目录路径下,此功能不安全,建议关掉。

5.vsftpd的chroot牢笼四种情况:
全部不锁(默认情况)
全部加锁(用两行代码)
少数不加锁(用三行代码)
少数加锁(用四行代码)

1.全部不锁(默认)
#chroot_local_user=YES 允许本地用户chroot牢笼功能(change root),默认为NO不启用
#chroot_list_enable=YES 启用chroot_list文件功能,默认NO不启用此功能

(default follows)

#chroot_list_file=/etc/vsftpd/chroot_list

2.全部加锁
chroot_local_user=YES 启用本地用户chroot牢笼功能(change root),默认为NO不启用
allow_writeable_chroot=YES 允许chroot牢笼功能下执行写操作(centos7中必加此行)

3.少数不加锁
chroot_local_user=YES
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
在vim /etc/vsftpd/chroot_list 添加如下内容
lucy
lily
用tom、lucy、lily做访问测试,tom启用了牢笼功能,lucy、lily是不启用牢笼功能的。

4.少数加锁
#chroot_local_user=YES 启用本地用户chroot牢笼功能(change root),默认为NO不启用
allow_writeable_chroot=YES 允许chroot牢笼功能下执行写操作(centos7中必加此行)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路径
在vim /etc/vsftpd/chroot_list 添加如下内容
lucy
lily
用tom、lucy、lily做访问测试,lucy、lily启用了牢笼功能,tom是不启用牢笼功能的。

6.实现允许anonymous匿名用户既能下载又能上传文件文件。
1.文件共享软件必须允许这个用户有可读可写的权限。
2.用户对共享目录自身要有可读可写的权限。
3.匿名用户仅允许上传文件到/var/ftp中的子目录中。如/var/ftp/upload,且ftp匿名用户对upload目录要有可读可写权限。
警告:/var/ftp目录的属主、属组不允许修改,且other权限不允许有w可写权限,否则用ftp匿名用户访问共享时会提示500错误。

实现要求:
第1步,在vsftpd.conf配置文件中允许anonymous匿名用户有可读可写的权限。
vim /etc/vsftpd/vsftpd.conf 找到如下代码,去掉29、33行的#号
12 anonymous_enable=YES
29 #anon_upload_enable=YES 允许匿名用户上传
33 #anon_mkdir_write_enable=YES 允许匿名用户用mkdir创建目录
anon_other_write_enable=YES 允许匿名用户执行rm删除等操作(添加此行)
anon_world_readable_only=NO 关闭匿名用户只读的限制(为YES时会无法下载)

第2步,用root用户创建/var/ftp/upload目录,权限为777或属主和属组均为ftp,重启vsftpd服务,在win7/10中用ftp匿名用户访问共享ftp://192.168.11.11,上传一个文件到upload共享目录,看是否能传上去。结果是可以匿名用户上传文件到upload目录中。
mkdir -v /var/ftp/upload
chown -v ftp:ftp /var/ftp/upload 或 chmod -v 777 /var/ftp/upload
systemctl restart vsftpd

7.vsftpd的tcp_wrapers防火墙设置
tcp_wrapers的功能:是一个迷你的TCP防火墙,可以用来做基于TCP协议的应用程序的IP安全访问控制。
配置文件:
白名单:/etc/hosts.allow
黑名单:/etc/hosts.deny

技巧:让少数人为白户,那么先在hosts.deny中做拒绝所有(all)黑名单,然后在hosts.allow中做少数IP的放行白名单。

配置文件格式:man hosts.allow
格式说明: 守护进程名称:主机名或IP地址
守护进程名称可以是:vsftpd、sshd、httpd、in.tftpd等。
主机名或IP地址可以是:all所有主机、主机名、域名(网址)、IP地址、网络地址、IP地址范围。

设置举例:
vim /etc/hosts.deny 黑名单
vsftpd:192.168.11.1 拒绝192.168.11.1这台主机访问vsftpd共享
sshd:192.168.11.1 拒绝192.168.11.1这台主机访问sshd共享

8.vsftpd虚拟用户
虚拟用户:即非useradd创建的用户账号(非/etc/passwd中的账号),而是用vim创建的属于vsftpd的独立用户账号。
虚拟用户的优势:可以避免系统中的用户账号过多,让vsftpd文件共享软件独立管理自己的用户账号。
虚拟用户账号文件格式:文件中的奇数行是用户账号,偶数行是用户的密码。

vsftpd的虚拟用户方案思路:
0.准备工作:确保vsftpd文件共享服务已安装,并已启动vsftpd服务,且关闭了selinux和firewalld安全功能。
1.创建虚拟用户账号文件。
2.将虚拟用户账号用db_load转换成加密的数据库格式文件。
3.在vsftpd的pam认证文件中添加虚拟用户账号文件的认证关系。
4.用useradd创建一个普通用户账号vftper。
5.在vsftpd.conf配置文件中启用guest来宾(即虚拟用户)功能,设置一个真实用户账号,并将真实用户账号vftper和虚拟用户账号文件关联起来。
6.给每个虚拟用户账号设置独立的共享访问速度和访问目录。
7.重启vsftpd服务,并分别用虚拟用户账号访问共享。

1.创建虚拟用户账号文件。
cat > /etc/vsftpd/vuser.txt <<EOF
f1
passf1
f2
passf2
f3
passf3
EOF

2.将虚拟用户账号转换成加密的数据库格式文件。
yum provides db_load
yum install -y libdb-utils
cd /etc/vsftpd
ls
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuserdb.db
chmod -v 600 /etc/vsftpd/vuserdb.db

db_load选项:
-T 是translation转换文件格式
-t hash 指定格式转换的算法为hash算法
-f 是指定要转换格式的文件
/etc/vsftpd/vuser.txt 是要转换格式的文件
/et/vsftpd/vuserdb.db 是转换格式之后的文件

3.在vsftpd的pam认证文件中添加虚拟用户账号文件的认证关系。
cp -av /etc/pam.d/vsftpd{,.bak}
vim /etc/pam.d/vsftpd 做如下修改
#%PAM-1.0
#以下两行的功能:仅能实现虚拟用户访问共享,普通用户不能访问共享。(不建议使用)
#required 意思是必须的 sufficient 意思是满足的、备选的
#auth required pam_userdb.so db=/etc/vsftpd/vuserdb
#account required pam_userdb.so db=/etc/vsftpd/vuserdb
#以下功能选项的功能:既能让虚拟用户访问共享,也能让普通用户访问共享。(推荐使用)
auth sufficient pam_userdb.so db=/etc/vsftpd/vuserdb
account sufficient pam_userdb.so db=/etc/vsftpd/vuserdb
#以下几行功能选项是vsftpd的默认pam认证文件内容。(无需修改)
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth

4.用useradd创建一个普通用户账号vftper。
useradd vftper -s /sbin/nologin
id vftper
ls -ld /home/vftper

5.在vsftpd.conf配置文件中设置一个真实用户账号,并将真实用户账号vftper和虚拟用户账号文件关联起来。
cd /etc/vsftpd
cp -av vsftpd.conf{,.bak}
cat /etc/vsftpd/vsftpd.conf
vim vsftpd.conf 在文件最后添加如下内容
guest_enable=YES 允许来宾用户访问共享,即虚拟用户
guest_username=vftper 指定来宾用户名为vftper用户(即第4步新建的用户)
user_config_dir=/etc/vsftpd/vuser_conf 指定用户配置文件目录
allow_writeable_chroot=YES 允许chroot功能下执行写操作(必须加此行,否则会登录失败)
#user_sub_token=$USER 使用用户子令牌(通常不用)

6.给每个虚拟用户账号设置独立的共享访问速度和访问目录。
cd /etc/vsftpd
mkdir -v vuser_conf
cd vuser_conf
#创建f1、f2虚拟用户的会员个性化设置文件,允许f1这个虚拟用户在自己的家目录中可读可写。
touch f1 f2
mkdir -v /home/vftper/{f1,f2,f3}
chmod -v 777 /home/vftper/{f1,f2,f3}
cat > f1 <<EOF
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vftper/f1
EOF

#允许f2这个用户在自己的家目录中可读,但不可写。
cat > f2 <<EOF
#添加local_root这行即可,其余内容可以不添加。
local_root=/home/vftper/f2
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

EOF

7.重启vsftpd服务,并分别用虚拟用户账号访问共享。
systemctl restart vsftpd
ftp 192.168.11.11 -->用f1、f2虚拟用户分别访问共享,测试文件的上传。

转载于:https://blog.51cto.com/13038253/2367162

vsftpd服务的搭建相关推荐

  1. CentOS 搭建 Vsftpd 服务,一次性成功,收藏了!

    点击下方"民工哥技术之路",选择"设为星标" 回复"1024"获取独家整理的学习资料! 文件传输协议 FTP 文件传输协议(FTP)是一种基 ...

  2. Centos5搭建vsftpd服务

    更换镜像源 由于centos5已经历史久远,内置的镜像源已经不能用.看: 因此,我手工更换了阿里云的源.(ps:我本来是想用网易的源,但不知为什么,这个源在安装vsftpd时提示http 404错误) ...

  3. centos7 搭建vsftpd服务并锁定用户的家目录

    1.安装vsftpd服务 yum install vsftpd -y 2.创建用户 useradd vsftp -s /sbin/nologin ####添加用户,并且这个用户没有登陆系统的权限pas ...

  4. [RHEL5企业级Linux服务攻略]--第6季 Vsftpd服务全攻略之常规配置

    1.vsftpd服务软件包 vsftpd-2.0.5-10.el5.i386.rpm:vsftpd主程序包 2.vsftpd相关文档 /etc/vsftpd/vsftpd.conf:vsftpd的核心 ...

  5. 深度解析vsftpd服务

                          Vsftpd安装详细文档 需求: a.匿名用户不可以登录和访问ftp服务器(因为是运维部内部的ftp服务器,所以只有运维部的同事才可以登录),即只允许本地用 ...

  6. vsftpd服务详解

    一.vsftpd基本使用 VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP,从此名称可以看出来,编制者的初衷是代码的安全.安全性是编写V ...

  7. LinuxProbe 0x14 虚拟网站主机功能(基于端口)、Vsftpd服务传输文件、TFTP简单文件传输协议

    虚拟网站主机功能 基于端口号 基于端口号的虚拟主机功能可以让用户通过指定的端口号来访问服务器上的网站资源.在使用Apache配置虚拟网站主机功能时,基于端口号的配置方式是最复杂的. 因此我们不仅要考虑 ...

  8. vsftpd服务----配置

    首先安装 Linux 企业版第一张光盘中的vsftpd-2.0.1-5.i386.rpm #rpm –ivh /media/cdrom/RedHat/RPMS/vsftpd-3.0.1-5.i386. ...

  9. 关于Linux环境下安装配置vsftpd服务全攻略(踩坑)

    2017年08月09日 19:42:19 木大白易 阅读数 17536更多 分类专栏: Linux OS 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接 ...

最新文章

  1. 使用PHP对数据库输入进行恶意代码清除
  2. base64编码 vba_VB VBA ASP 可通用的基于Base64进行加密和解密的函数
  3. ArcGIS API for JavaScript 4.4学习笔记[新] AJS4.4和AJS3.21新特性
  4. 在Linux系统下实现进程,Linux进程学习(一)之Linux进程的基本知识和实现
  5. Python描述符是什么?
  6. Another test
  7. 使用ajax怎么解决乱码问题,一句话解决AJAX中文乱码问题[推荐]
  8. 虚拟机ubuntu 网速慢的解决方法
  9. 判断游戏对象是否在摄像机视口的一个方法
  10. 同步(二) —— 操作系统wait,signal原句实现分析
  11. Python3入门机器学习经典算法与应用 第3章 Numpy中的arg运算
  12. 获取客户端用户真实 IP 地址
  13. openCV 图像阀值
  14. oracle logged on,ORA-01012:not logged on的解决办法
  15. 抖音小店无货源,营业执照怎么办理?该怎么选择经营范围?
  16. 参数估计之矩估计和极大似然估计概述
  17. 权限和归属关系解析与新手小白操作教程
  18. Navicat Premium 15 for Mac(数据库管理)
  19. Apache Velocity 模板语言 特殊字符${ $!{ 原样输出问题 转义符 # ! 无效
  20. 跨专业计算机 调剂,考研调剂可以跨专业调剂吗

热门文章

  1. matlab the installer cannot read,MATLAB安装 The installer cannot read the mwinstall.dll… | 学步园...
  2. c语言字符串逆置,字符串逆置
  3. 脸部细微表情识别_您可以仅使用面部表情来控制字体吗?
  4. CMake 构建项目Android NDK项目基础知识
  5. 第二周web作业1:简单的注册表单
  6. 怎么解决input中readonly属性的iOS一直存在光标问题
  7. Angular - - angular.element
  8. jps、jinfo、jstat、jstack、jmap、jconsole等命令简介
  9. 转:编写高效的Android代码
  10. element label动态赋值_浅析 vuerouter 源码和动态路由权限分配