Linux——FTP伺服器部署,FTP安全部署(匿名,本地,虛擬使用者的管理)
阿新 • • 發佈:2018-11-07
一、FTP的概念
FTP 是File Transfer Protocol(檔案傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制檔案的雙向傳輸
二、FTP的部署
- 服務端部署:
- 安裝vsftpd
- 安裝 lftp
- 開啟vsftpd服務,並設定開機自啟動
- 開啟火牆,並新增ftp服務到火牆白名單
重新載入
檢視,ftp服務已經新增到火牆白名單中
- 使用ftp訪問主機(ls有內容顯示,則代表登入成功,否則不成功)
- 關閉selinux
- 顯示enforcing,則代表沒有關閉
- 編輯selinux配置檔案
將selinux的狀態改為disabled
- 重啟伺服器(因為這個修改是核心級的,所以我們需要重啟虛擬機器)
- 檢視,修改成功
3. 客戶端部署: - 安裝lftp
- 測試:登入伺服器成功(伺服器ip:172.25.254.100)
三、FTP服務的基本資訊
- 軟體安裝包:vsftpd
- 預設釋出目錄:/var/ftp
- 協議介面:21/tcp
- 服務配置檔案:/etc/vsftpd/vsftpd.conf
注意:編輯配置檔案後,一定要記得重啟服務 - 報錯id的解析:
500 檔案系統許可權過大
530 使用者認證失敗
550 服務本身功能未開啟
553 本地檔案系統許可權過小
四、FTP的安全部署
通過編輯服務配置檔案:/etc/vsftpd/vsftpd.conf,進行安全部署
- 為了方便後續的測試,給服務端新建一個使用者,並設定密碼
- 匿名使用者
anonymous_enable=YES|NO 匿名使用者是否可以登陸 (YES為可以登入)
修改成NO,則匿名使用者不能登入
編輯配置檔案後,一定要重啟服務以後就不再贅述
- 測試:
- 本地使用者
(1) local_enable=YES|NO 本地使用者是否可以登陸
- 測試:
(2)write_enable=YES|NO ftp是否對登陸使用者可寫
- 測試:
若改為write_enable=NO,則不可寫
- 匿名使用者上傳
預設情況下,匿名使用者是不能上傳的
實現匿名上傳的步驟:
(1)編輯配置檔案
(2)修改匿名使用者目錄的所有組並給組新增可寫的許可權
- 測試
- 匿名使用者家目錄修改
anon_root=/目錄
新建一個目錄/hello,並建立檔案,若測試端登入後可以直接看到這些檔案,則代表家目錄修改成功
- 測試
- 匿名使用者上傳檔案預設許可權修改
anon_umask=xxx
- 測試
- 匿名使用者建立目錄
anon_mkdir_write_enable=YES|NO
- 測試
- 匿名使用者下載
anon_world_readable_only=YES|NO 引數NO表示匿名使用者可以下載
- 測試
- 匿名使用者刪除
anon_other_write_enable=YES|NO
- 測試
- 匿名使用者使用的使用者身份和許可權修改
可以看到westos使用者的uid是1001
- 測試
- 最大上傳速率
anon_max_rate=102400
- 擷取檔案,用於測試上傳速率
- 不限速情況下上傳速率達到很大
- 測試
將最大上傳速率改為102400
可以看到上傳速率很慢
- 最大連結數
max_clients=1 表示最多有1個可以連線
- 測試
再重新開啟一個shell,進行連線,連線失敗
- 本地使用者家目錄修改
local root=/directory
本地使用者登入,預設進入使用者的家目錄
- 測試
修改本地使用者家目錄
- 本地使用者上傳檔案許可權
local umask=xxx
- 測試
14. 限制本地使用者登陸
(1)vim /etc/vsftpd/ftpusers 使用者永久黑名單
(2)vim /etc/vsftpd/user list 使用者臨時黑名單(userlist deny=YES)
- 使用者白名單設定
注意: 修改/etc/vsftpd/vsftpd.conf——>userlist deny=NO時
/etc/vsftpd/user list 就變成使用者白名單(只有存在這個檔案裡的使用者才可以登入)
- 限制本地使用者瀏覽根目錄
(1)限制所有使用者被鎖定在自己的家目錄
- 預設情況下,本地使用者可以瀏覽根目錄
- 編輯配置檔案
- 給本地使用者家目錄減小許可權
- 測試
(2)使用者黑名單的建立 - 編輯配置檔案
NO說明沒有將所有本地使用者鎖在自己的家目錄,本地使用者都可以自由訪問根目錄
所以/etc/vsftpd/chroot_list 就變成了黑名單,只有這裡邊的本地使用者不可以瀏覽目錄
- 新增使用者到黑名單
- 測試:
westos使用者(在黑名單中),被限制瀏覽根目錄
student使用者可以正常瀏覽根目錄
(3)使用者白名單的建立 - 編輯配置檔案
YES說明將所有本地使用者鎖在自己的家目錄,本地使用者都不可以自由訪問根目錄
所以/etc/vsftpd/chroot_list 就變成了白名單,只有這裡邊的本地使用者可以瀏覽目錄
- 新增使用者到白名單
- 測試:
westos使用者(在白名單中),可以正常訪問根目錄
student使用者不可以正常訪問根目錄
五、虛擬使用者的管理
(1) 建立虛擬使用者認證
- 建立虛擬使用者的原因: 因為系統使用者登陸ftp服務,同時也可以登陸系統,這樣很不安全,所以我們要建立ftp虛擬使用者,使這些使用者只能登陸ftp
- 建立方式:
- vim /etc/vsftpd/loginusers 名字任意
編輯內容:一行使用者名稱一行密碼,注意編輯的時候不要有空格出現
- 加密檔案:因為檔案是明文的,很不安全,所以我們要對其加密
這裡檢視檔案型別,看到使用的是hash加密
- 編輯策略檔案(驗證密碼與使用者是否一致的檔案) 檔名稱任意
注意:
required表示使用者名稱認證必須正確,否者直接pass
db=/etc/vsftpd/loginusers,後面檔名不能是loginusers.db
如果寫成db=/etc/vsftpd/loginusers.db 則實際會將檔案識別成loginusers.db.db
4. 編輯配置檔案
指定策略檔案到配置檔案中
編輯配置檔案一定要重啟服務,後面就不再贅述截圖
- 測試 可以看到虛擬使用者建立成功,可以登入
注意:建立虛擬使用者後,本地使用者就不能正常登陸了,但是仍然可以指定本地使用者身份登陸
(2) 如何指定虛擬使用者登入身份 - 編輯配置檔案
將虛擬使用者指定身份設定為westos (這裡的westos必須是服務端已經存在的使用者)
- 檢視westos使用者家目錄下的東西,如果虛擬使用者登入時可以看到以下檔案,則證明虛擬使用者登入身份修改成功
- 修改許可權
此時登入會有許可權過大的報錯顯示
- 測試 ——>成功
(3)虛擬使用者家目錄的設定 - 在這三個家目錄中分別新增檔案(為了驗證使用者進入的是否是自己的家目錄
- 許可權加滿,方便後續測試
- 編輯配置檔案
注意:
(1) $ USER 相當於c語言中的變數,給不同的值,輸出不同的值
(2)user_sub_token=$ USER (將shell中$USER的用法挪到ftp服務中來用)
(4)虛擬賬號配置獨立設定
- 原理: 虛擬使用者使用的是匿名使用者的引數控制,如果我們想讓不同的虛擬使用者有不同的權利,就必須給每個虛擬使用者設定自己的次配置檔案。
- 配置過程如下:
- 建立虛擬使用者的次配置目錄及次配置檔案
- 編輯配置檔案
將匿名使用者的上傳功能註釋掉
- 編輯次配置檔案,在裡面寫上允許虛擬使用者執行的動作
讓虛擬使用者可以實現上傳功能
- 測試:虛擬使用者westos1可以實現上傳功能,而westos2不行