2.用户禁锢、黑白名单
问题
沿用练习一,通过调整FTP服务端配置,实现以下目标:
1)将FTP用户禁锢在各自的宿主目录下,阻止其切换到其他的文件夹
2)通过/etc/vsftpd/ftpusers黑名单阻止用户 mike 访问
3)将/etc/vsftpd/user_list文件设为白名单,允许用户 lisi、mike 访问
4)分别测试匿名访问、以用户lisi和mike访问的结果
5)将 ftp 加入白名单,再测试匿名访问
方案
对于匿名用户ftp来说,默认已经启用禁锢(仅限于起始目录/var/ftp);而对FTP本地用户来说,默认并没有禁锢(不仅可以访问宿主目录,还可以跳转到其他目录),存在一定安全隐患。若要禁锢本地用户,只需设置 chroot_local_user = YES即可。
vsftpd服务提供了两个用户列表文件,其中 /etc/vsftpd/ftpusers 作为默认的黑名单使用,列在此文件内的用户将无法登入FTP。
而另一个文件 /etc/vsftpd/user_list只是一个用户名列表,根据配置参数 userlist_enable 的值是YES(默认)还是NO来决定是否启用此列表。一旦启用此列表文件以后,如果配置参数 userlist_deny的值是YES(默认)则此列表为黑名单(拒绝指定的用户),如果是NO则此列表作为白名单使用。
步骤
实现此案例需要按照如下步骤进行。
步骤一:禁锢FTP本地用户账号
1)验证未启用禁锢前的风险
以普通用户lisi登入后,起始目录位于/home/lisi/,但可以通过cd命令切换到服务器上的其他目录(比如/etc/),并下载有读取权限的文件(比如passwd),可能导致未授权的信息泄露。
[root@pc205 ~]# ftp 192.168.4.5 //连接FTP服务器
Connected to 192.168.4.5 (192.168.4.5).
220 (vsFTPd 2.2.2)
Name (192.168.4.5:root): lisi //以FTP本地用户登录
331 Please specify the password.
Password: //验证口令
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd //查看起始目录
257 “/home/lisi” //位于用户lisi的家目录
ftp> cd /etc/ //切换到其他目录
250 Directory successfully changed.
ftp> get passwd //下载/etc/目录下的passwd文件
local: passwd remote: passwd
227 Entering Passive Mode (192,168,4,5,64,118).
150 Opening BINARY mode data connection for passwd (2122 bytes).
226 Transfer complete.
2122 bytes received in 4.5e-05 secs (47155.56 Kbytes/sec)
ftp> quit //断开连接
221 Goodbye.
[root@pc205 ~]# head -5 passwd //确认下载后的文件
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
daemon❌2:2:daemon:/sbin:/sbin/nologin
adm❌3:4:adm:/var/adm:/sbin/nologin
lp❌4:7:lp:/var/spool/lpd:/sbin/nologin
2)修改vsftpd.conf配置文件,启用禁锢本地用户的设置
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
… …
chroot_local_user=YES //添加禁锢配置

