構(gòu)建FTP文件傳輸服務(wù)器

FTP服務(wù)概述

簡(jiǎn)單FTP構(gòu)建及訪問(wèn)

VSFTP服務(wù)基礎(chǔ)

用戶(hù)禁錮、黑白名單

FTP并發(fā)及帶寬限制

一、FTP服務(wù)概述


FTP連接及傳輸模式

控制連接:TCP 21 用于發(fā)送FTP命令信息

數(shù)據(jù)連接:TCP 20 用于上傳、下載數(shù)據(jù)

數(shù)據(jù)連接的建立類(lèi)型

主動(dòng)模式:服務(wù)端從端口主動(dòng)向客戶(hù)端發(fā)起連接

被動(dòng)模式:服務(wù)器在指定范圍內(nèi)某個(gè)端口被動(dòng)等待客戶(hù)端連接

FTP傳輸模式

文本模式:ASCLL模式 以文本序列傳輸數(shù)據(jù)

二進(jìn)制模式:Binary模式 以二進(jìn)制序列傳輸數(shù)據(jù)

FTP用戶(hù)類(lèi)型

匿名用戶(hù):anonymous或ftp

本地用戶(hù):賬號(hào)、密碼等信息保存在passwd、shadow文件中

虛擬用戶(hù):使用獨(dú)立的賬號(hào)密碼數(shù)據(jù)文件

FTP服務(wù)器軟件種類(lèi)

IIS、Serv-U、wu-ftpd、Proftpd、vsftpd(Very Secure FTP Daemon)

FTP客戶(hù)端軟件種類(lèi)

CuteFTP、FlashFXP、LeapFTP、Filezilla、gftp、kuftp

二、VSFTP服務(wù)基礎(chǔ)


vsftpd軟件包

官方站點(diǎn):http://vsftpd.beasts.org

主程序:/usr/sbin/vsftpd

服務(wù)名:vsftpd

用戶(hù)控制列表文件:/etc/vsftpd/ftpusers? 黑名單? /etc/vsftpd/user_list 用戶(hù)列表

主配置文件:/etc/vsftpd/vsftpd.conf

常用的全局配置項(xiàng)

listen=YES:是否以獨(dú)立運(yùn)行的方式監(jiān)聽(tīng)服務(wù)

listen_address=192.168.4.1:設(shè)置監(jiān)聽(tīng)的IP地址

listen_port=21:設(shè)置監(jiān)聽(tīng)FTP服務(wù)的端口號(hào)

write_enable=YES:是否啟用寫(xiě)入權(quán)限

download_enable=Y(jié)ES:是否允許下載文件

userlist_enable=YES:是否啟用user_list列表文件

userlist_deny=YES:是否禁用user_list中的用戶(hù)

max_clients=0:限制并發(fā)客戶(hù)端連接數(shù)

max_per_ip=0:限制同一IP地址的并發(fā)連接數(shù)

常用的匿名FTP配置項(xiàng)

anonymous_enable=YES:?jiǎn)⒂媚涿L問(wèn)

anon_umask=022:匿名用戶(hù)所上傳文件的權(quán)限掩碼

anon_root=/var/ftp:匿名用戶(hù)的FTP根目錄

anon_upload_enable=YES:允許上傳文件

anon_mkdir_write_enable=YES:允許創(chuàng)建目錄

anon_other_write_enable=YES:開(kāi)放其他寫(xiě)入權(quán)

anon_max_rate=0:限制最大傳輸速率(字節(jié)/秒)

常用的本地用戶(hù)FTP配置項(xiàng)

local_enable=YES:是否啟用本地系統(tǒng)用戶(hù)

local_umask=022:本地用戶(hù)所上傳文件的權(quán)限掩碼

local_root=/var/ftp:設(shè)置本地用戶(hù)的FTP根目錄

chroot_local_user=YES:是否將用戶(hù)禁錮在主目錄

local_max_rate=0:限制最大傳輸速率(字節(jié)/秒)

三、簡(jiǎn)單FTP構(gòu)建及訪問(wèn)


1.1 問(wèn)題

