18.FTPServer

FTP服務(wù)器的模式

FTP服務(wù)器工作端口

  • TCP21 命令傳輸端口
  • TCP20 數(shù)據(jù)傳輸端口

主動(dòng)模式

image.png

FTP主動(dòng)模式聯(lián)機(jī)示意圖

如上圖所示辜王,F(xiàn)TP服務(wù)器在主動(dòng)模式下烹困,聯(lián)機(jī)步驟如下:

1,建立命令信號(hào)通道
客戶機(jī)會(huì)隨機(jī)選取大于1024以上的端口(port AA)來與FTP服務(wù)器的21端口連接,這個(gè)過程需要TCP的三次握手建立可靠的連接,建立連接后,客戶機(jī)會(huì)對(duì)服務(wù)器進(jìn)行命令的下達(dá)蠢壹。
2,協(xié)商階段
客戶機(jī)通知FTP服務(wù)器使用主動(dòng)模式(active)進(jìn)行數(shù)據(jù)的傳輸宏浩,并且會(huì)告知服務(wù)器知残,自己采用的數(shù)據(jù)傳輸?shù)亩丝谔?hào)。
3,傳輸數(shù)據(jù)階段
此時(shí)求妹,F(xiàn)TP服務(wù)器由命令通道知道了客戶機(jī)的數(shù)據(jù)傳輸請(qǐng)求后乏盐,且知道了客戶機(jī)的數(shù)據(jù)傳輸端口;服務(wù) 器會(huì)主動(dòng)向客戶機(jī)的數(shù)據(jù)傳輸端口建立鏈接請(qǐng)求,這個(gè)時(shí)候也會(huì)用TCP的三次握手!建立連接后盼理,此時(shí),客戶機(jī)和服務(wù)器共會(huì)建立兩天可靠的TCP連接何吝,在命令信道進(jìn)行下載或上傳的指令,在數(shù)據(jù)信道進(jìn)行實(shí)際的數(shù)據(jù)傳輸鹃唯。
注: 一句話總結(jié)爱榕,主動(dòng)模式是,服務(wù)器端主動(dòng)發(fā)出數(shù)據(jù)連接請(qǐng)求坡慌,客戶端等待服務(wù)器的主動(dòng)連接黔酥。
被動(dòng)模式

被動(dòng)模式主要使用與客戶端有防火墻的情況下,如下圖中洪橘,服務(wù)器當(dāng)主動(dòng)和客戶機(jī)進(jìn)行數(shù)據(jù)連接請(qǐng)求時(shí)跪者,會(huì)被客戶端的防火墻阻止。

由上圖可知熄求,由于有防火墻的存在或透過 NAT 的轉(zhuǎn)換后渣玲,F(xiàn)TP 服務(wù)器只能得知 NAT 的 IP 而不是客戶端的 IP , 因此 FTP 服務(wù)器會(huì)以 port 20 主動(dòng)的向 NAT 的 port BB 發(fā)送主動(dòng)聯(lián)機(jī)的要求弟晚。 但你的 NAT 并沒有啟動(dòng) port BB 來監(jiān)聽 FTP 服務(wù)器的聯(lián)機(jī)巴堋!因此指巡,不能順利建立數(shù)據(jù)連接淑履。

解決以上的問題有兩種方式
1. 使用iptables的兩個(gè)模塊隶垮,你可以用modprobe這個(gè)命令來加載 ip_conntrack_ftp和ip_nat_ftp模塊來實(shí)現(xiàn)藻雪,條件是FTP服務(wù)器必須使用標(biāo)準(zhǔn)的21端口
2. 使用FTP的被動(dòng)模式,如下圖

image.png

具體的過程是這樣的:

1.客戶機(jī)和服務(wù)器建立命令通道
這和之前主動(dòng)模式是一樣的

2. 協(xié)商連接模式
這時(shí)客戶機(jī)會(huì)使用建立好的命令信道狸吞,向服務(wù)器發(fā)出PASV的被動(dòng)模式連接要求勉耀,并等待服務(wù)器的回應(yīng)。此時(shí)客戶機(jī)并沒有告知服務(wù)器自己的數(shù)據(jù)傳輸端口蹋偏,只是個(gè)請(qǐng)求

3. 當(dāng)服務(wù)器接收到要求被動(dòng)模式的連接時(shí)便斥,且服務(wù)器支持此模式;就會(huì)先啟動(dòng)一個(gè)大于1024的端口號(hào)進(jìn)入監(jiān)聽狀態(tài)威始。這個(gè)號(hào)碼也可以通過自己FTP服務(wù)器設(shè)定一個(gè)范圍枢纠。之后服務(wù)器會(huì)透過命令信道,告知客戶端自己已經(jīng)啟動(dòng)的數(shù)據(jù)傳輸端口黎棠,并等待客戶機(jī)的連接

4. 這時(shí)晋渺,客戶機(jī)知道了服務(wù)器端的數(shù)據(jù)連接端口后镰绎,會(huì)隨機(jī)用一個(gè)大于1024的端口號(hào)來和服務(wù)器的數(shù)據(jù)端口號(hào)進(jìn)行連接。此時(shí)一切OK的話木西,就可傳輸數(shù)據(jù)畴栖。
注:一句話總結(jié),被動(dòng)模式是服務(wù)器端先開啟一個(gè)數(shù)據(jù)端口進(jìn)行監(jiān)聽八千,等待客戶機(jī)的連接吗讶。而客戶機(jī)會(huì)主動(dòng)向服務(wù)器進(jìn)行連接。

安裝

安裝服務(wù)端軟件

yum install   vsftpd

服務(wù)管理

啟動(dòng)服務(wù)

systemctl  restart  vsftpd

查看監(jiān)聽端口

 ss    -ntal

輸入中應(yīng)該有 21 號(hào)端口被監(jiān)聽
LISTEN      0      32      *:21                  *:*

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

port_enable=YES|NO
如果你要在數(shù)據(jù)連接時(shí)取消PORT模式時(shí)恋捆,設(shè)此選項(xiàng)為NO照皆。默認(rèn)值為YES。

connect_from_port_20=YES|NO
控制以PORT模式進(jìn)行數(shù)據(jù)傳輸時(shí)是否使用20端口(ftp-data)沸停。YES使用纵寝,NO不使用。
默認(rèn)值為NO星立,但RHEL 自帶的vsftpd.conf文件中此參數(shù)設(shè)為YES爽茴。 

ftp_data_port=port number
設(shè)定ftp數(shù)據(jù)傳輸端口值(ftp-data)。默認(rèn)值為20绰垂。此參數(shù)用于PORT FTP模式室奏。

port_promiscuous=YES|NO
默認(rèn)值為NO。為YES時(shí)劲装,取消PORT安全檢查胧沫。該檢查確保外出的數(shù)據(jù)只能連接到客戶端上。

pasv_enable=YES|NO 
YES占业,允許數(shù)據(jù)傳輸時(shí)使用PASV模式绒怨。NO,不允許使用PASV模式谦疾。默認(rèn)值為YES南蹂。 

pasv_min_port=port number
設(shè)定在PASV模式下,建立數(shù)據(jù)傳輸所可以使用port范圍的下界和上界念恍,0 表示任意六剥。默認(rèn)值為0。

pasv_max_port=port number 
把端口范圍設(shè)在比較高的一段范圍內(nèi)峰伙,比如50000-60000疗疟,將有助于安全性的提高。
 
pasv_promiscuous=YES|NO
此選項(xiàng)激活時(shí)瞳氓,將關(guān)閉PASV模式的安全檢查策彤。該檢查確保數(shù)據(jù)連接和控制連接是來自同一個(gè)IP地址。小心打開此選項(xiàng)。此選項(xiàng)唯一合理的用法是存在于由安全隧道方案構(gòu)成的組織中店诗。默認(rèn)值為NO叽赊。
 
 pasv_address=