[root@svr5 ~]# service vsftpd reload
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
3)验证启用禁锢后的效果
再次以用户lisi登入FTP服务器,会发现起始目录(/home/lisi)已经被视为用户FTP会话的根目录,无法切换到/etc/等其他目录。
[root@pc205 ~]# ftp 192.168.4.5 //连接FTP服务器
Connected to 192.168.4.5 (192.168.4.5).
220 (vsFTPd 2.2.2)
Name (192.168.4.5:root): lisi //以FTP本地用户登录
331 Please specify the password.
Password: //验证口令
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd //查看起始目录
257 “/” //已经位于FTP根目录
ftp> ls //实际还是在lisi的家目录
227 Entering Passive Mode (192,168,4,5,239,27).
150 Here comes the directory listing.
-rw-r–r-- 1 507 508 47884 Jan 13 08:01 install.log
-rw-r–r-- 1 0 0 16 Jan 13 07:01 lisi.txt
226 Directory send OK.
ftp> cd /etc //尝试切换到其他目录失败
550 Failed to change directory.
ftp> quit //断开连接
221 Goodbye.
步骤二:使用FTP黑白名单
1)测试FTP黑名单文件/etc/vsftpd/ftpusers
添加一个用户mike,并设好密码:
[root@svr5 ~]# useradd mike
[root@svr5 ~]# echo 1234567 | passwd --stdin mike
更改用户 mike 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
将用户mike加入FTP黑名单:
[root@svr5 ~]# vim /etc/vsftpd/ftpusers
… …
mike //添加到文件末尾,不要有多余空格
从客户机访问此FTP,尝试以mike登录时将会失败:
[root@pc205 ~]# ftp 192.168.4.5 //连接FTP服务器
Connected to 192.168.4.5 (192.168.4.5).
220 (vsFTPd 2.2.2)
Name (192.168.4.5:root): mike //尝试以用户mike验证
331 Please specify the password.
Password: //输入正确口令
530 Login incorrect.
Login failed. //因在黑名单内,此用户被拒绝登录
ftp> quit //断开连接
221 Goodbye.
2)将用户列表/etc/vsftpd/user_list作为FTP白名单
修改vsftpd服务配置,确认userlist_enable=YES,并在其下方添加一行新的配置语句userlist_deny=NO,然后重载服务:
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
… …
userlist_enable=YES
userlist_deny=NO //仅允许列表中的用户
[root@svr5 ~]# service vsftpd reload
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
然后打开文件 /etc/vsftpd/user_list,清空原有记录,添加用户lisi、mike:
[root@svr5 ~]# vim /etc/vsftpd/user_list //不要有多余空格
lisi
mike
3)测试FTP白名单限制效果
以匿名用户ftp访问FTP服务器时,因不在白名单中,登录将会被拒绝:
[root@pc205 ~]# ftp 192.168.4.5
Connected to 192.168.4.5 (192.168.4.5).
220 (vsFTPd 2.2.2)
Name (192.168.4.5:root): ftp //匿名登录
530 Permission denied. //用户ftp不在白名单内,不接受验证
Login failed.
ftp> quit
221 Goodbye.
以用户lisi访问FTP服务器时,此用户在白名单中且不在ftpusers黑名单中,因此是可以正常登录的:
[root@pc205 ~]# ftp 192.168.4.5
Connected to 192.168.4.5 (192.168.4.5).
220 (vsFTPd 2.2.2)
Name (192.168.4.5:root): lisi //以用户lisi登录
331 Please specify the password.
Password: //输入正确口令
230 Login successful. //登入成功
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.
以用户mike访问FTP服务器时,此用户虽然在白名单中,但同时也在ftpuser黑名单中,因此尽管接受了用户名,但在提交密码后会被拒绝:
[root@pc205 ~]# ftp 192.168.4.5
Connected to 192.168.4.5 (192.168.4.5).
220 (vsFTPd 2.2.2)
Name (192.168.4.5:root): mike //以用户mike登录
331 Please specify the password.
Password: //输入正确口令
530 Login incorrect.
Login failed. //登入失败
ftp> quit
221 Goodbye.
修改vsftpd服务器的白名单文件,将匿名用户ftp、anonymous加入:
[root@svr5 ~]# vim /etc/vsftpd/user_list //不要有多余空格
lisi
mike
ftp
anonymous
再次从客户端匿名访问FTP服务器,将可以成功登入:
[root@pc205 ~]# ftp 192.168.4.5
Connected to 192.168.4.5 (192.168.4.5).
220 (vsFTPd 2.2.2)
Name (192.168.4.5:root): ftp //匿名登录
331 Please specify the password.
Password:
230 Login successful. //因已在服务器白名单中,顺利登入
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.
3.FTP并发及带宽限制
问题
沿用练习一,通过调整FTP服务端配置,实现以下目标:
最多允许100个FTP并发连接
每个IP地址最多允许2个并发连接
匿名访问时,将速度限制为 50KB/s
用户登录访问时,将速度限制为 500KB/s
在客户机上通过ftp或wget验证上述限制
方案
关于vsftpd服务器的并发及带宽限制,主要用到以下配置参数:
max_clients:限制并发的客户端个数
max_per_ip:限制每个客户机IP的并发连接数
anon_max_rate:匿名最大速度(字节/秒)
local_max_rate:验证用户最大速率(字节/秒)
步骤
实现此案例需要按照如下步骤进行。
步骤一:限制并发连接数
1)修改vsftpd服务配置,在末尾添加并发限制并重载服务
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
… …
max_clients=100
max_per_ip=2