本案例要求先快速搭建好一臺(tái)FTP服務(wù)器,并創(chuàng)建相關(guān)測(cè)試文件:

建立下載測(cè)試文件 /var/ftp/pub/anon.txt

建立下載測(cè)試文件 ~lisi/lisi.txt

然后驗(yàn)證以不同方式從客戶(hù)機(jī)訪問(wèn)此FTP服務(wù)器:

從瀏覽器訪問(wèn),測(cè)試匿名/用戶(hù)登錄

以ftp命令訪問(wèn),分別測(cè)試匿名/用戶(hù)驗(yàn)證訪問(wèn)的下載和上傳操作

使用wget命令下載測(cè)試文件

1.2 方案

使用2臺(tái)RHEL6虛擬機(jī),其中一臺(tái)作為vsftpd服務(wù)器(192.168.4.5)、另外一臺(tái)作為測(cè)試用的Linux客戶(hù)機(jī)(192.168.4.205),如圖-1所示。

圖-1

在RHEL6系統(tǒng)中,vsftpd軟件包默認(rèn)已提供FTP服務(wù)的基本配置,因此只要裝好vsftpd包并啟動(dòng)對(duì)應(yīng)的服務(wù),一臺(tái)FTP服務(wù)器就搭建好了。默認(rèn)的vsftpd服務(wù)具備一臺(tái)標(biāo)準(zhǔn)FTP服務(wù)器的能力,服務(wù)功能和特點(diǎn)如表-1所示。

表-1 默認(rèn)vsftpd配置的功能和特點(diǎn)

需要訪問(wèn)FTP服務(wù)端提供的資源時(shí),可以使用專(zhuān)門(mén)的FTP客戶(hù)端/管理工具(FTP命令程序、Filezilla圖形工具),也可以使用Web瀏覽器、下載工具(比如wget)等支持FTP協(xié)議的通用軟件。

定位匿名訪問(wèn)FTP資源的地址形式如下:

ftp://服務(wù)器地址/,對(duì)應(yīng)服務(wù)器上的 /var/ftp/ 目錄

ftp://服務(wù)器地址/path/to/file,對(duì)應(yīng)服務(wù)器上的 /var/ftp/path/to/file 文件

對(duì)于要求登錄驗(yàn)證才能訪問(wèn)的FTP資源,可以在地址中指定用戶(hù)名、密碼信息:

ftp://user:pass@服務(wù)器地址/,對(duì)應(yīng)服務(wù)器上的用戶(hù)家目錄 ~user/

ftp://user:pass@服務(wù)器地址/path/to/file,對(duì)應(yīng)服務(wù)器上的 ~user/path/to/file 文件

1.3 步驟

實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。

步驟一:構(gòu)建vsftpd服務(wù)器

1)使用yum安裝vsftpd軟件包

[root@svr5~]# yum-y? install? vsftpd

....

[root@svr5~]# rpm-q? vsftpd

vsftpd-2.2.2-11.el6_4.1.x86_64

2)啟用vsftpd服務(wù),并設(shè)為開(kāi)機(jī)自動(dòng)運(yùn)行

[root@svr5~]# service? vsftpd? restart;chkconfig? vsftpd? on

關(guān)閉 vsftpd:[失敗]

為 vsftpd 啟動(dòng) vsftpd:[確定]

vsftpd服務(wù)默認(rèn)通過(guò)TCP 21端口監(jiān)聽(tīng)客戶(hù)端請(qǐng)求:

[root@svr5~]# netstat-anptu|grep vsftpd

tcp000.0.0.0:210.0.0.0:*LISTEN64869/vsftpd

3)為FTP訪問(wèn)建立測(cè)試文件

在匿名FTP起始目錄/var/ftp/下默認(rèn)有一個(gè)pub/子目錄(用來(lái)提供開(kāi)放資源),在此目錄下建立一個(gè)名為anon.txt的文件:

[root@svr5~]#cat/var/ftp/pub/anon.txt

Anonymous Test

新建用戶(hù)lisi并設(shè)好密碼(如1234567),此用戶(hù)即可作為FTP用戶(hù)使用,在lisi的家目錄下建立一個(gè)名為lisi.txt的文件,內(nèi)容隨意:

