100 likes | 266 Views
架設檔案伺服器. FTP 通訊協定. 檔案傳輸通訊協定 (FTP, file transfer protocol) 能在網際網路上傳輸檔案 FTP 依照 TCP ,區分 client & server ,伺服器會在主機的預設通訊埠號 21 傾聽連結需求 FTP 使用兩個 TCP 連接:第一個連接 ( 通訊埠號 21) 用於 client & server 間的指令傳輸;第二個連接 ( 通訊埠號 20) 用於 client & server 間的資料傳輸. 連線步驟. 連接 FTP 伺服器 以 TCP 連接至伺服器的通訊埠號 21 伺服器回傳歡迎訊息 登入
E N D
FTP通訊協定 • 檔案傳輸通訊協定(FTP, file transfer protocol)能在網際網路上傳輸檔案 • FTP依照TCP,區分client & server,伺服器會在主機的預設通訊埠號21傾聽連結需求 • FTP使用兩個TCP連接:第一個連接(通訊埠號21)用於client & server間的指令傳輸;第二個連接(通訊埠號20)用於client & server間的資料傳輸
連線步驟 • 連接FTP伺服器 • 以TCP連接至伺服器的通訊埠號21 • 伺服器回傳歡迎訊息 • 登入 • 伺服器要求輸入帳號 • 客戶端輸入帳號;伺服器檢查帳號 • 伺服器要求輸入密碼 • 客戶端輸入密碼;伺服器檢查密碼 • 存取伺服器上的檔案資源 • 離開
FTP客戶端軟體 • Linux:e.g. ftp • ls:列出目錄檔案清單 • cd:切換目錄 • get:下載伺服器的檔案至客戶端 • put:上傳客戶端的檔案至伺服器 • asc:設定傳輸格式為ASCII文字模式 • bin:設定傳輸格式為binary二進位模式 • mkdir:在伺服器上建立新目錄 • pwd:顯示目前的工作目錄路徑 • quit:離開ftp • Windows:e.g. FileZilla
伺服器套件vsftpd • Very secure FTPD • 支援虛擬主機 • 可使用虛擬帳號(有別於一般使用者登入主機的帳號) • 帳號個別設定 • 調節頻寬 • 支援IPv6 • 支援SSL加密連線
檢查是否已經安裝vsftp套件:rpm -qa | grepvsftpd • 用yum安裝:yum -y install vsftpd • 檢查套件安裝目錄與檔案:rpm -qlvsftpd | more • /usr/sbin/vsftpd:執行檔案 • /etc/vsftpd/:伺服器設定檔的目錄 • /etc/vsftpd/vsftpd.conf:主設定檔 • /var/ftp/:預設的FTP站臺根目錄 • systemctl enable vsftpd.service:開機時自動啟動 • systemctl start vsftpd.service:啟動服務 • systemctl restart vsftpd.service:重啟服務 • setsebool -P allow_ftpd_full_access 1
vsftpd的基本設定 • 「匿名使用者」(用帳號ftp or anonymous登入)是虛擬帳號,登入後預設進入/var/ftp/站臺根目錄 • 「本機使用者」用原有之帳號和密碼登入FTP伺服器,登入後會進入各自的家目錄,擁有各自的權限,不會互相影響 • 可以同時支援兩種登入類型 • 在主設定檔/etc/vsftpd/vsftpd.conf,設定值格式:設定參數=值 • anonymous_enable=YES:允許匿名登入 • local_enable=YES:允許伺服器中的本機帳號(使用系統密碼)登入,登入後預設進入該使用者的家目錄
write_enable=YES:登入後允許對FTP的檔案或目錄進行「寫入」,包含上傳、新增、刪除等動作。write_enable=YES:登入後允許對FTP的檔案或目錄進行「寫入」,包含上傳、新增、刪除等動作。 • 若要讓匿名登入也可以上傳檔案 • anonymous_enable=YES • write_enable=YES • anon_upload_enable=YES • connect_from_port_20=YES • local_umask=022:上傳的檔案之預設存取權限(rw-r--r--) • dirmessage_enable=YES:啟用目錄內的訊息 • xferlog_enable=YES:將傳送接收訊息寫入記錄檔 • 嘗試關閉匿名登入
加強安全設定 • FTP通訊協定並未支援傳輸內容加密的功能,所以客戶端與伺服器的傳輸都是「明碼」 • 使用某主機帳號登入,雖然預設是在該帳號的家目錄,仍然可以使用cd指令切換至其他目錄、或用ls指令列出其他目錄的內容 • chroot_local_user=YES • allow_writeable_chroot=YES • change root directory;將使用者限制在登入目錄,只允許在此或其下的子目錄操作
禁止登入名單/etc/vsftpd/user_list,例如將系統帳號root、mail、news等列入名單(因為FTP協定使用明碼傳輸資訊)禁止登入名單/etc/vsftpd/user_list,例如將系統帳號root、mail、news等列入名單(因為FTP協定使用明碼傳輸資訊) • E.g. echo “Mike” >> /etc/vsftpd/user_list • 允許匿名帳號上傳檔案 • anonymous_enable=YES • anon_upload_enable=YES • 由於匿名登入時,是以ftp的帳號與群組存取目錄與檔案,所以必須修改目錄/var/ftp/pub/的存取權限 • chownroot:ftp /var/ftp/pub;chgrp ftp /var/ftp/pub • chmodg+w /var/ftp/pub