RHCE(八)FTP服務——Linux系統文件共享

概念

FTP(File Transfer Protocol)文件傳輸協議,應用層的文件共享服務是互聯網控制文件實現雙向傳輸,同樣ftp也是一個應用程序,不同系統對應的應用程序也不同,但是所遵循的是同一個協議——vsftpd

原理

假設有在兩臺主機一臺主機遠程連接的服務器爲文件共享服務器本地主機爲客戶端在兩臺主機正常建立連接的情況下可以通過本地主機基於ftp協議訪問服務器的文件並將文件下載到本地。如果同樣服務器允許客戶端寫入可以將本地文件上傳到服務端。

FTP端口

TCP21 命令
TCP20 數據

FTP的傳輸有兩種方式:ASCII、二進制。

用戶分類

  • ftpReal帳戶(本地用戶):在FTP服務上擁有帳號,可以變更到其他目錄中去。如系統的主目錄等等。
  • ftpGuest用戶(虛擬用戶):只能夠訪問自己的主目錄,只能夠訪問其主目錄下的目錄,而不得訪問主目錄以外的文件。
  • ftpAnonymous(匿名)用戶:在FTP服務器中沒有指定帳戶,但是其仍然可以進行匿名訪問某些公開的資源。

默認情況下,Vsftpd服務器會把建立的所有帳戶都歸屬爲Real用戶。在組建FTP服務器的時候,我們就需要根據用戶的類型,對用戶進行歸類。

FTP服務端使用模式

主動模式/standard/port方式

主動模式下,FTP客戶端從任意的非特殊的端口(N > 1023)連入到FTP服務器的命令端口–21端口。然後客戶端在N+1(N+1 >= 1024)端口監聽,並且通過N+1(N+1 >= 1024)端口發送命令給FTP服務器。服務器會反過來連接用戶本地指定的數據端口,比如20端口。

被動模式/passive/pasv方式

在被動方式FTP中,命令連接和數據連接都由客戶端,這樣就可以解決從服務器到客戶端的數據端口的入方向連接被防火牆過濾掉的問題。當開啓一個FTP連接時,客戶端打開兩個任意的非特權本地端口(N >; 1024和N+1)。第一個端口連接服務器的21端口,但與主動方式的FTP不同,客戶端不會提交PORT命令並允許服務器來回連它的數據端口,而是提交PASV命令。這樣做的結果是服務器會開啓一個任意的非特權端口(P >; 1024),併發送PORT P命令給客戶端。然後客戶端發起從本地端口N+1到服務器的端口P的連接用來傳送數據。

主配置文件

主配置文件:vim /etc/vsftpd/vsftpd.conf
從配置文件:vim /var/ftp/pub

主配置文件詳解
anonymous_enable=YES 是否啓用匿名用戶 宿主目錄(用戶家目錄 /home/redhat)
local_enable=YES 啓用本地用戶訪問
write_enable=YES 允許寫入(本地用戶要實現上傳就需要快開啓它)
local_umask=022 默認本地用戶上傳普通文件權限 644 755
dirmessage_enable=YES 顯示每個目錄下的文件信息
xferlog_enable=YES 日誌啓用
connect_from_port_20=YES 主動請求的數據端口
chown_uploads=YES 所有匿名用戶上傳的文件所屬用戶將會被改成chown_username
chown_username=whoever 匿名上傳的所屬用戶名是whoever
xferlog_file=/var/log/xferlog 啓用的日誌文件
xferlog_std_format=YES
idle_session_timeout=600 空閒連接超時
data_connection_timeout=120 數據連接超時
nopriv_user=ftpsecure 當服務器運行於最底層時使用的用戶名
chroot_list_enable=YES
chroot_local_user=YES 所有文件列出用戶, 可以切換到其他目錄
chroot_list_file=/etc/vsftpd/chroot_list
listen=NO 服務將自己監聽處理listen_ipv6=YES
pam_service_name=vsftpd 設置PAM認證模塊使用名稱預設爲vsftpd
userlist_enable=YES
tcp_wrappers=YES 服務端和客戶端訪問控制策略(服務器級別的一種防火牆)

ftp匿名用戶訪問

修改主配置文件:#vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES 開啓匿名用戶訪問(可以下載文件)
anon_upload_enable=YES 開啓上傳權限(默認可以上傳普通文本文件)
anon_mkdir_write_enable=YES 上傳目錄
anon_umask=022 指定上傳權限掩碼(默認077)
anon_other_write_enable=YES 開啓匿名用戶刪除權限

ftp本地用戶訪問

修改主配置文件:#vim /etc/vsftpd/vsftpd.conf

local_enable=yes 本地用戶訪問/下載
write_enable=yes 本地用戶上傳普通文件/目錄權限開啓/刪除
Local_umask=022 指定上傳權限掩碼(默認077)

本地用戶禁錮方式兩種

1.對所有本地用戶禁錮

allow_writeable_chroot=YES
chroot_local_user=YES

  1. 指定列表用戶禁錮

allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

ftp虛擬用戶訪問

1、創建系統用戶,禁止該用戶登錄
[root@ldap ftp]# useradd -s /sbin/nologin vhaha
2、修改家目錄權限,讓虛擬用戶可訪問
[root@localhost vsftpd]# chmod o+rx /home/vhaha/
3、修改主配置文件
[root@ldap ftp]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO 關閉匿名訪問
guest_enable=YES 客人模式
guest_username=vhaha vhaha爲系統用戶
virtual_use_local_privs=YES 本地虛擬用戶特權開啓
pam_service_name=vsftpd 設置PAM認證模塊使用名稱預設爲vsftpd
chroot_list_enable=YES
chroot_local_user=NO 在/etc/vsftpd.chroot_list 文件中列出的用戶,不能切換到其他目錄;未在文件中列出的用戶,可以切換到/目錄

4、創建虛擬用戶數據庫文件
(1)創建虛擬用戶文件

格式爲一行用戶名,一行密碼,示例中abc爲用戶名,redhat爲密碼
[root@localhost vsftpd]# vim vhaha
1
redhat
2
redhat
3
redhat

將虛擬用戶文件轉換成用戶數據庫文件
[root@localhost vsftpd]# db_load -T -t hash -f vhaha vhaha.db
修改虛擬用戶數據庫文件權限
[root@localhost vsftpd]# chmod 600 vhaha.db

5、修改PAM認證方式

vim /etc/pam.d/vsftpd
註釋掉所有行,並添加以下兩行:
auth required pam_userdb.so db=/etc/vsftpd/vhaha
account required pam_userdb.so db=/etc/vsftpd/vhaha

6、重啓服務,關閉防火牆和selinux
[root@localhost]#systemctl restart vsftpd
[root@localhost]#systemctl stop firewalld
[root@localhost]#setenforce 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章