檔案共享服務---ftp
==============================================================================
概述:
本章将主要介紹檔案共享服務中的ftp服務,内容包括:ftp的程式環境,配置檔案的相關介紹,以及如何配置基于虛拟使用者的vsftpd服務
1.介紹
★ftp:(file transfer protocol) 應用層,c/s架構,檔案共享; ★nfs,cifs: 檔案系統接口,網絡檔案系統; ☉nfs:(network file system ) 是unix和類unix系統上常見的基于核心的網絡檔案共享服務; ☉cifs:(common internet file system),是windows上常見的網絡檔案共享服務; samba:是在linux之上實作cifs(sma)協定來解決跨平台的檔案共享服務。 ★網絡存儲: ☉nas:network attached storage 網絡附加存儲,是一台檔案伺服器,通過網絡檔案的形式來提供檔案共享存儲(通常通過nfs或cifs協定來實作),檔案級别(已經有檔案系統了,直接挂載使用即可); ☉san:storage area network, 塊級别共享服務,分區-->格式化-->建立檔案系統;常用協定:ipsan, fcsan;
1.ftp
★c/s架構的: ☉client --> ftp(協定)-->server client:connect (用戶端發起連接配接請求) server:listen 伺服器監聽在21号端口,接受用戶端請求 ★連接配接: 指令連接配接:指令傳輸,連接配接将一直存在,直到使用者顯示退出或意外終止為止; 資料連接配接:資料傳輸,按需建立; ☉資料連接配接的建立模式: ◆主動模式: 伺服器通過20/tcp主動連接配接用戶端的指令連接配接端口向後最近一個空閑端口;port模式; ◆被動模式: 用戶端發出資料請求後,服務端會響應一個打開的臨時使用的随機端口,用戶端對此端口進行請求;pasv模式; ☉資料傳輸模式: 文本格式:ascii 二進制格式:binary ☉協定安全: ◆明文:資料、認證時傳輸賬号和密碼均是明文 ; ◆安全增強: ftp over ssl/tls:ftps ftp over ssh:sftp ◆虛拟使用者賬号; ☉c/s: ◆server: windows:serv-u, iis, ... 開源解決方案: wuftpd:washington university ftp daemon vsftpd:very secure ftp daemon proftpd, pureftpd, ... ◆client: gui:flashfxp, cute, filezilla, gftp, .. cli:ftp, lftp,wget,get,mget,curl ...
1.程式環境:
★主程式:/usr/sbin/vsftpd unit file:/usr/lib/systemd/system/vsftpd.service(centos 7) ★主配置檔案: /etc/vsftpd/vsftpd.conf ★文檔路徑映射: fedora使用者:/home/fedora/pub/a.txt --> ftp://host:port/pub/a.txt ☉使用者的家目錄映射: 通路vsftpd服務必須以某個系統使用者的身份進行;此使用者的家目錄即為文檔映射的根目錄; ☉匿名使用者: anonymous,映射為一個系統使用者,此使用者為 ftp,其目錄為 /var/ftp 下 ★安裝啟動服務 # yum install vsftpd -y # systemctl start vsftpd
示範:
1.啟動ftp服務并檢視端口
2.本地使用者登入ftp文檔路徑會映射為使用者自己的家目錄
1)在tao的家目錄下再建立一個名叫xiu的目錄
計算機登入如下
3.匿名使用者登入會映射為ftp使用者,文檔路徑為/var/ftp
浏覽器通路如下
4.使用lftp本地使用者登入發現可上傳可删除檔案,如下:
使用lftp匿名使用者登入,發現不能上傳删除檔案,如下:
這裡要注意匿名使用者登入很危險,是以必須不能有寫權限,如果想有寫權限的話建議對一個子目錄進行修改,如下:
2.配置檔案:vsftpd.conf
★格式:directive value,... directive:指令之前不能存在任何字元,包括空白(即頂格寫); ★匿名使用者: anonymous_enable=yes 啟用匿名使用者 anon_upload_enable=yes 匿名使用者上傳權限 anon_mkdir_write_enable=yes 匿名使用者建立目錄權限 anon_other_write_enable=yes 匿名使用者寫權限(删除) ★本地使用者: local_enable=yes 啟用本地系統使用者 write_enable=yes 允許本地使用者寫操作 ★pam認證服務:(pluggable authencate module 插入式認證子產品) ☉pam_service_name=vsftpd 表示調用pam的vsftpd配置檔案 /etc/pam.d/vsftpd :通過此檔案定義了該如何認證系統使用者賬号來通路ftp服務 ★切換目錄時的提示資訊: dirmessage_enable=yes 檔案要為 .messages (隐藏檔案) ★修改上傳檔案的屬主:預設為ftp使用者 chown_uploads=yes chown_username=username ★禁锢使用者于自己的家目錄: 會引入别的風險,是以,要求使用者對自己的家目錄不能有寫權限; ☉禁锢所有使用者于自己的家目錄 chroot_local_user=yes ☉禁锢部分使用者 ◆白名單:名單中的使用者不被禁锢; chroot_list_enable=yes chroot_list_file=/etc/vsftpd/chroot_list ◆黑名單:名單中的使用者被禁锢 chroot_local_user=no 注意: 隻用寫進禁锢檔案中的使用者才可以正常通路,沒寫進去的要想通路就必須把自己的寫權限去掉之後才可以通路。 ★user_list控制使用者通路vsftpd: ☉白名單 userlist_enable=yes userlist_deny=no ☉黑名單,預設 userlist_deny=yes ★其他相關配置詳見 man vsftpd.conf
1.匿名使用者設定
1)修改配置檔案使匿名使用者擁有上傳權限:anon_upload_enable=yes
2)anon_other_write_enable=yes 其他寫權限
2.認證服務
1)使用root使用者登入如下
2)pam認證機制
3.禁锢使用者于自己的家目錄
1)編輯配置檔案開啟chroot_local_user=yes
2)禁锢除檔案中指定的ftp本地使用者于其家目錄中(設定白名單)
4.user_list控制使用者通路vsftpd:
設定白名單,注意這裡的userlist_enable會和 禁锢使用者檔案chroot_local_user=yes 沖突,是以啟用前先把禁锢檔案注釋掉;
在配置檔案中添加userlist_deny=no,如下圖
虛拟使用者就是系統不存在的實體使用者,他隻能通路伺服器為其提供的ftp服務,但不能通路其他的額外資源資訊。是以如果想讓一些使用者可以對ftp服務中的内容具有寫權限,但又不允許通路其他系統資源,那我們就可以通過使用虛拟使用者來提高系統的安全性。在vsftpd中,虛拟使用者的認證方式是單獨的密碼庫檔案(pam_userdb),有可插入式認證子產品來完成認證,使用這種方式配置更加靈活也更加安全。具體過程如下:
★vsftpd依賴pam完成認證,pam存儲支援的認證方式,vsftpd都可調用; ★賬号密碼存儲于何處? 檔案、mysql、ldap、redis、... ★pam_mysql子產品 pam預設是不支援myaql的,要想讓pam利用mysql認證,要先安裝pam_mysql驅動子產品 centos 6:epel源 centos 7:編譯安裝 ★編譯: (1)編譯環境; (2)依賴關系:mariadb-devel, pam-devel (3)執行過程 # ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security/ # make install ★準備要映射成為的系統賬号: # mkdir -pv /ftproot/{pub,upload} # useradd -d /ftproot vuser # setfacl -m u:vuser:rwx /ftproot/upload ★準備基于mysql認證的pam配置檔案:/etc/pam.d/vsftpd.mysql ★配置vsftpd啟用虛拟使用者,并使用指定的pam service:vsftpd.conf pam_service_name=vsftpd.mysql guest_enable=yes guest_username=vuser ★配置每虛拟使用者擁有不同的權限:vsftpd.conf user_config_dir=/etc/vsftpd/vusers_conf ☉建立此檔案 # mkdir /etc/vsftpd/vusers_conf # touch username ☉權限配置指令 anon_upload_enable anon_mkdir_write_enable anon_other_write_enable
1.首選編譯安裝pam_mysql
2.編譯完成後,啟用資料庫,建立一個名叫vsftpd的資料庫,授權一個使用者,并在庫中建立表和資料
3.準備要映射成為的系統賬号,這個家目錄将成為虛拟使用者通路登入時的家目錄
4.準備基于mysql認證的pam配置檔案:/etc/pam.d/vsftpd.mysql
5.配置vsftpd啟用虛拟使用者,并使用指定的pam service:vsftpd.conf
6.使用ftp登入ftp服務,驗證能否登陸成功
認證登入失敗可檢視認證日志,我這裡此前登入失敗過兩次,是因為粗心導緻/etc/vsftpd/vsftpd.conf中pam_service_name=vsftpd.mysql和建立的pam配置檔案名稱不符
7.配置每虛拟使用者擁有不同的權限:vsftpd.conf
總結: