1. 程式人生 > >linux 之ftp

linux 之ftp

linux ftp

FTP的內容

文件傳輸協議
FTP是一種在互聯網中進行文件傳輸的協議,基於客戶端/服務器模式,默認使用20、21號端口,其中端口20(數據端口)用於進行數據傳輸,端口21(命令端口)用於接受客戶端發出的相關FTP命令與參數。FTP服務器普遍部署於內網中,具有容易搭建、方便管理的特點。而且有些FTP客戶端工具還可以支持文件的多點下載以及斷點續傳技術,因此FTP服務得到了廣大用戶的青睞。FTP協議的傳輸拓撲如圖11-1所示。

技術分享圖片

FTP服務器是按照FTP協議在互聯網上提供文件存儲和訪問服務的主機,FTP客戶端則是向服務器發送連接請求,以建立數據傳輸鏈路的主機

兩種模式
主動模式:FTP服務器主動向客戶端發起連接請求。
被動模式:FTP服務器等待客戶端發起連接請求(FTP的默認工作模式)。
防火墻一般是用於過濾從外網進入內網的流量,因此有些時候需要將FTP的工作模式設置為主動模式,才可以傳輸數據。

什麽是vsftpd
vsftpd(very secure ftp daemon,非常安全的FTP守護進程)是一款運行在Linux操作系統上的FTP服務程序,不僅完全開源而且免費,此外,還具有很高的安全性、傳輸速度,以及支持虛擬用戶驗證等其他FTP服務程序不具備的特點。

安裝vsftpd
1 [root@minxing ~]# yum install vsftpd
ptables防火墻管理工具默認禁止了FTP傳輸協議的端口號,因此在正式配置vsftpd服務程序之前,為了避免這些默認的防火墻策略“搗亂”,還需要清空iptables防火墻的默認策略,並把當前已經被清理的防火墻策略狀態保存下來

