debian11安装ftp服务器(vsftpd)

阅读数:298 评论数:0

跳转到新版页面

分类

Linux

正文

一、概述

1、standalone和inetd(inetd或xinetd)模式的区别

(1)standalone模式

运行期间一直驻留在内存中,会战胜一定的系统资源,适合实时返回要求较高的ftp服务器。

(2)inetd模式

只有外部连接发送请求时

2、vsftp简介

vsftp是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP。

3、vsftp连接类型

(1)控制连接(持续连接)

TCP 21(命令信道),用户收发FTP命令。

(2)数据连接(按需连接)

TCP 20(数据信道),用于上传下载数据。

4、vsftp工作模式

(1)主动模式(port)

ftp客户端首先和服务器的TCP 21端口建立连接,用于发送命令。

客户端需要接收数据的时候在这个通道上发送port命令。port命令包含了客户端用什么端口接收数据。

在传送数据的时候,服务器端通过自已的TCP 20端口连接至客户端的指定端口发送数据。

ftp server必须和客户端建立一个新的连接用来传送数据。

(2)被动模式(passive)

ftp客户端首先和服务器的TCP 21端口建立连接,用来建立控制通道命令。

但建立连接后客户端发送Pasv命令。

服务器收到Pasv命令后,打开一个临时端口(大于1023小于65535),并且通知客户端在这个端口上传送数据的请求。

客户端连接FTP服务器的临时端口,然后FTP服务器将通过这个端口传输数据。

注意:由于VSFTP的被动模式是随机端口进行数据传输,所以在设置防火墙时需要刻意放行–>这里一定要放心vsftp的服务。

5、vsftp传输模式

Binary模式:不对数据进行任何处理,适合进行可执行文件、压缩文件、图片等

ASCII模式:进行文本传输时,自动适应目标操作系统的结束符,如回车符等

Linux的红帽发行版中VSFTP默认采用的是Binary模式,这样能保证绝大多数文件传输后能正常使用

切换方式:在ftp>提示符下输入ascii即转换到ACSII方式,输入bin,即转换到Binary方式。

6、相关目录

# vsftp配置文件,可以通过man 5 vsftpd.conf查看具体配置
/etc/vsftpd/vsftpd.conf

# PAM认证文件,主要用来作身份认证使用
# 
/etc/pam.d/vsftpd

# 匿名用户默认目录
/var/ftp

# 匿名用户的下载目录
/var/ftp/pub

# 不能访问 ftp server 的用户列表,与pam认证文件有关系
/etc/vsftpd/ftpusers

# 允许访问 ftp server 的用户列表
/etc/vsftpd/user_list

二、安装

$ sudo apt install vsftpd
#启动vsftpd服务
$ sudo systemctl start vsftpd
$ sudo systemctl enable vsftpd
$ sudo systemctl status vsftpd
#添加用户、修改密码
$ useradd -m ftpuser
$ passwd ftpuser

、配置

1、vim /etc/vsftpd.conf

# 是否使用standalone启动vsftpd,而不是super daemon(xinetd)控制它
listen=YES
#类似listen选项,但该选项使vsftpd侦听的地址为IPv6格式的
listen_ipv6=NO

#是否开启匿名用户
anonymous_enable=NO

 #本地用户是否可以登录
local_enable=YES
#用户是否具有写的权限(全局,若要对其中一种用户开放上传权限,此处必须YES)
write_enable=YES

 #设置本地用户的文件生成掩码
local_umask=022
#是否允许匿名用户上传文件
anon_upload_enable=YES
 #当切换到FTP服务器的某个目录时,是否显示该目录下的.message信息
dirmessage_enable=YES
#显示目录清单时是用本地时间还是GMT时间,可以通过mdtm命令来达到一样的效果
use_localtime=YES
#是否启用上传和下载日志
xferlog_enable=YES
#是否启用FTP数据端口的连接请求
connect_from_port_20=YES
#是否允许用户离开其宿主目录
chroot_local_user=YES
idle_session_timeout=150
data_connection_timeout=600
#这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd 不需要file system 的权限时,就会#将使用者限制在此数据夹中,默认值为/usr/share/empty
secure_chroot_dir=/var/run/vsftpd/empty

#PAM认证服务配置文件名称,保存在”/etc/pam.d”目录下
pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#是否启用SSL
ssl_enable=NO

# 以下部分需要手动添加,模板里没有
utf8_filesystem=YES
allow_writeable_chroot=YES
 #是根据user_list实行访问控制(若启用此选项,userlist_deny选项才被启动)
userlist_enable=YES
#若为YES,则userlist_file中的用户将不能登录,为NO则只有userlist_file的用户可以登录
userlist_deny=NO
#指定所有本地用户登陆后的目录,如果不设置此项,用户都会登陆于自己的主目录
local_root=/home/ftpuser
 #是否允许匿名用户具有建立目录,上传之外的权限,如重命名,删除