[root@svr5 ~]# service vsftpd reload
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
2)从客户机开多个FTP连接进行测试
访问vsftpd服务器时,只要客户端不主动断开连接,且闲置不超过300秒(默认),vsftpd服务器都会保留此连接。因此可以开多个命令终端同时登入此FTP服务器,以测试并发限制效果。
比如,从客户机pc205上匿名登入FTP服务器且不退出,前两次连接都是成功的,当第三次(超过2)连接时,会出现“There are too many connections … …”的报错提示,连接失败:
[root@svr5 ~]# ftp 192.168.4.5
Connected to 192.168.4.5 (192.168.4.5).
421 There are too many connections from your internet address. //连接数超限
ftp> pwd
Not connected. //未连接成功
ftp> quit
步骤二:限制FTP传输速度
1)修改vsftpd服务配置,在末尾添加速度限制,并重载服务
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
… …
anon_max_rate=50000
local_max_rate=500000

[root@svr5 ~]# service vsftpd reload
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
2)在匿名FTP起始目录、用户lisi的家目录下建立下载测试文件
为了方便看到效果,建立的测试文件可以稍大一点(比如100MB)。直接使用dd命令生成相应的文件即可:
[root@svr5 ~]# dd if=/dev/zero of=/var/ftp/pub/anon.tgz bs=1M count=100
… …
[root@svr5 ~]# dd if=/dev/zero of=~lisi/local.tgz bs=1M count=100
… …
[root@svr5 ~]# ls -lh /var/ftp/pub/anon.tgz ~lisi/local.tgz //确认结果
-rw-r–r--. 1 root root 100M 1月 15 15:12 /home/lisi/local.tgz
-rw-r–r--. 1 root root 100M 1月 15 15:12 /var/ftp/pub/anon.tgz
3)使用wget命令下载上述文件,观察稳定以后的速度
匿名访问下载测试文件anon.tgz,速度稳定在50KB/s左右:
[root@pc205 ~]# wget ftp://192.168.4.5/pub/anon.tgz
–2015-01-15 15:14:52-- ftp://192.168.4.5/pub/anon.tgz
=> “anon.tgz”
正在连接 192.168.4.5:21… 已连接。
正在以 anonymous 登录 … 登录成功!
==> SYST … 完成。 ==> PWD … 完成。
==> TYPE I … 完成。 ==> CWD (1) /pub … 完成。
==> SIZE anon.tgz … 104857600
==> PASV … 完成。 ==> RETR anon.tgz … 完成。
长度:104857600 (100M) (非正式数据)

… …
0% [ ] 601,408 49.9K/s eta(英国中部时间) 34m 55s
!!! 必要时,可按Ctrl+c键中止下载,不需要等全部下完
以用户lisi访问下载测试文件local.tgz,速度稳定在500KB/s左右:
[root@pc205 ~]# wget ftp://lisi:1234567@192.168.4.5/local.tgz
–2015-01-15 15:21:29-- ftp://lisi:password@192.168.4.5/local.tgz
=> “local.tgz”
正在连接 192.168.4.5:21… 已连接。
正在以 lisi 登录 … 登录成功!
==> SYST … 完成。 ==> PWD … 完成。
==> TYPE I … 完成。 ==> 不需要 CWD。
==> SIZE local.tgz … 104857600
==> PASV … 完成。 ==> RETR local.tgz … 完成。
长度:104857600 (100M) (非正式数据)

… …
0% [ ] 868,352 503K/s eta(英国中部时间) 34m 55s
4)取消vsftpd服务的速度限制,再次测试下载效果
修改vsftpd.conf配置文件,将此前添加的限制下载速度的配置语句注释(或删除),并重载服务:
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
… …
#anon_max_rate=50000
#local_max_rate=500000

[root@svr5 ~]# service vsftpd reload
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
再次使用wget下载测试文件anon.tgz,会发现速度已不受服务端限制,而是取决于实际的网络带宽:
[root@pc205 ~]# wget ftp://192.168.4.5/pub/anon.tgz
–2015-01-15 15:29:08-- ftp://192.168.4.5/pub/anon.tgz
=> “anon.tgz”
正在连接 192.168.4.5:21… 已连接。
正在以 anonymous 登录 … 登录成功!
==> SYST … 完成。 ==> PWD … 完成。
==> TYPE I … 完成。 ==> CWD (1) /pub … 完成。
==> SIZE anon.tgz … 104857600
==> PASV … 完成。 ==> RETR anon.tgz … 完成。
长度:104857600 (100M) (非正式数据)