[root@svr5~]# useradd? lisi

[root@svr5~]# echo1234567|passwd--stdin? lisi

更改用戶(hù) lisi 的密碼 。

passwd: 所有的身份驗(yàn)證令牌已經(jīng)成功更新。

[root@svr5~]# vim~lisi/lisi.txt

Local User Test

步驟二:從客戶(hù)機(jī)訪問(wèn)FTP服務(wù)器

1)從Web瀏覽器訪問(wèn)FTP服務(wù)

以Firefox瀏覽器為例,只要在地址欄內(nèi)輸入 ftp://192.168.4.5,回車(chē)后即連接目標(biāo)主機(jī)192.168.4.5的FTP服務(wù),默認(rèn)以匿名的方式驗(yàn)證。若訪問(wèn)成功,將會(huì)以網(wǎng)頁(yè)形式列出FTP服務(wù)器上匿名FTP起始目錄下的資源,如圖-2所示。

圖-2

單擊相應(yīng)的超鏈接即可進(jìn)入指定的目錄,或者打開(kāi)/下載指定的文件,如圖-3所示。

圖-3

若要訪問(wèn)用戶(hù)驗(yàn)證的FTP資源,則需要指定正確的用戶(hù)信息即可。比如在地址欄內(nèi)輸入網(wǎng)址 ftp://lisi@192.168.4.5/ 或者 ftp://lisi:1234567@192.168.4.5/ 都能夠成功訪問(wèn)本例中的FTP服務(wù)器,瀏覽服(前者會(huì)彈窗驗(yàn)證密碼)務(wù)器上用戶(hù)lisi的家目錄,如圖-4所示。

圖-4

當(dāng)輸入的是帶遠(yuǎn)程文件路徑的完整FTP地址時(shí),比如 ftp://lisi:1234567@192.168.4.5/lisi.txt,則可以直接打開(kāi)目標(biāo)文件(對(duì)于瀏覽器不支持的文件類(lèi)型,會(huì)彈窗提示下載),如圖-5所示。

圖-5

2)使用ftp命令訪問(wèn)FTP服務(wù)

通常大多數(shù)Linux系統(tǒng)都自帶ftp工具,如果沒(méi)有也可以通過(guò)Yum手動(dòng)安裝。

[root@pc205~]# ftp

-bash:ftp:command not found

[root@pc205~]# yum-y? install? ftp

....

指定目標(biāo)服務(wù)器的地址作為參數(shù),ftp命令將會(huì)發(fā)起FTP連接,若成功連接則根據(jù)提示依次驗(yàn)證用戶(hù)名、密碼即可。對(duì)于匿名FTP訪問(wèn),使用ftp或anonymous作為用戶(hù)名,密碼任意;對(duì)于用戶(hù)驗(yàn)證的FTP訪問(wèn),應(yīng)以確切的用戶(hù)名和密碼驗(yàn)證。

匿名登錄FTP服務(wù)器,驗(yàn)證下載(允許)、上傳(拒絕)操作:

[root@pc205~]# ftp192.168.4.5//連接FTP服務(wù)器

Connected to192.168.4.5(192.168.4.5).

220(vsFTPd2.2.2)

Name(192.168.4.5:root):ftp//匿名用戶(hù) ftp

331Please specify the password.

Password://任意密碼,或直接回車(chē)

230Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>ls//查看FTP起始目錄

227Entering PassiveMode(192,168,4,5,63,132).

150Here comes the directory listing.

drwxr-xr-x2004096Jan1307:26pub

226Directory send OK.

ftp>cd pub//切換到pub子目錄

250Directory successfully changed.

ftp>ls

227Entering PassiveMode(192,168,4,5,121,122).

150Here comes the directory listing.

-rw-r--r--10015Jan1306:59anon.txt

226Directory send OK.

ftp>get anon.txt//測(cè)試下載文件

local:anon.txt remote:anon.txt

227Entering PassiveMode(192,168,4,5,127,108).

150Opening BINARY mode data connectionforanon.txt(15bytes).

226Transfer complete.//提示成功

