1. 程式人生 > >Linux——FTP伺服器部署,FTP安全部署(匿名,本地,虛擬使用者的管理)

Linux——FTP伺服器部署,FTP安全部署(匿名,本地,虛擬使用者的管理)

一、FTP的概念

FTP 是File Transfer Protocol(檔案傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制檔案的雙向傳輸

二、FTP的部署

  1. 服務端部署:
  • 安裝vsftpd
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 安裝 lftp
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 開啟vsftpd服務,並設定開機自啟動
    在這裡插入圖片描述
  • 開啟火牆,並新增ftp服務到火牆白名單
    在這裡插入圖片描述
    重新載入
    在這裡插入圖片描述
    檢視,ftp服務已經新增到火牆白名單中
    在這裡插入圖片描述
  • 使用ftp訪問主機(ls有內容顯示,則代表登入成功,否則不成功)
    在這裡插入圖片描述
  1. 關閉selinux
  • 顯示enforcing,則代表沒有關閉
    在這裡插入圖片描述
  • 編輯selinux配置檔案
    在這裡插入圖片描述
    將selinux的狀態改為disabled
    在這裡插入圖片描述
  • 重啟伺服器(因為這個修改是核心級的,所以我們需要重啟虛擬機器)
    在這裡插入圖片描述
  • 檢視,修改成功
    在這裡插入圖片描述
    3. 客戶端部署:
  • 安裝lftp在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試:登入伺服器成功(伺服器ip:172.25.254.100)
    在這裡插入圖片描述

三、FTP服務的基本資訊

  1. 軟體安裝包:vsftpd
  2. 預設釋出目錄:/var/ftp
  3. 協議介面:21/tcp
  4. 服務配置檔案:/etc/vsftpd/vsftpd.conf
    注意:編輯配置檔案後,一定要記得重啟服務
  5. 報錯id的解析:
    500 檔案系統許可權過大
    530 使用者認證失敗
    550 服務本身功能未開啟
    553 本地檔案系統許可權過小

四、FTP的安全部署

通過編輯服務配置檔案:/etc/vsftpd/vsftpd.conf,進行安全部署

  • 為了方便後續的測試,給服務端新建一個使用者,並設定密碼
    在這裡插入圖片描述
  1. 匿名使用者
    anonymous_enable=YES|NO    匿名使用者是否可以登陸 (YES為可以登入)
    在這裡插入圖片描述
    修改成NO,則匿名使用者不能登入
    在這裡插入圖片描述
    編輯配置檔案後,一定要重啟服務以後就不再贅述
    在這裡插入圖片描述
  • 測試:
    在這裡插入圖片描述
  1. 本地使用者
    (1) local_enable=YES|NO   本地使用者是否可以登陸
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試:
    在這裡插入圖片描述
    (2)write_enable=YES|NO   ftp是否對登陸使用者可寫
    在這裡插入圖片描述

    在這裡插入圖片描述
  • 測試:在這裡插入圖片描述
    若改為write_enable=NO,則不可寫
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
  1. 匿名使用者上傳
    預設情況下,匿名使用者是不能上傳的
    在這裡插入圖片描述
    實現匿名上傳的步驟
    (1)編輯配置檔案
    在這裡插入圖片描述
    在這裡插入圖片描述
    (2)修改匿名使用者目錄的所有組並給組新增可寫的許可權在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
  1. 匿名使用者家目錄修改
    anon_root=/目錄
    新建一個目錄/hello,並建立檔案,若測試端登入後可以直接看到這些檔案,則代表家目錄修改成功
    在這裡插入圖片描述
    在這裡插入圖片描述在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
  1. 匿名使用者上傳檔案預設許可權修改
    anon_umask=xxx
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
  1. 匿名使用者建立目錄
    anon_mkdir_write_enable=YES|NO
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
  1. 匿名使用者下載
    anon_world_readable_only=YES|NO 引數NO表示匿名使用者可以下載
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
    在這裡插入圖片描述
  1. 匿名使用者刪除
    anon_other_write_enable=YES|NO
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
  1. 匿名使用者使用的使用者身份和許可權修改
    在這裡插入圖片描述
    在這裡插入圖片描述
    可以看到westos使用者的uid是1001
    在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
  1. 最大上傳速率
    anon_max_rate=102400
  • 擷取檔案,用於測試上傳速率
    在這裡插入圖片描述
  • 不限速情況下上傳速率達到很大
    在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
    將最大上傳速率改為102400
    在這裡插入圖片描述
    可以看到上傳速率很慢
    在這裡插入圖片描述
  1. 最大連結數
    max_clients=1 表示最多有1個可以連線
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
    再重新開啟一個shell,進行連線,連線失敗
    在這裡插入圖片描述
  1. 本地使用者家目錄修改
    local root=/directory
    本地使用者登入,預設進入使用者的家目錄
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
    修改本地使用者家目錄
    在這裡插入圖片描述
    在這裡插入圖片描述
  1. 本地使用者上傳檔案許可權
    local umask=xxx
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
    14. 限制本地使用者登陸 
    (1)vim  /etc/vsftpd/ftpusers   使用者永久黑名單
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
    (2)vim  /etc/vsftpd/user list   使用者臨時黑名單(userlist deny=YES)
  1. 使用者白名單設定
    注意: 修改/etc/vsftpd/vsftpd.conf——>userlist deny=NO時
       /etc/vsftpd/user list 就變成使用者白名單(只有存在這個檔案裡的使用者才可以登入)
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
  2. 限制本地使用者瀏覽根目錄
    (1)限制所有使用者被鎖定在自己的家目錄
  • 預設情況下,本地使用者可以瀏覽根目錄
    在這裡插入圖片描述
  • 編輯配置檔案
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 給本地使用者家目錄減小許可權
    在這裡插入圖片描述
  • 測試
    在這裡插入圖片描述
    (2)使用者黑名單的建立
  • 編輯配置檔案
    在這裡插入圖片描述
    NO說明沒有將所有本地使用者鎖在自己的家目錄,本地使用者都可以自由訪問根目錄
    所以/etc/vsftpd/chroot_list 就變成了黑名單,只有這裡邊的本地使用者不可以瀏覽目錄
    在這裡插入圖片描述
  • 新增使用者到黑名單
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試
    westos使用者(在黑名單中),被限制瀏覽根目錄
    在這裡插入圖片描述
    student使用者可以正常瀏覽根目錄
    在這裡插入圖片描述
    (3)使用者白名單的建立
  • 編輯配置檔案
    在這裡插入圖片描述
    YES說明將所有本地使用者鎖在自己的家目錄,本地使用者都不可以自由訪問根目錄
    所以/etc/vsftpd/chroot_list 就變成了白名單,只有這裡邊的本地使用者可以瀏覽目錄
    在這裡插入圖片描述
  • 新增使用者到白名單
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 測試
    westos使用者(在白名單中),可以正常訪問根目錄
    在這裡插入圖片描述
    student使用者不可以正常訪問根目錄
    在這裡插入圖片描述

五、虛擬使用者的管理

(1) 建立虛擬使用者認證

  • 建立虛擬使用者的原因: 因為系統使用者登陸ftp服務,同時也可以登陸系統,這樣很不安全,所以我們要建立ftp虛擬使用者,使這些使用者只能登陸ftp
  • 建立方式:
  1. vim /etc/vsftpd/loginusers   名字任意
    在這裡插入圖片描述
    編輯內容:一行使用者名稱一行密碼,注意編輯的時候不要有空格出現
    在這裡插入圖片描述
  2. 加密檔案:因為檔案是明文的,很不安全,所以我們要對其加密
    在這裡插入圖片描述
    這裡檢視檔案型別,看到使用的是hash加密
    在這裡插入圖片描述
  3. 編輯策略檔案(驗證密碼與使用者是否一致的檔案) 檔名稱任意
    在這裡插入圖片描述
    在這裡插入圖片描述
    注意:
    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)虛擬賬號配置獨立設定
  1. 原理: 虛擬使用者使用的是匿名使用者的引數控制,如果我們想讓不同的虛擬使用者有不同的權利,就必須給每個虛擬使用者設定自己的次配置檔案。
  2. 配置過程如下:
  • 建立虛擬使用者的次配置目錄及次配置檔案
    在這裡插入圖片描述
  • 編輯配置檔案
    在這裡插入圖片描述
    將匿名使用者的上傳功能註釋掉
    在這裡插入圖片描述在這裡插入圖片描述
  • 編輯次配置檔案,在裡面寫上允許虛擬使用者執行的動作
    在這裡插入圖片描述
    讓虛擬使用者可以實現上傳功能
    在這裡插入圖片描述
  • 測試:虛擬使用者westos1可以實現上傳功能,而westos2不行
    在這裡插入圖片描述
    在這裡插入圖片描述