[root@minxing ~]# iptables -F
[root@minxing ~]# service iptables save
2 備份原文件,去掉註釋行,查看內容
[root@minxing ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
[root@minxing ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
[root@minxing ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
vsftpd服務程序常用的參數以及作用

技術分享圖片
技術分享圖片

Vsftpd服務程序
vsftpd作為更加安全的文件傳輸的服務程序,允許用戶以三種認證模式登錄到FTP服務器上。
匿名開放模式:是一種最不安全的認證模式,任何人都可以無需密碼驗證而直接登錄到FTP服務器。
本地用戶模式:是通過Linux系統本地的賬戶密碼信息進行認證的模式,相較於匿名開放模式更安全,而且配置起來也很簡單。但是如果被黑客破解了賬戶的信息,就可以暢通無阻地登錄FTP服務器,從而完全控制整臺服務器。
虛擬用戶模式:是這三種模式中最安全的一種認證模式,它需要為FTP服務單獨建立用戶數據庫文件,虛擬出用來進行口令驗證的賬戶信息,而這些賬戶信息在服務器系統中實際上是不存在的,僅供FTP服務程序進行認證使用。這樣,即使黑客破解了賬戶信息也無法登錄服務器,從而有效降低了破壞範圍和影響。
ftp是Linux系統中以命令行界面的方式來管理FTP傳輸服務的客戶端工具。所以接下來要安裝ftp客戶端工具
[root@minxing ~]# yum install ftp
匿名訪問模式
在vsftpd服務程序中,匿名開放模式是最不安全的一種認證模式。任何人都可以無需密碼驗證而直接登錄到FTP服務器。這種模式一般用來訪問不重要的公開文件(在生產環境中盡量不要存放重要文件)。當然,如果采用第8章中介紹的防火墻管理工具(如Tcp_wrappers服務程序)將vsftpd服務程序允許訪問的主機範圍設置為企業內網,也可以提供基本的安全性。
vsftpd服務程序默認開啟了匿名開放模式,我們需要做的就是開放匿名用戶的上傳、下載文件的權限,以及讓匿名用戶創建、刪除、更名文件的權限。需要註意的是,針對匿名用戶放開這些權限會帶來潛在危險,我們只是為了在Linux系統中練習配置vsftpd服務程序而放開了這些權限,不建議在生產環境中如此行事。表11-2羅列了可以向匿名用戶開放的權限參數以及作用。
可以向匿名用戶開放的權限參數以及作用

技術分享圖片
vim /etc/vsftpd/vsftpd.conf 編輯配置文件
1 anonymous_enable=YES
2 anon_umask=022
3 anon_upload_enable=YES
4 anon_mkdir_write_enable=YES
5 anon_other_write_enable=YES
6 local_enable=YES
7 write_enable=YES
8 local_umask=022
9 dirmessage_enable=YES
10 xferlog_enable=YES
11 connect_from_port_20=YES
12 xferlog_std_format=YES
13 listen=NO
14 listen_ipv6=YES
15 pam_service_name=vsftpd
16 userlist_enable=YES
17 tcp_wrappers=YES
在vsftpd服務程序的主配置文件中正確填寫參數,然後保存並退出。還需要重啟vsftpd服務程序,讓新的配置參數生效。在生產環境中或者在RHCSA、RHCE、RHCA認證考試中一定要把配置過的服務程序加入到開機啟動項中,以保證服務器在重啟後依然能夠正常提供傳輸服務:
[root@minxing ~]# systemctl restart vsftpd
[root@minxing ~]# systemctl enable vsftpd
現在就可以在客戶端執行ftp命令連接到遠程的FTP服務器了。在vsftpd服務程序的匿名開放認證模式下,其賬戶統一為anonymous,密碼為空。而且在連接到FTP服務器後,默認訪問的是/var/ftp目錄。我們可以切換到該目錄下的pub目錄中,然後嘗試創建一個新的目錄文件,以檢驗是否擁有寫入權限:
[root@minxing ~]# ftp 192.168.213.131 這裏登錄的IP為橋接
Connected to 192.168.213.131 (192.168.213.131).
220 (vsFTPd 3.0.2)
Name (192.168.213.131:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir file
550 Create directory operation failed.
創建失敗,很顯然沒有寫的權限 。那麽我們來查看一下在pub目錄下的權限
[root@minxing ~]# ll -ld /var/ftp/pub/
drwxr-xr-x. 3 root root 21 3月 29 09:38 /var/ftp/pub/
可以看出所有人和所有組以及其他人的權限分別是讀寫執行|讀執行|執行 。所以這個文件只有只有root可以為所欲為,而ftp匿名用戶就是其他人,他對這個文件只有執行的權限,所以做不了任何事情。在安裝ftp客戶端管理工具時,系統已經自動創建了用戶,要實現能夠寫的權利,我們可以把所有人改為本人ftp用戶。因為我們登錄的時候是作為ftp匿名用戶登錄的,所以把所有人改為ftp用戶 ,這個文件就可以執行相應的權限的操作了
[root@minxing ~]# chown -Rf ftp /var/ftp/pub
[root@minxing ~]# ll -ld /var/ftp/pub/
drwxr-xr-x. 3 ftp root 21 3月 29 09:38 /var/ftp/pub
再次登錄 可以看到可以創建文件目錄
[root@minxing ~]# ftp 192.168.213.131
Connected to 192.168.213.131 (192.168.213.131).
220 (vsFTPd 3.0.2)
Name (192.168.213.131:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir file
257 "/pub/file" created
登錄後在這裏默認的目錄文件為/var/ftp/pub
本地用戶模式
相較於匿名開放模式,本地用戶模式要更安全,而且配置起來也很簡單。如果大家之前用的是匿名開放模式,現在就可以將它關了,然後開啟本地用戶模式。針對本地用戶模式的權限參數以及作用如表所示。

技術分享圖片

1 當userlist_enable=YES時,userlist_deny=YES時,不管vim /etc/pam.d/vsftpd註釋不註釋 user_list是一個黑名單,所有出現在名單中的用戶都會被拒絕登入;除非註釋掉裏面的名單用戶才可登錄
2 當userlist_enable=YES時,userlist_deny=NO(用戶不可登錄)最後把 vim /etc/pam.d/vsftpd註釋時 userlist依舊是個白名單,名單用戶可以登錄
3 當 userlist_enable=NO時,userlist_deny=YES時 (用戶不可登錄)最後把vim /etc/pam.d/vsftpd註釋時 userlist依舊是個白名單,名單用戶可以登錄
這足以說明,當有一個功能開啟全部禁用時,不管pam是否怎麽樣,名單用戶不可登錄。當開啟一個任意禁用 ,pam默認禁止登錄,名單用戶不可登錄。當註釋掉pam 開啟前2者之一的禁用,名單用戶可以登錄
vsftpd服務程序為了保證服務器的安全性而默認禁止了root管理員和大多數系統用戶的登錄行為,這樣可以有效地避免黑客通過FTP服務對root管理員密碼進行暴力破解。如果您確認在生產環境中使用root管理員不會對系統安全產生影響,只需按照上面的提示刪除掉root用戶名即可。我們也可以選擇ftpusers和user_list文件中沒有的一個普通用戶嘗試登錄FTP服務器:
刪除root這一行,就可以讓root用戶登錄。另外還可以讓不在這個禁止登錄名單裏的用戶登錄。
編譯配置文件 vim /etc/vsftpd/user_list /etc/vsftpd/ftpusers註釋掉root
[root@minxing ~]# ftp 192.168.213.131
Connected to 192.168.213.131 (192.168.213.131).
220 (vsFTPd 3.0.2)
Name (192.168.213.131:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
這裏我們可以看出,在禁止用戶登錄的名單中刪除了root用戶以後,就可以登錄了,就可以看到root用戶裏面的文件了。
當實現文件名單禁用用戶時,要實現root登錄有2種方式, 一種是去配置文件裏去掉註釋,第二種是去掉pam第二行註釋和一個userlist開啟禁用等於NO。

linux 之ftp