15bytes receivedin3.9e-05secs(384.62Kbytes/sec)

ftp>put install.log//測(cè)試上傳文件

local:install.log remote:install.log

227Entering PassiveMode(192,168,4,5,86,164).

550Permission denied.//提示被拒絕

ftp>bye//bye斷開(kāi)FTP連接

221Goodbye.

[root@pc205~]# cat anon.txt//確認(rèn)下載結(jié)果

Anonymous Test

以用戶(hù)lisi登錄FTP服務(wù)器,驗(yàn)證下載(允許)、上傳(允許)操作:

[root@pc205~]# ftp192.168.4.5//連接FTP服務(wù)器

Connected to192.168.4.5(192.168.4.5).

220(vsFTPd2.2.2)

Name(192.168.4.5:root):lisi//服務(wù)器本地用戶(hù) lisi

331Please specify the password.

Password://輸入正確口令

230Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>ls//查看起始目錄

227Entering PassiveMode(192,168,4,5,250,165).

150Here comes the directory listing.

-rw-r--r--10016Jan1307:01lisi.txt

226Directory send OK.

ftp>get lisi.txt//測(cè)試下載文件

local:lisi.txt remote:lisi.txt

227Entering PassiveMode(192,168,4,5,171,31).

150Opening BINARY mode data connectionforlisi.txt(16bytes).

226Transfer complete.//提示成功

16bytes receivedin4.8e-05secs(333.33Kbytes/sec)

ftp>put install.log//測(cè)試上傳文件

local:install.log remote:install.log

227Entering PassiveMode(192,168,4,5,83,26).

150Ok to send data.

226Transfer complete.//提示成功

47884bytes sentin0.101secs(473.44Kbytes/sec)

ftp>ls//確認(rèn)上傳結(jié)果

227Entering PassiveMode(192,168,4,5,29,68).

150Here comes the directory listing.

-rw-r--r--150750847884Jan1308:01install.log

-rw-r--r--10016Jan1307:01lisi.txt

226Directory send OK.

ftp>quit//quit也可斷開(kāi)FTP連接

221Goodbye.

[root@pc205~]# cat lisi.txt//確認(rèn)下載結(jié)果

Local User Test

3)使用wget命令工具下載FTP資源

下載服務(wù)器上的 /var/ftp/pub/anon.txt 文件:

[root@pc205~]# rm-rf? anon.txt//刪除原有文件,避免干擾

[root@pc205~]# wget? ftp://192.168.4.5/pub/anon.txt? ? ? ? ? ? //匿名下載

--2015-01-1316:10:31--ftp://192.168.4.5/pub/anon.txt

=>“anon.txt”

正在連接192.168.4.5:21...已連接。

正在以 anonymous 登錄...登錄成功!

==>SYST...完成。==>PWD...完成。

==>TYPE I...完成。==>CWD(1)/pub...完成。

==>SIZE anon.txt...15

==>PASV...完成。==>RETR anon.txt...完成。

長(zhǎng)度:15(非正式數(shù)據(jù))

100%[=============================================================>]15--.-K/sin0s

2015-01-1316:10:31(1.13MB/s)-“anon.txt” 已保存[15]

[root@pc205~]# cat? anon.txt//確認(rèn)下載結(jié)果

Anonymous Test

下載服務(wù)器上的 ~lisi/lisi.txt 文件:

[root@pc205~]# rm-rf? lisi.txt//刪除原有文件,避免干擾

[root@pc205~]# wget? ftp://lisi:1234567@192.168.4.5/lisi.txt? ? ? //用戶(hù)驗(yàn)證下載

--2015-01-1316:12:01--ftp://lisi:*password*@192.168.4.5/lisi.txt

=>“l(fā)isi.txt”

正在連接192.168.4.5:21...已連接。

正在以 lisi 登錄...登錄成功!

==>SYST...完成。==>PWD...完成。

==>TYPE I...完成。==>不需要 CWD。

==>SIZE lisi.txt...16

==>PASV...完成。==>RETR lisi.txt...完成。

長(zhǎng)度:16(非正式數(shù)據(jù))

