文章目录

  • 一、文件传输协议
  • 二、FTP传输模式
  • 三、Vsftpd服务器简介
  • 四、Vsftp安装与配置
    • 配置文件
    • 用户访问模式配置
    • 匿名开放模式
    • 本地用户模式
    • 虚拟用户模式
  • 五、配置文件详解
    • 常用的匿名FTP配置项
    • 常用的本地用户FTP配置项
    • 常用的全局配置项

一、文件传输协议

文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件

二、FTP传输模式

FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式

  • 主动模式:FTP 服务器主动向客户端发起连接请求。
  • 被动模式:FTP 服务器等待客户端发起连接请求(FTP 的默认工作模式)。
  1. FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。
  2. FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

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

三、Vsftpd服务器简介

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

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

四、Vsftp安装与配置

检查是否安装:

rpm -qa | grep vsftpd

卸载vsftpd

yum remove vsftpd

安装vsftpd

yum install vsftpd -y

启动

systemctl start vsftpd

重启

systemctl restart vsftpd

查看是否启动

pe -ef | grep vsftpd

安装ftp

yum install ftp -y

配置文件

/etc/vsftpd/vsftpd.conf这个文件是vsftpd服务的核心配置文件!我们在修改配置文件的时候,最好先备份一份!

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

vsftpd.conf默认配置文件详解如下:

参数 作用
anonymous_enable=YES 开启匿名用户访问
local_enable=YES 启用本地系统用户访问
write_enable=YES 本地系统用户写入权限
local_umask=022 本地用户创建文件及目录默认权限掩码
dirmessage_enable=YES 打印目录显示信息,通常用于用户第一次访问目录时,信息提示
xferlog_enable=YES 启用上传/下载日志记录
connect_from_port_20=YES FTP使用20端口进行数据传输
xferlog_std_format=YES 日志文件将根据xferlog的标准格式写入
listen=NO Vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES
listen_ipv6=YES 启用IPV6监听
pam_service_name=vsftpd 登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证
userlist_enable=YES Vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP
tcp_wrappers=YES 设置vsftpd与tcp wrapper结合进行主机的访问控制,Vsftpd服务器检查/etc/hosts.allow 和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器

用户访问模式配置

vsftpd 作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到 FTP 服务器上。

  • 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到 FTP 服务器。

  • 本地用户模式:是通过 Linux 系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录 FTP 服务器,从而完全控制整台服务器。

  • 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为 FTP 服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供 FTP 服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

匿名开放模式

可以向匿名用户开放的权限参数以及作用

参数 作用
anonymous_enable=YES 允许匿名访问模式
anon_umask=022 匿名用户上传文件的 umask 值
anon_upload_enable=YES 允许匿名用户上传文件
anon_mkdir_write_enable=YES 允许匿名用户创建目录
anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录

修改配置文件

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES           #允许匿名访问模式
anon_umask=022                 #匿名用户上传文件的 umask 值
anon_upload_enable=YES         #允许匿名用户上传文件
anon_mkdir_write_enable=YES    #允许匿名用户创建目录
anon_other_write_enable=YES    #允许匿名用户修改目录名称或删除目录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=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

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

chown -Rf ftp /var/ftp/pubchmod o+w var/ftp/pub/

如果报错,一般是因为SELinux导致的,或者防火墙的问题

getsebool 命令查看与 FTP 相关的 SELinux 域策略都有哪些:

getsebool -a | grep ftp

修改该策略规则:

setsebool -P ftpd_full_access=on

本地用户模式

本地用户模式使用的权限参数以及作用

参数 作用
anonymous_enable=NO 禁止匿名访问模式
local_enable=YES 允许本地用户模式
write_enable=YES 设置可写权限
local_umask=022 启用“禁止用户名单”,名单文件为 ftpusers 和 user_list
userlist_enable=YES 允许匿名用户修改目录名称或删除目录
userlist_deny=YES 开启用户作用名单文件功能

创建测试用户user1、user2 密码都为“123456”

useradd user1
useradd user2--stdin:从标准输入接收用户密码
echo 123456 | passwd --stdin user1
echo 123456 | passwd --stdin user2

修改配置文件

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO      #禁止匿名访问模式
local_enable=YES         #允许本地用户模式
write_enable=YES         #设置可写权限
local_umask=022          #本地用户模式创建文件的 umask 值userlist_enable=YES
userlist_deny=NOdirmessage_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

/etc/vsftpd目录下有两个文件

  • ftpusers不受任何配制项的影响,它总是有效,它是一个黑名单!该文件存放的是一个禁止访问FTP的用户列表,**通常为了安全考虑,管理员不希望一些拥有过大权限的帐号(比如root)登入FTP,以免通过该帐号从FTP上传或下载一些危险位置上的文件从而对系统造成损坏。
  • user_list则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单!

