日常FTP服务标准建设

背景:

生产环境经常会有传输导数情况存在,应生产人员要求部署相关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软件包

[root@bigdata1 ~]# yum -y install vsftpd

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

[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的文件

[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的文件,内容随意。

[root@bigdata1 pub]# useradd list

[root@bigdata1 pub]# echo 123456 |passwd --stdin list

更改用户 list 的密码 。

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

[root@bigdata1 pub]# su - list

[list@bigdata1 ~]$ touch b.txt

[list@bigdata1 ~]$ echo '123456' >b.txt

[list@bigdata1 ~]$ 登出

5、测试匿名用户登陆

[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测试

[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机器下载和查看本机所有有权限文件

[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配置文件,启用禁锢本地用户的设置,建议在配置文件末尾修改,不去修改配置文件中注释。

chroot_local_user=YES

allow_writeable_chroot=YES

测试

[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黑名单

[root@bigdata1 pub]# vi /etc/vsftpd/ftpusers

测试mike登陆失败

[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可以登陆。

[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服务配置,在末尾添加并发限制并重载服务

[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 .. ..”的报错提示,连接失败

[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服务配置,在末尾添加速度限制,并重载服务

[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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值