100%[=============================================================>]16--.-K/sin0.001s

2015-01-1316:12:01(21.4KB/s)-“l(fā)isi.txt” 已保存[16]

[root@pc205~]# cat lisi.txt//確認(rèn)下載結(jié)果

Local User Test

四、用戶(hù)禁錮、黑白名單


2.1 問(wèn)題

沿用練習(xí)一,通過(guò)調(diào)整FTP服務(wù)端配置,實(shí)現(xiàn)以下目標(biāo):

將FTP用戶(hù)禁錮在各自的宿主目錄下,阻止其切換到其他的文件夾

通過(guò)/etc/vsftpd/ftpusers黑名單阻止用戶(hù) mike 訪問(wèn)

將/etc/vsftpd/user_list文件設(shè)為白名單,允許用戶(hù) lisi、mike 訪問(wèn)

分別測(cè)試匿名訪問(wèn)、以用戶(hù)lisi和mike訪問(wèn)的結(jié)果

將 ftp 加入白名單,再測(cè)試匿名訪問(wèn)

2.2 方案

對(duì)于匿名用戶(hù)ftp來(lái)說(shuō),默認(rèn)已經(jīng)啟用禁錮(僅限于起始目錄/var/ftp);而對(duì)FTP本地用戶(hù)來(lái)說(shuō),默認(rèn)并沒(méi)有禁錮(不僅可以訪問(wèn)宿主目錄,還可以跳轉(zhuǎn)到其他目錄),存在一定安全隱患。若要禁錮本地用戶(hù),只需設(shè)置 chroot_local_user = YES即可。

vsftpd服務(wù)提供了兩個(gè)用戶(hù)列表文件,其中 /etc/vsftpd/ftpusers 作為默認(rèn)的黑名單使用,列在此文件內(nèi)的用戶(hù)將無(wú)法登入FTP。

而另一個(gè)文件 /etc/vsftpd/user_list只是一個(gè)用戶(hù)名列表,根據(jù)配置參數(shù) userlist_enable 的值是YES(默認(rèn))還是NO來(lái)決定是否啟用此列表。一旦啟用此列表文件以后,如果配置參數(shù) userlist_deny的值是YES(默認(rèn))則此列表為黑名單(拒絕指定的用戶(hù)),如果是NO則此列表作為白名單使用。

2.3 步驟

實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。

步驟一:禁錮FTP本地用戶(hù)賬號(hào)

1)驗(yàn)證未啟用禁錮前的風(fēng)險(xiǎn)

以普通用戶(hù)lisi登入后,起始目錄位于/home/lisi/,但可以通過(guò)cd命令切換到服務(wù)器上的其他目錄(比如/etc/),并下載有讀取權(quán)限的文件(比如passwd),可能導(dǎo)致未授權(quán)的信息泄露。

[root@pc205~]# ftp192.168.4.5//連接FTP服務(wù)器

Connected to192.168.4.5(192.168.4.5).

220(vsFTPd2.2.2)

Name(192.168.4.5:root):lisi//以FTP本地用戶(hù)登錄

331Please specify the password.

Password://驗(yàn)證口令

230Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>pwd//查看起始目錄

257"/home/lisi"http://位于用戶(hù)lisi的家目錄

ftp>cd/etc///切換到其他目錄

250Directory successfully changed.

ftp>get passwd//下載/etc/目錄下的passwd文件

local:passwd remote:passwd

227Entering PassiveMode(192,168,4,5,64,118).

150Opening BINARY mode data connectionforpasswd(2122bytes).

226Transfer complete.

2122bytes receivedin4.5e-05secs(47155.56Kbytes/sec)

ftp>quit//斷開(kāi)連接

221Goodbye.

[root@pc205~]# head-5passwd//確認(rèn)下載后的文件

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

2)修改vsftpd.conf配置文件,啟用禁錮本地用戶(hù)的設(shè)置

[root@svr5~]#vim/etc/vsftpd/vsftpd.conf

....

chroot_local_user=YES//添加禁錮配置

[root@svr5~]# service? vsftpd reload

關(guān)閉 vsftpd:[確定]