此選項(xiàng)為一個(gè)數(shù)字IP地址,作為PASV命令的響應(yīng)必搞。默認(rèn)值為none必指,即地址是從呼入的連接套接字(incoming connectd socket)中獲取  

三、FTP服務(wù)器的用戶分類
匿名用戶 (anonymous或ftp)
本地用戶(local user)
虛擬用戶(guest) use_localtime=YES //使用本地主機(jī)的時(shí)間恕洲,建議設(shè)置

1. 匿名用戶的配置選項(xiàng)

anonymous_enable=YES|NO  
控制是否允許匿名用戶登錄塔橡,YES允許,NO不允許霜第,默認(rèn)值為YES葛家。
 
 ftp_username=   
匿名用戶所使用的系統(tǒng)用戶名。默認(rèn)下泌类,此參數(shù)在配置文件中不出現(xiàn)癞谒,值為ftp
 
no_anon_password=YES|NO  
控制匿名用戶登入時(shí)是否需要密碼,YES不需要刃榨,NO需要弹砚。默認(rèn)值為NO。

 deny_email_enable=YES|NO  
此參數(shù)默認(rèn)值為NO枢希。當(dāng)值為YES時(shí)桌吃,拒絕使用banned_email_file參數(shù)指定文件中所列出的e-mail地址進(jìn)行登錄的匿名用戶。
即苞轿,當(dāng)匿名用戶使用 banned_email_file 文件中所列出的e-mail進(jìn)行登錄時(shí)茅诱,被拒絕。
顯然搬卒,這對(duì)于阻擊某些Dos攻擊有效瑟俭。當(dāng)此參數(shù)生效時(shí),需追加banned_email_file參數(shù) 

 banned_email_file=/etc/vsftpd.banned_emails   
指定包含被拒絕的e-mail地址的文件契邀,默認(rèn)文件為/etc/vsftpd.banned_emails摆寄。 

 anon_root=
設(shè)定匿名用戶的根目錄,即匿名用戶登入后蹂安,被定位到此目錄下椭迎。主配置文件中默認(rèn)無此項(xiàng),默認(rèn)值為/var/ftp/田盈。

anon_world_readable_only=YES|NO   
控制是否只允許匿名用戶下載可閱讀文檔。YES缴阎,只允許匿名用戶下載可閱讀的文件允瞧。NO,允許匿名用戶瀏覽整個(gè)服務(wù)器的文件系統(tǒng)。默認(rèn)值為YES述暂。 
 
anon_upload_enable=YES|NO  
控制是否允許匿名用戶上傳文件痹升,YES允許,NO不允許畦韭,默認(rèn)是不設(shè)值疼蛾,即為NO。
除了這個(gè)參數(shù)外艺配,匿名用戶要能上傳文件察郁,還需要兩條件:
一、write_enable=YES;
二转唉、在文件系統(tǒng)上皮钠,目錄有寫權(quán)限。 


 anon_mkdir_write_enable=YES|NO   
 控制是否允許匿名用戶創(chuàng)建新目錄赠法,YES允許麦轰,NO不允許,默認(rèn)是不設(shè)值砖织,即為NO款侵。當(dāng)然在文件系統(tǒng)上,F(xiàn)TP匿名用戶必需對(duì)新目錄的上層目錄擁有寫權(quán)限侧纯。 ? 如果要設(shè)定為 YES喳坠, 那么 anony_other_write_enable 必須設(shè)定為 YES

anon_other_write_enable=YES|NO 
控制匿名用戶是否擁有除了上傳和新建目錄之外的其他權(quán)限,如刪除茂蚓、更名等壕鹉。YES擁有,NO不擁有聋涨,默認(rèn)值為NO晾浴。

chown_uploads=YES|NO   
是否修改匿名用戶所上傳文件的所屬主。YES牍白,匿名用戶所上傳的文件的所有權(quán)將改為另外一個(gè)不同的用戶所有脊凰,用戶由chown_username參數(shù)指定。此選項(xiàng)默認(rèn)值為NO 
  
