vsftpd服务的搭建

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火狐浏览器书签(收藏夹)全部消失,历史记录也消失,如何恢复

今天关闭再打开火狐浏览器瞬间懵逼&#xff0c;浏览器所有的记录都没了&#xff0c;映入眼帘的的火狐新手指导页&#xff0c;而且主页导航变成了hao123&#xff0c;我估计是外部程序篡改了浏览器配置&#xff0c;或者其他异常导致浏览器重置。书签、历史记录对开发人员的重要性…

apple tv 开发_如何防止Apple TV进入睡眠状态

apple tv 开发Your Apple TV, by default, goes to sleep fairly quickly when not in use. That’s great for power saving but not so great if you like to keep it on. Let’s take a look at how to extend how long it stays awake or disable sleep mode altogether. 默…

MASA MAUI Plugin (七)应用通知角标(小红点)Android+iOS

背景MAUI的出现&#xff0c;赋予了广大Net开发者开发多平台应用的能力&#xff0c;MAUI 是Xamarin.Forms演变而来&#xff0c;但是相比Xamarin性能更好&#xff0c;可扩展性更强&#xff0c;结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目…

SAP如何查看会计凭证

比如SAP中已经存在着很多会计凭证&#xff0c;你想要进入SAP随便看看会计凭证的列表&#xff0c;怎么操作呢&#xff1f;事务码 IDCNDOC运行结果看到了凭证们&#xff0c;和每个凭证的行项目们上图看到的结果比较凌乱实际上我们重新进入IDCNDOC可以通过输入的勾选&#xff0c;选…

Spring Data Redis与Jedis的选择(转)

说明&#xff1a;内容可能有点旧&#xff0c;需要在业务上做权衡。 Redis的客户端有两种实现方式&#xff0c;一是可以直接调用Jedis来实现&#xff0c;二是可以使用Spring Data Redis&#xff0c;通过Spring的封装来调用。应该使用哪一个呢&#xff1f;基于当前版本Spring Dat…

C# 温故而知新:Stream篇(五)

MemoryStream 目录&#xff1a; 1 简单介绍一下MemoryStream 2 MemoryStream和FileStream的区别 3 通过部分源码深入了解下MemoryStream 4 分析MemorySteam最常见的OutOfMemory异常 5 MemoryStream 的构造 6 MemoryStream 的属性 7 MemoryStream 的方法 8 MemoryStream 简单示例…

dosbox 自动运行_如何使用DOSBox运行DOS游戏和旧应用

dosbox 自动运行New versions of Windows don’t fully support classic DOS games and other old applications — this is where DOSBox comes in. It provides a full DOS environment that runs ancient DOS apps on modern operating systems. Windows的新版本不完全支持经…

WPF 自定义放大镜控件

控件名&#xff1a;Magnifier作 者&#xff1a;WPFDevelopersOrg - 驚鏵原文链接[1]&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用.NET40&#xff1b;Visual Studio 2019;实现此功能需要用到 VisualBrush &#xff0c;放大镜展现使用 Canvas ->…

springboot小笔记

如果默认通过IDEA的springboot 插件布置的 的初始启动类是这样的&#xff0c;这种就是一个普通的java类&#xff0c;只能以jar打包 package com.how2java.springboot;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.Sprin…

.NET实现之(WebBrowser数据采集—续篇)

我们继续“.NET实现之(WebBrowser数据采集)“系列篇之最后一篇&#xff0c;这篇本人打算主要讲解怎么用WebBrowser控件来实现“虚拟”的交互性程序&#xff1b;比如我们用Winform做为宿主容器&#xff0c;用Asp.net做相关收集程序页面&#xff0c;我们需要通过客户端填写相关数…

ipad和iphone切图_如何在iPhone,iPad和Mac上使消息静音

ipad和iphone切图If you use Messages on your iPhone, iPad, or Mac, then you probably know how quickly you can become overrun with message notifications, especially if you’re part of a group message. Thankfully, there’s an easy way to mute specific message…

Pipy 实现 SOCKS 代理

上篇我们介绍了服务网格 osm-edge 出口网关使用的 HTTP 隧道&#xff0c;其处理方式与另一种代理有点类似&#xff0c;就是今天要介绍的 SOCKS 代理。二者的主要差别简单来说就是前者使用 HTTP CONNECT 告知代理目的地址&#xff0c;而后者则是通过 SOCKS 协议。值得一提的是&a…

python拓展7(Celery消息队列配置定时任务)

介绍 celery 定时器是一个调度器&#xff08;scheduler&#xff09;&#xff1b;它会定时地开启&#xff08;kicks off&#xff09;任务&#xff0c;然后由集群中可用的工人&#xff08;worker&#xff09;来执行。 定时任务记录&#xff08;entries&#xff09;默认 从 beat_s…

Asia Yokohama Regional Contest 2018 G题 What Goes Up Must Come Down(树状数组求逆序对)

https://codeforces.com/gym/102082 题意&#xff1a; 给一个数组大小不超过1e5&#xff0c;每个数的值也是1e5以内&#xff0c;可以交换相邻两个数&#xff0c;求保证它呈现一个非递减再非递增的趋势的最小交换次数。 题解&#xff1a;对每个数来说&#xff0c;只有两种情况&a…

Android系统的开机画面显示过程分析(8)

3. 第三个开机画面的显示过程第三个开机画面是由应用程序bootanimation来负责显示的。应用程序bootanimation在启动脚本init.rc中被配置成了一个服务&#xff0c;如下所示&#xff1a;service bootanim /system/bin/bootanimation user graphics group graphics disabled o…

chrome连接已重置_如何重置(或调整)Chrome的下载设置

chrome连接已重置By default, Chrome saves all downloaded files to the same location—a dedicated “Downloads” folder. The thing is, this isn’t always practical for all types of download files. The good news is you can easily tweak this setting. 默认情况下…

.Net 7 团队把国内的龙芯确实当做一等公民和弃用的项目

楔子&#xff1a;国内龙芯据说是用的自己的指令集&#xff0c;在研究ILC的时候&#xff0c;发现了龙芯在微软那边确实是一等公民的存在。同X64,ARM,X86一同并列交叉编译和二进制提取。龙芯官网龙芯平台.NET&#xff0c;是龙芯公司基于开源社区.NET独立研发适配的龙芯版本&#…

戴尔押宝iSCSI,由低到高组合成型

戴尔&#xff08;Dell&#xff09;是较早接受SAS技术的主流存储厂商之一&#xff0c;2006年已推出采用SAS硬盘驱动器的SAS直连存储&#xff08;DAS&#xff09;系统PowerVault MD3000。一年之后&#xff0c;主机连接改用iSCSI的PowerVault MD3000i问世。2008年1月&#xff0c;E…

仿Gin搭建自己的web框架(七)

本篇介绍HTTP Basic Auth的实现以及Recovery机制。 HTTP Basic Auth Basic Auth是一种开放平台认证方式&#xff0c;简单的说就是需要你输入用户名和密码才能继续访问。对于Basic Auth的概念不过多的进行介绍&#xff0c;直接进入如何实现的过程。 Basic Auth说白了就是账号和密…

canvas高斯模糊算法

对于模糊图片这个效果的实现&#xff0c;其实css3中的filter属性也能够实现&#xff0c;但是这个属性的兼容性不是很好&#xff0c;所以我们通常不用这种方法实现&#xff0c;而使用canvas配合JS实现。 <span style"white-space:pre"> </span>//高斯模糊…