為 vsftpd 啟動(dòng) vsftpd:[確定]

3)驗(yàn)證啟用禁錮后的效果

再次以用戶(hù)lisi登入FTP服務(wù)器,會(huì)發(fā)現(xiàn)起始目錄(/home/lisi)已經(jīng)被視為用戶(hù)FTP會(huì)話的根目錄,無(wú)法切換到/etc/等其他目錄。

[root@pc205~]# ftp192.168.4.5//連接FTP服務(wù)器

Connected to192.168.4.5(192.168.4.5).

220(vsFTPd2.2.2)

Name(192.168.4.5:root):lisi//以FTP本地用戶(hù)登錄

331Please specify the password.

Password://驗(yàn)證口令

230Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>pwd//查看起始目錄

257"/"http://已經(jīng)位于FTP根目錄

ftp>ls//實(shí)際還是在lisi的家目錄

227Entering PassiveMode(192,168,4,5,239,27).

150Here comes the directory listing.

-rw-r--r--150750847884Jan1308:01install.log

-rw-r--r--10016Jan1307:01lisi.txt

226Directory send OK.

ftp>cd/etc//嘗試切換到其他目錄失敗

550Failed to change directory.

ftp>quit//斷開(kāi)連接

221Goodbye.

步驟二:使用FTP黑白名單

1)測(cè)試FTP黑名單文件/etc/vsftpd/ftpusers

添加一個(gè)用戶(hù)mike,并設(shè)好密碼:

[root@svr5~]# useradd? mike

[root@svr5~]# echo1234567|passwd--stdin? mike

更改用戶(hù) mike 的密碼 。

passwd: 所有的身份驗(yàn)證令牌已經(jīng)成功更新。

將用戶(hù)mike加入FTP黑名單:

[root@svr5~]#vim/etc/vsftpd/ftpusers

....

mike//添加到文件末尾,不要有多余空格

從客戶(hù)機(jī)訪問(wèn)此FTP,嘗試以mike登錄時(shí)將會(huì)失敗:

[root@pc205~]# ftp192.168.4.5//連接FTP服務(wù)器

Connected to192.168.4.5(192.168.4.5).

220(vsFTPd2.2.2)

Name(192.168.4.5:root):mike//嘗試以用戶(hù)mike驗(yàn)證

331Please specify the password.

Password://輸入正確口令

530Login incorrect.

Login failed.//因在黑名單內(nèi),此用戶(hù)被拒絕登錄

ftp>quit//斷開(kāi)連接

221Goodbye.

2)將用戶(hù)列表/etc/vsftpd/user_list作為FTP白名單

修改vsftpd服務(wù)配置,確認(rèn)userlist_enable=YES,并在其下方添加一行新的配置語(yǔ)句userlist_deny=NO,然后重載服務(wù):

[root@svr5~]#vim/etc/vsftpd/vsftpd.conf

....

userlist_enable=YES

userlist_deny=NO//僅允許列表中的用戶(hù)

[root@svr5~]# service? vsftpd? reload

關(guān)閉 vsftpd:[確定]

為 vsftpd 啟動(dòng) vsftpd:[確定]

然后打開(kāi)文件 /etc/vsftpd/user_list,清空原有記錄,添加用戶(hù)lisi、mike:

[root@svr5~]#vim/etc/vsftpd/user_list//不要有多余空格

lisi

mike

3)測(cè)試FTP白名單限制效果

以匿名用戶(hù)ftp訪問(wèn)FTP服務(wù)器時(shí),因不在白名單中,登錄將會(huì)被拒絕:

[root@pc205~]# ftp192.168.4.5

Connected to192.168.4.5(192.168.4.5).

220(vsFTPd2.2.2)

Name(192.168.4.5:root):ftp//匿名登錄

530Permission denied.//用戶(hù)ftp不在白名單內(nèi),不接受驗(yàn)證

Login failed.

ftp>quit

221Goodbye.

以用戶(hù)lisi訪問(wèn)FTP服務(wù)器時(shí),此用戶(hù)在白名單中且不在ftpusers黑名單中,因此是可以正常登錄的:

[root@pc205~]# ftp192.168.4.5