chown_username=whoever   
指定擁有匿名用戶所上傳文件的所屬主的用戶茂腥。此參數(shù)與chown_uploads一起用狸涌。不推薦使用root用戶。 

2.本地用戶配置選項(xiàng)

local_enable=YES|NO   
控制服務(wù)器的本地用戶是否可以登錄vsftpd最岗。默認(rèn)值為YES帕胆。

local_root=   
定義所有本地用戶的根目錄。當(dāng)本地用戶登入時(shí)般渡,將被更換到此目錄下懒豹。默認(rèn)值為無此配置語句芙盘。

user_config_dir=   
定義用戶個(gè)人配置文件所在的目錄。用戶的個(gè)人配置文件為該目錄下的同名文件脸秽。個(gè)人配置文件的格式與vsftpd.conf格式相同儒老。
例如定義user_config_dir=/etc/vsftpd/userconf,并且主機(jī)上有用戶zenxiaoxian记餐,那我們可以在user_config_dir的目錄新增名為zenxiaoxian的文件驮樊。當(dāng)用戶zenxiaoxian登入時(shí),VSFTPD則會(huì)讀取user_config_dir下zenxiaoxian這個(gè)文件中的設(shè)定值片酝,應(yīng)用于用戶zenxiaoxian囚衔。默認(rèn)值為無 

3.虛擬用戶配置選項(xiàng)

虛擬用戶就是可以使用一個(gè) Linux 系統(tǒng)中不存在的用戶。
讓這個(gè)虛擬用戶使用 ftp

guest_enable=YES|NO   
若是啟動(dòng)這項(xiàng)功能钠怯,所有的非匿名登入者都視為guest佳魔。默認(rèn)值為關(guān)閉。 
 
guest_username= 
定義VSFTPD的虛擬用戶在系統(tǒng)中所映射的本地用戶名晦炊。默認(rèn)值為ftp鞠鲜。  

4.用戶的登陸控制

pam_service_name=vsftpd
指出VSFTPD進(jìn)行PAM認(rèn)證時(shí)所使用的PAM配置文件名,默認(rèn)值是vsftpd断国,默認(rèn)PAM配置文件是  /etc/pam.d/vsftpd贤姆。 

/etc/vsftpd/ftpusers
VSFTPD禁止列在此文件中的用戶登錄FTP服務(wù)器。這個(gè)機(jī)制是在/etc/pam.d/vsftpd中默認(rèn)設(shè)置的稳衬。

userlist_enable=YES|NO   
此選項(xiàng)為YES時(shí)霞捡,VSFTPD將讀取userlist_file參數(shù)所指定的文件中的用戶列表。當(dāng)列表中的用戶登錄FTP服務(wù)器時(shí)薄疚,該用戶在提示輸入密碼之前就被禁止了碧信。即該用戶名輸入后,VSFTPD查到該用戶名在列表街夭,VSFTPD就直接禁止掉該用戶砰碴,不會(huì)再進(jìn)行詢問密碼等后續(xù)步聚。默認(rèn)值為NO板丽。 

userlist_file=/etc/vsftpd/user_list
指出userlist_enable選項(xiàng)生效后呈枉,被讀取的包含用戶列表的文件。默認(rèn)值是/etc/vsftpd/user_list埃碱。

userlist_deny=YES|NO   
決定禁止還是只允許由userlist_file指定文件中的用戶登錄FTP服務(wù)器猖辫。此選項(xiàng)在userlist_enable 選項(xiàng)啟動(dòng)后才生效。YES砚殿,默認(rèn)值啃憎,禁止文件中的用戶登錄,同時(shí)也不向這些用戶發(fā)出輸入口令的提示瓮具。NO荧飞,只允許在文件中的用戶登錄FTP服務(wù)器凡人。 

tcp_wrappers=YES|NO
在VSFTPD中使用TCP_Wrappers遠(yuǎn)程訪問控制機(jī)制名党,默認(rèn)值為YES 

5.用戶的目錄訪問控制

