前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >标准生产ftp建设

标准生产ftp建设

原创
作者头像
Bob hadoop
修改2021-01-04 17:56:30
5320
修改2021-01-04 17:56:30
举报
文章被收录于专栏:日常杂记日常杂记

背景:

生产环境经常会有传输导数情况存在,应生产人员要求部署相关ftp服务。

需要访问FTP服务端提供的资源时,可以使用专门的FTP客户端/管理工具(FTP命令程序、Filezilla图形工具),也可以使用Web浏览器、下载工具(比如wget)等支持FTP协议的通用软件。

定位匿名访问FTP资源的地址形式如下:

ftp://服务器地址/,对应服务器上的 /var/ftp/ 目录

ftp://服务器地址/path/to/file,对应服务器上的 /var/ftp/path/to/file 文件

对于要求登录验证才能访问的FTP资源,可以在地址中指定用户名、密码信息:

ftp://user:pass@服务器地址/,对应服务器上的用户家目录 ~user/

ftp://user:pass@服务器地址/path/to/file,对应服务器上的 ~user/path/to/file 文件

环境:

两台物理机IP为192.168.1.3与192.168.1.5

步骤:

1、使用yum安装vsftpd软件包

代码语言:javascript
复制
[root@bigdata1 ~]# yum -y install vsftpd

2、启用vsftpd服务,并设为开机自动运行

代码语言:javascript
复制
[root@bigdata1 ~]# service vsftpd restart;chkconfig vsftpd on
Redirecting to /bin/systemctl restart  vsftpd.service
注意:正在将请求转发到“systemctl enable vsftpd.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@bigdata1 ~]# netstat -anptu |grep vsftpd
tcp6       0      0 :::21                   :::*                    LISTEN      1288/vsftpd 

3、为ftp访问建立测试文件

在匿名FTP起始目录/var/ftp/下默认有一个pub/子目录(用来提供开放资源),在此目录下建立一个名为anon.txt的文件

代码语言:javascript
复制
[root@bigdata1 ~]# cd  /var/ftp/pub/
[root@bigdata1 pub]# echo '1111111'>a.txt 
[root@bigdata1 pub]# cat a.txt 

1111111

4、新建用户list并设置好密码,此用户即可用做ftp用户使用,在list家目录下建立一个名为list.txt的文件,内容随意。

代码语言:javascript
复制
[root@bigdata1 pub]# useradd list
[root@bigdata1 pub]# echo 123456 |passwd --stdin list

更改用户 list 的密码 。

passwd:所有的身份验证令牌已经成功更新。

代码语言:javascript
复制
[root@bigdata1 pub]# su - list
[list@bigdata1 ~]$ touch b.txt
[list@bigdata1 ~]$ echo '123456' >b.txt 
[list@bigdata1 ~]$ 登出

5、测试匿名用户登陆

代码语言:javascript
复制
[root@bigdata3 yum.repos.d]# ftp 192.168.1.3
Connected to 192.168.1.3 (192.168.1.3).
220 (vsFTPd 3.0.2)
Name (192.168.1.3:root): ftp        匿名用户ftp
331 Please specify the password.
Password:                          密码随意按键然后回车
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,1,3,240,202).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0              18 Sep 02 13:44 pub
226 Directory send OK.
ftp> 

6、用户list测试

代码语言:javascript
复制
[root@bigdata3 yum.repos.d]# ftp 192.168.1.3
Connected to 192.168.1.3 (192.168.1.3).
220 (vsFTPd 3.0.2)
Name (192.168.1.3:root): list
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,1,3,70,152).
150 Here comes the directory listing.
-rw-rw-r--    1 1001     1001            0 Sep 02 13:59 b.txt
226 Directory send OK.

衍生问题解决

对于匿名用户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则此列表作为白名单使用。

不安全隐患点01:

用户list可登陆ftp机器下载和查看本机所有有权限文件

代码语言:javascript
复制
 [root@bigdata3 yum.repos.d]# ftp 192.168.1.3
Connected to 192.168.1.3 (192.168.1.3).
220 (vsFTPd 3.0.2)
Name (192.168.1.3:root): list
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,1,3,93,167).
150 Here comes the directory listing.
-rw-rw-r--    1 1001     1001            0 Sep 02 13:59 b.txt
226 Directory send OK.
ftp> cd /               切换到ftp-server的机器/目录下
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (192,168,1,3,249,224).
150 Here comes the directory listing.
lrwxrwxrwx    1 0        0               7 Aug 16 14:46 bin -> usr/bin
dr-xr-xr-x    4 0        0            4096 Aug 16 14:50 boot
drwxr-xr-x   20 0        0            3160 Sep 02 09:54 dev
drwxr-xr-x   77 0        0            8192 Sep 02 13:52 etc
drwxr-xr-x    4 0        0              30 Sep 02 13:52 home
lrwxrwxrwx    1 0        0               7 Aug 16 14:46 lib -> usr/lib
lrwxrwxrwx    1 0        0               9 Aug 16 14:46 lib64 -> usr/lib64
drwxr-xr-x    2 0        0               6 Aug 12  2015 media
drwxr-xr-x    2 0        0               6 Aug 12  2015 mnt
drwxr-xr-x    3 0        0              25 Aug 16 18:30 opt
dr-xr-xr-x  355 0        0               0 Sep 02 09:54 proc
dr-xr-x---    4 0        0            4096 Aug 16 18:31 root
drwxr-xr-x   21 0        0             600 Sep 02 10:02 run
lrwxrwxrwx    1 0        0               8 Aug 16 14:46 sbin -> usr/sbin
drwxr-xr-x    2 0        0               6 Aug 12  2015 srv
dr-xr-xr-x   13 0        0               0 Sep 02 09:54 sys
drwxrwxrwt    7 0        0            4096 Sep 02 10:35 tmp
drwxr-xr-x   13 0        0            4096 Aug 16 14:46 usr
drwxr-xr-x   20 0        0            4096 Sep 02 10:02 var
dr-xr-xr-x    8 0        0            2048 Dec 09  2015 yum
226 Directory send OK.