Connected to192.168.4.5(192.168.4.5).

220(vsFTPd2.2.2)

Name(192.168.4.5:root):lisi//以用戶(hù)lisi登錄

331Please specify the password.

Password://輸入正確口令

230Login successful.//登入成功

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>quit

221Goodbye.

以用戶(hù)mike訪問(wèn)FTP服務(wù)器時(shí),此用戶(hù)雖然在白名單中,但同時(shí)也在ftpuser黑名單中,因此盡管接受了用戶(hù)名,但在提交密碼后會(huì)被拒絕:

[root@pc205~]# ftp192.168.4.5

Connected to192.168.4.5(192.168.4.5).

220(vsFTPd2.2.2)

Name(192.168.4.5:root):mike//以用戶(hù)mike登錄

331Please specify the password.

Password://輸入正確口令

530Login incorrect.

Login failed.//登入失敗

ftp>quit

221Goodbye.

修改vsftpd服務(wù)器的白名單文件,將匿名用戶(hù)ftp、anonymous加入:

[root@svr5~]#vim/etc/vsftpd/user_list//不要有多余空格

lisi

mike

ftp

anonymous

再次從客戶(hù)端匿名訪問(wèn)FTP服務(wù)器,將可以成功登入:

[root@pc205~]# ftp192.168.4.5

Connected to192.168.4.5(192.168.4.5).

220(vsFTPd2.2.2)

Name(192.168.4.5:root):ftp//匿名登錄

331Please specify the password.

Password:

230Login successful.//因已在服務(wù)器白名單中,順利登入

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>quit

221Goodbye.

五、FTP并發(fā)及帶寬限制


3.1 問(wèn)題

沿用練習(xí)一,通過(guò)調(diào)整FTP服務(wù)端配置,實(shí)現(xiàn)以下目標(biāo):

最多允許100個(gè)FTP并發(fā)連接

每個(gè)IP地址最多允許2個(gè)并發(fā)連接

匿名訪問(wèn)時(shí),將速度限制為 50KB/s

用戶(hù)登錄訪問(wèn)時(shí),將速度限制為 500KB/s

在客戶(hù)機(jī)上通過(guò)ftp或wget驗(yàn)證上述限制

3.2 方案

關(guān)于vsftpd服務(wù)器的并發(fā)及帶寬限制,主要用到以下配置參數(shù):

max_clients:限制并發(fā)的客戶(hù)端個(gè)數(shù)

max_per_ip:限制每個(gè)客戶(hù)機(jī)IP的并發(fā)連接數(shù)

anon_max_rate:匿名最大速度(字節(jié)/秒)

local_max_rate:驗(yàn)證用戶(hù)最大速率(字節(jié)/秒)

3.3 步驟

實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。

步驟一:限制并發(fā)連接數(shù)

1)修改vsftpd服務(wù)配置,在末尾添加并發(fā)限制并重載服務(wù)

[root@svr5~]#vim/etc/vsftpd/vsftpd.conf

....

max_clients=100

max_per_ip=2

[root@svr5~]# service vsftpd reload

關(guān)閉 vsftpd:[確定]

為 vsftpd 啟動(dòng) vsftpd:[確定]

2)從客戶(hù)機(jī)開(kāi)多個(gè)FTP連接進(jìn)行測(cè)試

訪問(wèn)vsftpd服務(wù)器時(shí),只要客戶(hù)端不主動(dòng)斷開(kāi)連接,且閑置不超過(guò)300秒(默認(rèn)),vsftpd服務(wù)器都會(huì)保留此連接。因此可以開(kāi)多個(gè)命令終端同時(shí)登入此FTP服務(wù)器,以測(cè)試并發(fā)限制效果。

比如,從客戶(hù)機(jī)pc205上匿名登入FTP服務(wù)器且不退出,前兩次連接都是成功的,當(dāng)?shù)谌危ǔ^(guò)2)連接時(shí),會(huì)出現(xiàn)“There are too many connections .. ..”的報(bào)錯(cuò)提示,連接失敗:

[root@svr5~]# ftp192.168.4.5

Connected to192.168.4.5(192.168.4.5).