anon_other_write_enable=YES
max_login_fails=9

(1)服务器环境设置有关的设置值

connect_timeout=60 单位是秒,在数据连接的主动式连模式下,我们发出的连接信息在 60 秒内得不到客户端的响应,则不等待并强制断线。
data_connection_timeout=120 如果服务器与客户端的数据已经成功建立(不论主动还是被动链接),但是可能由于线路问题导致 120 秒内还是无法顺利地完成数据地传送,那客户端地连接就会被我们地 vsftpd 强制踢除。
idle_session_timeout=600 如果用户在 300 秒内都没有命令操作,强制脱机!避免无用占用空间。
max_clients 限制同一时间最多有多少 client 可以同时连上 vsftpd ,限制使用 FTP 的用量。
max_per_ip 同一个 IP 同一时间可允许多少连接。
pasv_enable 是否支持数据流的被动式连接模式。该参数的默认值是 YES。
pasv_min_port,pasv_max_port 被动连接模式使用的端口号有关
connect_from_port_20=YES 支持主动式连接功能
listen=YES YES,表示 vsftpd 是以 stand alone 的方式来启动。默认是 NO

(2)与实体用户相关的设置

local_enable=YES 个设置值必须要为 YES,在  /etc/passwd  内地账号才能以实体用户地方式登录我们的  vsftpd  服务器
local_max_rate=0 实体用户的传输速度限制,单位为 bytes/second,0 为不限制
write_enable=YES 如果你允许用户上传数据时,就要启动这个设置值       
chroot_local_user=YES 在默认的情况下,是否要将用户限制在自己的用户主目录之内(chroot)?如果是  YES  代表用户默认就会被 chroot,如果是 NO,则默认是没有 chroot。
chroot_list_enable=YES 这个项目需要开启,否则下面的列表文件会无效。
chroot_list_file=/etc/vsftp/chroot_list  
userlist_enable=YES 是否借助 vsftpd_enable 的阻挡机制来处理某些不欢迎的账号,
userlist_deny=YES 当 userlist_enable=YES  时才会生效的设置,若此设置值为 YES  时,则当用户账号被列入某个文件时,在该文件内的用户将无法登录  vsftpd  服务器
userlist_file=/etc/vsfpd/user_list 若上面 userlist_deny = YES 时,则这个文件就有用处了。在这个文件内的账号都无法使用 vsftpd。

(3)匿名用户登录的设置

anonymous_enable=YES 设置允许  anonymous  登录 vsftpd  主机。默认是 YES,下面的所由相关设置都需要将这个设置为 anonymous_enable=YES  之后才会生效。
anon_world_readable_ONLY=YES 仅允许  anonymous  具有下载可读文件的权限。
anon_other_write_enable=YES 是否允许  anonymous  具有除了写入之外的权限,包括删除与修改服务器上的文件及文件名的权限。如果要设置为  YES,那么开放给 anonymous  写入的目录亦即需要调整权限,让 vsftpd  的PID 拥有者可以写入才行。
anon_mkdir_write_enable=YES 是否让 anonymous  具有建立目录的权限,如果要设置为  YES,那么 anon_other_write_enable=YES  必须设置。
anon_upload_enable=YES 是否让  anonymous  具有上传数据的功能,如果要设置为  YES,那么 anon_other_write_enable=YES  必须设置。
anon_umask=077 限制 anonymous  上传文件的权限。如果是  077 则 anonymous  传宋过来的文件权限会是 -rw-------。
anon_max_rate=0 这个设置值后面接的数值单位为 bytes/秒,限制 anonymous 的传输速度,如果是 0 则不限制(由最大带宽所限制),
anon_root 修改匿名用户的默认家目录(默认家目录是 /var/ftp)
chown_uploads=YES 是否要修改匿名用户使用的身份,如果是 YES ,那么指定的用户身份由下面那一个参数来决定
chown_username 如果上面那个参数(chown_uploads)的值是 YES,那么,这个参数就是在指定使用的用户的身份
no_anon_password 当设置为 YES 时,表示 anonymous 将会略过密码检验步骤,而直接进入 vsftpd 服务器内。

(4)与系统安全方面相关设置

tcp_wrappers=YES 当然我们都习惯支持 TCP  Wrappers  的防火墙机制(即可以利用  /etc/hosts.allow  或  /etc/hosts.deny  来作为基础防火墙)  ,所以设置为 YES
xferlog_enable=YES 当设置为 YES 时,用户上传与下载文件都会被记录下来。记录的文件与下一个设置项目有关
xferlog_file=/var/log/xferlog 如果上一个设置项目 xferlog_enable=YES 的话,这里就可以设置了。这个是日志文件的文件名
pam_service_name=vsftpd 这个是 PAM 模块的名称,我们放置在 /etc/pam.d/vsftpd 中的即是这个。

2、把刚刚创建的用户添加到白名单里

echo "ftpuser" | sudo tee -a  /etc/vsftpd.user_list