chroot_list_enable=YES|NO  
鎖定某些用戶在自家目錄中叹阔。即當(dāng)這些用戶登錄后,不可以轉(zhuǎn)到系統(tǒng)的其他目錄传睹,只能在自家目錄(及其子目錄)下耳幢。具體的用戶在chroot_list_file參數(shù)所指定的文件中列出。默認(rèn)值為 注釋欧啤。   

chroot_list_file=/etc/vsftpd/chroot_list  
指出被鎖定在自家目錄中的用戶的列表文件睛藻。文件格式為一行一用戶。
通常該文件是/etc/vsftpd/chroot_list邢隧。此選項(xiàng)默認(rèn)不設(shè)置店印。  

chroot_local_users=YES|NO  
將本地用戶鎖定在自家目錄中。
當(dāng)此項(xiàng)被激活時(shí)倒慧,chroot_list_enable=YES參數(shù)的作用將發(fā)生變化按摘,chroot_list_file所指定文件中的用戶將不被鎖定在自家目錄。本參數(shù)被激活后纫谅,可能帶來安全上的沖突 

passwd_chroot_enable   
當(dāng)此選項(xiàng)激活時(shí)炫贤,與chroot_local_user選項(xiàng)配合,chroot()容器的位置可以在每個(gè)用戶的基礎(chǔ)上指定付秕。每個(gè)用戶的容器來源于/etc/passwd中每個(gè)用戶的自家目錄字段兰珍。默認(rèn)值為NO  

tcp_wrappers=YES
支持 TCP Wrappers 的防火墻機(jī)制

客戶端操作

安裝客戶軟件

yum install -y lftp

連接到 FTP Server

lftp 172.18.0.2 
# lftp   FTP Server 的 ip

基本操作

查看

lftp 172.18.0.2:/> ls
-rw-r--r--    1 0        0            4707 Jul 29 11:03 an.cfg
drwxr-xr-x    2 0        0            4096 Jul 29 11:13 pub

執(zhí)行 shell 命令

lftp 172.18.0.2:/> !ls

下載單一文件

lftp 172.18.0.2:/> get an.cfg
4707 bytes transferred

下載目錄

lftp 172.18.0.2:/> mirror pub
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市询吴,隨后出現(xiàn)的幾起案子掠河,更是在濱河造成了極大的恐慌,老刑警劉巖猛计,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唠摹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡有滑,警方通過查閱死者的電腦和手機(jī)跃闹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毛好,“玉大人望艺,你說我怎么就攤上這事〖》茫” “怎么了找默?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吼驶。 經(jīng)常有香客問我惩激,道長店煞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任风钻,我火速辦了婚禮顷蟀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘骡技。我一直安慰自己鸣个,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布布朦。 她就那樣靜靜地躺著囤萤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪是趴。 梳的紋絲不亂的頭發(fā)上涛舍,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天懊亡,我揣著相機(jī)與錄音队秩,去河邊找鬼捂龄。 笑死环础,一個(gè)胖子當(dāng)著我的面吹牛桥滨,可吹牛的內(nèi)容都是我干的潮针。 我是一名探鬼主播暖哨,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼畏吓,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼滚婉!你這毒婦竟也來了图筹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤让腹,失蹤者是張志新(化名)和其女友劉穎远剩,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骇窍,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瓜晤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腹纳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痢掠。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嘲恍,靈堂內(nèi)的尸體忽然破棺而出足画,到底是詐尸還是另有隱情,我是刑警寧澤佃牛,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布淹辞,位于F島的核電站,受9級(jí)特大地震影響俘侠,放射性物質(zhì)發(fā)生泄漏象缀。R本人自食惡果不足惜蔬将,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望央星。 院中可真熱鬧霞怀,春花似錦、人聲如沸等曼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽禁谦。三九已至,卻和暖如春废封,著一層夾襖步出監(jiān)牢的瞬間州泊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工漂洋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遥皂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓刽漂,卻偏偏與公主長得像演训,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贝咙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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