421There are too many connections from your internet address.//連接數(shù)超限

ftp>pwd

Not connected.//未連接成功

ftp>quit

步驟二:限制FTP傳輸速度

1)修改vsftpd服務(wù)配置,在末尾添加速度限制,并重載服務(wù)

[root@svr5~]#vim/etc/vsftpd/vsftpd.conf

....

anon_max_rate=50000

local_max_rate=500000

[root@svr5~]# service vsftpd reload

關(guān)閉 vsftpd:[確定]

為 vsftpd 啟動(dòng) vsftpd:[確定]

2)在匿名FTP起始目錄、用戶(hù)lisi的家目錄下建立下載測(cè)試文件

為了方便看到效果,建立的測(cè)試文件可以稍大一點(diǎn)(比如100MB)。直接使用dd命令生成相應(yīng)的文件即可:

[root@svr5~]# ddif=/dev/zero? of=/var/ftp/pub/anon.tgz? bs=1M? count=100

....

[root@svr5~]# ddif=/dev/zero? of=~lisi/local.tgz? bs=1M? count=100

....

[root@svr5~]# ls-lh/var/ftp/pub/anon.tgz~lisi/local.tgz//確認(rèn)結(jié)果

-rw-r--r--.1root root 100M1月1515:12/home/lisi/local.tgz

-rw-r--r--.1root root 100M1月1515:12/var/ftp/pub/anon.tgz

3)使用wget命令下載上述文件,觀察穩(wěn)定以后的速度

匿名訪問(wèn)下載測(cè)試文件anon.tgz,速度穩(wěn)定在50KB/s左右:

[root@pc205~]# wget? ftp://192.168.4.5/pub/anon.tgz

--2015-01-1515: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...完成。

長(zhǎng)度:104857600(100M)(非正式數(shù)據(jù))

....

0%[]601,40849.9K/seta(英國(guó)中部時(shí)間)34m 55s

!!!! 必要時(shí),可按Ctrl+c鍵中止下載,不需要等全部下完

以用戶(hù)lisi訪問(wèn)下載測(cè)試文件local.tgz,速度穩(wěn)定在500KB/s左右:

[root@pc205~]# wget? ftp://lisi:1234567@192.168.4.5/local.tgz

--2015-01-1515:21:29--ftp://lisi:*password*@192.168.4.5/local.tgz

=>“l(fā)ocal.tgz”

正在連接192.168.4.5:21...已連接。

正在以 lisi 登錄...登錄成功!

==>SYST...完成。==>PWD...完成。

==>TYPE I...完成。==>不需要 CWD。

==>SIZE local.tgz...104857600

==>PASV...完成。==>RETR local.tgz...完成。

長(zhǎng)度:104857600(100M)(非正式數(shù)據(jù))

....

0%[]868,352503K/seta(英國(guó)中部時(shí)間)34m 55s

4)取消vsftpd服務(wù)的速度限制,再次測(cè)試下載效果

修改vsftpd.conf配置文件,將此前添加的限制下載速度的配置語(yǔ)句注釋?zhuān)ɑ騽h除),并重載服務(wù):

[root@svr5~]#vim/etc/vsftpd/vsftpd.conf

....

#anon_max_rate=50000

#local_max_rate=500000

[root@svr5~]# service vsftpd reload

關(guān)閉 vsftpd:[確定]

為 vsftpd 啟動(dòng) vsftpd:[確定]

再次使用wget下載測(cè)試文件anon.tgz,會(huì)發(fā)現(xiàn)速度已不受服務(wù)端限制,而是取決于實(shí)際的網(wǎng)絡(luò)帶寬:

[root@pc205~]# wget? ftp://192.168.4.5/pub/anon.tgz

--2015-01-1515: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...完成。

長(zhǎng)度:104857600(100M)(非正式數(shù)據(jù))

86%[==========================>]90,344,03228.2M/seta(英國(guó)中部時(shí)100%[=============================================================>]104,857,60031.8M/sin3.1s

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

資料鏈接:完全指南:如何在 CentOS 7 中安裝、配置和安全加固 FTP 服務(wù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容