修改vsftpd.conf配置文件,启用禁锢本地用户的设置,建议在配置文件末尾修改,不去修改配置文件中注释。

代码语言:javascript
复制
chroot_local_user=YES
allow_writeable_chroot=YES

测试

代码语言:javascript
复制
[root@bigdata3 ~]# ftp 192.168.1.3     连接ftp
Connected to 192.168.1.3 (192.168.1.3).
220 (vsFTPd 3.0.2)
Name (192.168.1.3:root): list     用户list
331 Please specify the password.
Password:            密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls         查看当前目录文件,为list家目录
227 Entering Passive Mode (192,168,1,3,121,213).
150 Here comes the directory listing.
-rw-rw-r--    1 1001     1001            0 Sep 02 13:59 b.txt
226 Directory send OK.
ftp> cd /            变换目录
250 Directory successfully changed.
ftp> ls              查看目录仍然为用户家目录,禁锢生效
227 Entering Passive Mode (192,168,1,3,32,249).
150 Here comes the directory listing.
-rw-rw-r--    1 1001     1001            0 Sep 02 13:59 b.txt
226 Directory send OK.

使用FTP黑白名单:

1、测试FTP黑名单文件/etc/vsftpd/ftpusers

添加一个用户mike,并设好密码,并将mike加入到FTP黑名单

代码语言:javascript
复制
[root@bigdata1 pub]# vi /etc/vsftpd/ftpusers

测试mike登陆失败

代码语言:javascript
复制
[root@bigdata3 ~]# ftp 192.168.1.3
Connected to 192.168.1.3 (192.168.1.3).
220 (vsFTPd 3.0.2)
Name (192.168.1.3:root): mike
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.

2、测试FTP白名单文件/etc/vsftpd/user_list

修改vsftpd服务配置,确认userlist_enable=YES,并在其下方添加一行新的配置语句userlist_deny=NO,然后重载服务

测试:

新增hadoop用户放置在白名单中进行测试,只有加入白名单的hadoop可以登陆。

代码语言:javascript
复制
[root@bigdata3 ~]# ftp 192.168.1.3
Connected to 192.168.1.3 (192.168.1.3).
220 (vsFTPd 3.0.2)
Name (192.168.1.3:root): hadoop
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,1,3,62,50).
150 Here comes the directory listing.
226 Directory send OK.
ftp> 221 Goodbye.
[root@bigdata3 ~]# ftp 192.168.1.3
Connected to 192.168.1.3 (192.168.1.3).
220 (vsFTPd 3.0.2)
Name (192.168.1.3:root): list
530 Permission denied.
Login failed.
ftp> 221 Goodbye.
[root@bigdata3 ~]# ftp 192.168.1.3
Connected to 192.168.1.3 (192.168.1.3).
220 (vsFTPd 3.0.2)
Name (192.168.1.3:root): mike
530 Permission denied.
Login failed.

当用户即在白名单又在黑名单中用户虽然被接受,但在输入密码后仍然被拒绝。

FTP并发以及带宽限制

关于vsftpd服务器的并发及带宽限制,主要用到以下配置参数

max_clients:限制并发的客户端个数

max_per_ip:限制每个客户机IP的并发连接数

anon_max_rate:匿名最大速度(字节/秒)

local_max_rate:验证用户最大速率(字节/秒)

限制并发连接数

修改vsftpd服务配置,在末尾添加并发限制并重载服务

代码语言:javascript
复制
[root@bigdata3 ~] vim /etc/vsftpd/vsftpd.conf
max_clients=100
max_per_ip=2

访问vsftpd服务器时,只要客户端不主动断开连接,且闲置不超过300秒(默认),vsftpd服务器都会保留此连接。因此可以开多个命令终端同时登入此FTP服务器,以测试并发限制效果。

匿名登入FTP服务器且不退出,前两次连接都是成功的,当第三次(超过2)连接时,会出现“There are too many connections .. ..”的报错提示,连接失败

代码语言:javascript
复制
[root@bigdata3 ~]# ftp 192.168.1.3
Connected to 192.168.1.3 (192.168.1.3).
421 There are too many connections from your internet address.      //连接数超限
ftp> pwd
Not connected.                                  //未连接成功
ftp> quit

限制FTP传输速度

修改vsftpd服务配置,在末尾添加速度限制,并重载服务

代码语言:javascript
复制
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
.. ..
anon_max_rate=50000
local_max_rate=500000
[root@svr5 ~]# service vsftpd reload
关闭 vsftpd:                                              [确定]
为 vsftpd 启动 vsftpd:                                    [确定]

匿名登陆问题

vi /etc/vsftpd/vsftpd.conf

修改其中参数

anonymous_enable=YES 将其改成NO

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档