3、创建上传目录,修改权限

$ sudo mkdir /home/ftpuser/upload
$ sudo chmod -R 777 /home/ftpuser/upload

4、重启vsftpd服务

sudo systemctl restart vsftpd

四、3种登陆模式

客户端----->匿名用户登录---->匿名账号:ftp或者是anonymous 密码是空密码
							默认的家目录:/var/ftp/目录下

客户端----->本地用户登录---->本地登录涉及到:普通用户和普通用户的家目录
							/etc/passwd
							/etc/shadow文件

客户端----->虚拟用户登录---->这个是最复杂的;
						需要人为创建,生成数据库文件;
						找一个系统用户作为虚拟用户的映射用户,借助系统用户的家目录作为默认的登陆点,/home下的其中一个用户名
						每一个虚拟用户的权限都可以单独指定的

1、匿名用户

默认可以下载不可上传,如果想获得上传权限,需要在原目录下创建子目录并赋权。

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 为不限速,单位:bytes/秒)
# 新建子目录
mkdir -p /var/ftp/upload

# 修改权限
chown -R ftp /var/ftp/upload/
chmod -R 755 /var/ftp/upload/

# 重启服务
systemctl restart vsftpd

# 查询服务器IP
ip addr

# 登陆
ftp://192.168.210.201/

2、本地用户

(1)锁定主目录和设定主目录最好配套使用。

(2)推荐使用被动访问模式

(3)本地用户掩码为local_umask,虚拟用户掩码为anno_umask,注意区分。

(4)为了安全,如果用户被限定的其主目录下,则该用户的主目录不能再具有写权限,如果检查发现还有写权限,就会报500 OOPS: vsftpd: refusing to run with writable root inside chroot()错误。解决方式不止一种,其中通过配置allow_writeable_chroot=YES的方式最省事、也最正规。

# 锁定主目录
chroot_local_user=YES
# 设定登陆主目录
local_root=/home
# 允许用户对于主目录具有读写权限
allow_writeable_chroot=YES

# 被动
pasv_enable=YES
pasv_min_port=12000
pasv_max_port=12199

(5)目录管理

自定义根目录,所属必须为root,权限为755,一般情况下,root用户创建的目录就符合要求。

子目录,所属必须为对应建立的用户,权限为700,这样保证自身对于文件夹有所有权限,但是其他用户无法进入。

如果在新建用户的时候指字其用户主目录为子目录,则可以跳过子目录创建阶段。

mkdir /home/FTP
chown -R root:root /home/FTP
chmod -R 755 /home/FTP

# 新增子目录(可选)
mkdir -p /home/FTP/admin_files
chown -R admin:admin /home/FTP/admin_files
chmod -R 700 /home/FTP/admin_files

 

local_enable=YES 			#是否启用本地系统用户
local_umask=022 			#本地用户所上传文件的权限掩码
local_root=/var/ftp 		#设置本地用户的 FTP 根目录
chroot_local_user=YES 		#是否将用户禁锢在主目录
local_max_rate=0 			#限制最大传输速率
ftpd_banner=Welcome to blah FTP service #用户登录时显示的欢迎信息
userlist_enable=YES & userlist_deny=YES
		#禁止/etc/vsftpd/user_list 文件中出现的用户名登录 FTP
userlist_enable=YES & userlist_deny=NO
		#仅允许/etc/vsftpd/user_list 文件中出现的用户名登录 FTP
配置文件:ftpusers 
		#禁止/etc/vsftpd/ftpusers 文件中出现的用户名登录 FTP,权限比 user_list 更高,即时生效

 




相关推荐

一、概述 FTP是一种基于TCP的服务,它使用两个端口,一个数据端口和一个命令端口(也称控制端口,通常是21端口)。主动模式还是被动模式由客户端决定。 二、port(主动模式,通过20端口传输数据)

一、ftp的常用方式 1. 连接ftp服务器 ftp [hostname| ip-address] #例如 ftp 10.18.34.115 服务器询问你用户名和口令,待认证通过即可。 2. 列出远程

一、概述 目前Linux软件安装方式最常见的有两种: 1、dpkg     这个机制最早由Debian社区所开发,包括Ubuntu。 2、rpm     这个机制由Red Hat开发,包括Fedora

安装 查看是否已安装 vsftpd -v 安装vsftpd yum -y install vsftpd 查看位置</h

一、通过源安装 # 安装arm-linux-gcc sudo apt-get install gcc-arm-linux-gnueabihf # 安装arm-linux-g++ sudo apt-ge

一、概述 snapd可以解决linux下安装或运行应用时缺少依赖的问题,可以理解为一个应用社区,里面包含了很多常见的应用。 二、使用 1、安装 sudo apt install snapd 2、安装s

在Ubuntu或其他基于Debian的系统上,安装Google Chrome浏览器通常需要下载官方的.deb安装包,然后使用dpkg命令安装它。以下是详细步骤: 打开你的终端。 转到Goo