userlist_enable=YES时,userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的。

当userlist_enable=YES时,userlist_deny=YES时,user_list是一个黑名单,所有出现在名单中的用户都会被拒绝登入。

当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous

查看名单

cat /etc/vsftpd/user_list

添加用户到白名单

vim /etc/vsftpd/user_list
user1
user2

需要再次开启 SELinux 域中对 FTP 服务的允许策略

setsebool -P ftpd_full_access=on

虚拟用户模式

  1. 建立虚拟FTP用户的帐号
useradd -s /sbin/nologin vu
  1. 创建虚拟用户文件
    基数行代表用户名,偶数行代表密码
cd /etc/vsftpd/
vim user
user1
123456
user2
123456
  1. 通过db_load工具创建出Berkeley DB格式的数据库文件
db_load -T -t hash -f user user.db-f 指定数据原文件
-T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件
-t hash   读取文件的基本方法
  1. 建立支持虚拟用户的PAM认证文件
 vim /etc/pam.d/vsftpd.vu加入以下两行auth       required     /lib64/security/pam_userdb.so db=/etc/vsftpd/useraccount    required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user对应刚才生成user.db的文件
  1. 修改配置文件
    利用 PAM 文件进行认证时使用的参数以及作用
参数 作用
anonymous_enable=NO 禁止匿名访问模式
local_enable=YES 允许本地用户模式
guest_enable=YES 开启虚拟用户模式
guest_username=virtual 指定虚拟用户账户
pam_service_name=vsftpd.vu 指定 PAM 文件
allow_writeable_chroot=YES 允许对禁锢的FTP 根目录执行写入操作,而且不拒绝用户的登录请求
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YESwrite_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/user_dir
  1. 为用户建立独立的配置目录及文件
mkdir /etc/vsftpd/user_dir
cd /etc/vsftpd/user_dir
vim userlocal_root=/etc/vsftpd/data
虚拟用户数据的存放路径

创建虚拟用户数据存放目录

cd /etc/vsftpd
mkdir data
chmod 777 data/

重启服务

systemctl restart vsftpd

五、配置文件详解

常用的匿名FTP配置项

anonymous_enable=YES                    # 是否允许匿名用户访问
anon_umask=022                          # 匿名用户所上传文件的权限掩码
anon_root=/var/ftp                      # 设置匿名用户的FTP根目录
anon_upload_enable=YES                  # 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES             # 是否允许匿名用户允许创建目录
anon_other_write_enable=YES             # 是否允许匿名用户有其他写入权(改名,删除,覆盖)
anon_max_rate=0                         # 限制最大传输速率(字节/秒)0为无限制

常用的本地用户FTP配置项

local_enable=YES                             # 是否允许本地系统用户访问
local_umask=022                              # 本地用户所上传文件的权限掩码
local_root=/var/ftp                          # 设置本地用户的FTP根目录
chroot_list_enable=YES                       # 表示是否开启chroot的环境,默认没有开启
chroot_list_file=/etc/vsftpd/chroot_list     # 表示写在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的。默认是可以的。
Chroot_local_user=YES                        # 表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。
local_max_rate=0                             # 限制最大传输速率(字节/秒)0为无限制

常用的全局配置项

listen=YES                             # 是否以独立运行的方式监听服务
listen_address=192.168.4.1             # 设置监听FTP服务的IP地址
listen_port=21                         # 设置监听FTP服务的端口号
write_enable=YES                       # 是否启用写入权限(上传,删除文件)
download_enable=YES                   # 是否允许下载文件
dirmessage_enable=YES                  # 用户切换进入目录时显示.message文件
xferlog_enable=YES                     # 启用日志文件,记录到/var/log/xferlog
xferlog_std_format=YES                 # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
connect_from_port_20=YES               # 允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES                        # 允许服务器被动模式
pasv_max_port=24600                    # 设置被动模式服务器的最大端口号
pasv_min_port=24500                    # 设置被动模式服务器的最小端口号
pam_service_name=vsftpd                # 用户认证的PAM文件位置(/etc/pam.d/vsftpd.vu)
userlist_enable=YES                    # 是否启用user_list列表文件
userlist_deny=YES                      # 是否禁用user_list中的用户
max_clients=0                          # 限制并发客户端连接数
max_per_ip=0                           # 限制同一IP地址的并发连接数
tcp_wrappers=YES                       # 是否启用tcp_wrappers主机访问控制
chown_username=root                    # 表示匿名用户上传的文件的拥有人是root,默认关闭
ascii_upload_enable=YES                # 表示是否允许用户可以上传一个二进制文件,默认是不允许的
ascii_download_enable=YES              # 这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的
nopriv_user=vsftpd                     # 设置支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户
async_abor_enable=YES                  # 设定支持异步传输功能
ftpd_banner=Welcome to FTP             # 设定Vsftpd的登陆标语
guest_enable=YES                   # 设置启用虚拟用户功能
guest_username=ftpuser               # 指定虚拟用户的宿主用户
virtual_use_local_privs=YES       # 设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf    # 设定虚拟用户个人Vsftp的配置文件存放路径