86% [> ] 90,344,032 28.2M/s eta(英国中部时100%[===================================>] 104,857,600 31.8M/s in 3.1s

2015-01-15 15:29:12 (31.8 MB/s) - “anon.tgz” 已保存 [104857600]

Linux FTP用户设置与宽带限制相关推荐

  1. linux ftp用户指定多个目录,linux ftp服务器下用户限制目录的方法

    我们使用服务器都要站在安全方面进行考虑,有必要将ftp服务下的用户限制在适当的范围内,那么linux ftp服务器下用户限制目录的方法有哪些呢?一起跟着爱站技术频道小编的步伐来了解一下吧! linux ...

  2. linux备份用户设置,Linux配置备份

    基础配置篇 1.修改软件源 2.解决中文乱码 gnome2下 gconf-editor apps->gedit-2->preferences->encodings 中的auto-de ...

  3. Linux ftp账号设置

    项目中碰到ftp用户无法进行ftpw文件上传 1.先创建账号 2.在vsftpd.conf配置文件中修改配置 chroot_local_user=YES chroot_list_enable=NO p ...

  4. linux ftp 用户及目录权限设置,【linux】FTP添加用户,设置权限和目录

    一.目的,新建一个用户 test2,登录ftp,它只有自己的主目录权限,其他同级和上级目录没有权限 二.ftp安装.配置 yum -y install vsftpd //通过yum来安装vsftpd ...

  5. linux ftp 不能上传,linux ftp用户没法上传。

    write_enable=YES //是否对登录用户开启写权限.属全局性设置.默认NO local_enable=YES //是否允许本地用户登录FTP服务器.默认为NO anonymous_enab ...

  6. LINUX FTP用户的创建

    先添加个用户 adduser breezexu 设置该用户的密码 passwd breezexu 回车 输入密码 输入确定密码 (密码在这里不显示,直接输入即可) 设置好用户后,找到/etc/pass ...

  7. 宝塔面板linux ftp怎么设置权限,宝塔面板创建FTP账号的几种方法(根据需要安装FTP功能)...

    老蒋在前面文章中也有提到,如果我们使用宝塔面板建站的话,且这台服务器都是我们一个人使用.我不建议安装FTP组件,给每个站创建FTP账户.其理由尽量少安装一个软件功能对于服务器的负载和安全也是有一定的保 ...

  8. Linux给用户设置全局变量

    # vi /home/用户名/.bash_profile 在export PATH下面加入一行 alias 自定义名=软件安装包bin下的可执行文件 如: alias php=安装包路径/bin/ph ...

  9. Linux中如何添加/删除FTP用户并设置权限

    在linux中添加ftp用户,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被设置用户名为test.被限制路径为/home/test 2.创建建用户:在root用户下: userad ...

最新文章

  1. AI工程师面试屡被拒:比贫穷脱发更恐怖的是,2020年你仍不会……
  2. boost::intrusive::avl_set用法的测试程序
  3. WebQQ hash加密算法PHP版
  4. NEFU394 素数价值
  5. Oracle数据库的测试用户Scott的密码为什么是Tiger?
  6. 深入剖析阿里云推荐引擎——新架构,新体验
  7. url中传递对象参数_在URL参数中传递复杂对象
  8. 华三ospf联动bfd_OSPF、BGP、ISIS的路由收敛时间、缩减路由收敛时间的措施有哪些...
  9. 将一个对象相同的属性(不区分大小写)赋值给一个新对象 DataTable的一个简单的扩展...
  10. Ubuntu Vi编辑器中文乱码问题的解决
  11. 科研党 篇一:完成一篇SCI论文必备的20+工具
  12. UE5 预览版载具模板工程车不能移动的问题
  13. 腾讯云云服务器IE浏览器初始使用常见问题
  14. python量化交易是什么意思_量化交易通俗解释是什么?
  15. Minecraft 我的世界 .minecraft下的各个文件夹的用处
  16. 【C++】有趣的数字
  17. html5语音听写流式,iOS 讯飞语音听写(流式版)
  18. 青岛经济职业学校计算机老师,青春不散场!青岛经济职业学校举办2020届毕业典礼...
  19. 图片转成pdf格式怎么转?三个好用的方法教给你
  20. 转:怎么判断自己在不在一家好公司?

热门文章

  1. “数字化”主导大型商超生死局|钛媒体深度
  2. UE4中使用第三方库Ⅱ
  3. VS2015下解决:无法解析的外部符号 __imp___vsnprintf 及__iob_func
  4. java学习日记-进阶三
  5. 剑三重制版怎么同步插件_剑网三重制版茗伊插件怎么导入 | 手游网游页游攻略大全...
  6. 【C++】一个简单的模拟实现鼠标脚本精灵
  7. Android音频开发之OpenSL ES
  8. 评论:后乔布斯时代 苹果不能再单枪匹马
  9. 北风:如何自学营销策划和网络营销?
  10. 5G专网技术解决方案和建设策略