Linux配置vsftpd 服务相关推荐

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

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

  2. Linux配置squid服务(代理实现解析DNC(国赛Linux服务器))

    Linux配置squid服务 前言 安装squid squid原理 准备工作 安装squid 实验结果 配置手动代理 最终实验 前言 两台centos7.9,一台统信uos squid服务器,命名为R ...

  3. linux中匿名用户怎么登陆_南京课工场IT培训:Linux中vsftpd服务配置(匿名,用户,虚拟用户)...

    vsftpd概述 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字 ...

  4. 【vsftpd】嵌入式linux简易配置vsftpd服务

    背景 本教程主要涉及/etc(或者/etc/vsftpd下)路径下vsftpd.conf.vsftpd.ftpusers.vsftpd.user_list文件,简易配置ftp,让使用者可以快速使用ro ...

  5. linux配置ftp服务

    一.FTP连接及传输 控制连接:TCP 21,用于发送FTP命令信息 数据连接:TCP 20,用于上传.下载数据 数据连接的建立类型: 主动模式:服务端从20端口主动向客户端发起连接 被动模式:服务端 ...

  6. ubuntu 12.04 配置vsftpd 服务,添加虚拟用户,ssl加密

    1.对于12.04的vsftpd 有一些bug,推荐安装版本vsftpd_2.3.5-1ubuntu2ppa1_amd64.deb apt-get install python-software-pr ...

  7. linux开通vsftpd服务过程

    查看系统是否安装vsftpd服务 # rpm -qa vsftpd 若没安装,可用yum进行安装 #yum -y install vsftpd 修改配置文件 手动输入 chroot_local_use ...

  8. linux ssh服务,Linux配置SSH服务以便实现远程连接

    Linux用户们一定想要知道该怎么开启SSH服务吧,SSH服务是Linux系统远程连接的重要方式,所以如何配置SHH服务也让很多用户感到纠结.现在小编就帮大家解决这个问题. 配置方法: 查询\安装SS ...

  9. Linux配置网络服务

    1.配置网络服务 Linux主机要与网络中其他主机进行通信,首先要进行正确的网络配置.网络配置通常包括主机名.IP地址.子网掩码.默认网关.DNS服务器等. 1.1检查并设置有线网络处于连接状态 单击 ...

最新文章

  1. 使用Newtonsoft.Json
  2. (操作系统)实验二 作业调度
  3. 性能测试工具curl-loader二---测试分析
  4. MySQL总结(二)——入门
  5. unity 中文_Unity无情大爆料时间Unity3D的脚本语言
  6. JQuery文件上传插件ajaxFileUpload在Asp.net MVC中的使用[转载]
  7. 【干货】2021顾客体验十二大趋势:从“千人一面”到“千人千面”.pdf(附下载链接)...
  8. c语言程序输入n个数字排序,请问,C语言能人请进,用写一个程序,要求输入N个整数,按从小到大的顺序输出,就说说...
  9. 如何重设<input type = “file”>
  10. ov5640帧率配置_OV5640摄像头开窗大小,输出窗口大小,帧率等设置
  11. 论文阅读笔记(16):Doubly Stochastic Subspace Clustering,双重随机子空间聚类
  12. amoeba mysql_mysql中间件-amoeba
  13. [NOI2010] 航空管制 (构反图+拓扑)
  14. 苹果开发者账号(三)
  15. windows远程控制mac的步骤
  16. 【收集】巴厘岛自助游攻略
  17. 正则判断只能输入大于0的正整数
  18. 如何用计算机直接做工资表,在电脑上excel做工资表怎么划线
  19. 华三无线控制器基础调试步骤
  20. Air780E连接点灯科技-LuatOS

热门文章

  1. 聚类(Clustering)定义、聚类思想及形式、距离的度量
  2. ACID+CAP+BASE+Transaction(事务)
  3. 黎明觉醒火种测试服务器维护,黎明觉醒火种测试什么时候上线 黎明觉醒火种测试资格获取方式(图文)...
  4. c语言求婚代码大全,这是我见过最浪漫的程序员求婚方式
  5. 创建Student Course SC表
  6. 三代测序纠错软件汇总篇
  7. STM32使用另外两种方法使LED灯闪烁
  8. android 自动打开第三方应用程序,Android如何做到应用程序图标隐藏,由第三方程序显示启动...
  9. android程序贴吧,【Android 教程总结贴】归纳所有android贴
  10. javascript 之 push