標籤:dha time chmod tran 最新版 oca 通道 範圍 run
檔案傳輸通訊協定FTP
1、File Transfer Protocol 早期的三個應用級協議之一 2、基於C/S結構 3、雙通道協議: 資料和命令串連 資料連線則是從命令決定傳輸資料開始到資料轉送結束,這個串連則關閉了 用戶端發起請求服務端響應、雙方正式建立串連。而結束,這是命令串連的正常工作邏輯 資料連線是臨時根據命令需求建立的、根本目的是為了用戶端上傳資料給服務端 資料連線誰給開啟 資料連線如果是為伺服器端主動去串連用戶端的稱為主動模式 由用戶端發請求、服務端響應、稱為被動模式 FTP多數都是工作在被動模式下,由用戶端發請求來串連伺服器 4、資料轉送格式: 二進位(預設)和文本 5、兩種模式:伺服器角度 主動(PORT style):伺服器主動串連 命令(控制):用戶端:隨機port --- 伺服器:tcp21 資料:用戶端:隨機port ---伺服器:tcp20 被動(PASV style):用戶端主動串連 命令(控制):用戶端:隨機port --- 伺服器:tcp21 資料:用戶端:隨機port --- 伺服器:隨機port 6、伺服器被動模式資料連接埠樣本: 227 Entering Passive Mode (172,16,0,1,224,59) 伺服器資料連接埠為:224*256+59
FTP軟體介紹:
FTP伺服器: Wu-ftpd,Proftpd,Pureftpd,ServU,IIS vsftpd:Very Secure FTP Daemon,CentOS預設FTP伺服器 高速,穩定,下載速度是WU-FTP的兩倍 ftp.redhat.com資料:單機最多可支援15000個並發用戶端軟體: ftp,lftp,lftpget,wget,curl ftp -A ftpserver port -A主動模式 –p 被動模式 lftp –u username ftpserver lftp [email protected] lftpget ftp://ftpserver/pub/file gftp:GUI centos5 最新版2.0.19 (11/30/2008) filezilla,CuteFtp,FlashFXP,LeapFtp IE ftp://username:[email protected]
FTP服務
狀態代碼: 1XX: 資訊 125:資料連線開啟 2XX: 成功類狀態 200:命令OK 230:登入成功 3XX: 補充類 331:使用者名稱OK 4XX: 用戶端錯誤 425:不能開啟資料連線 5XX: 伺服器錯誤 530:不能登入使用者認證: 匿名使用者:ftp,anonymous,對應Linux使用者ftp 系統使用者:Linux使用者,使用者/etc/passwd,密碼/etc/shadow 虛擬使用者:特定服務的專用使用者,獨立的使用者/密碼檔案 nsswitch:network service switch名稱解析架構 pam:pluggable authentication module 使用者認證 /lib64/security /etc/pam.d/ /etc/pam.conf
vsftpd服務
1、由vsftpd包提供2、不再由xinetd管理3、使用者認證設定檔: /etc/pam.d/vsftpd4、服務指令碼: /usr/lib/systemd/system/vsftpd.service /etc/rc.d/init.d/vsftpd5、設定檔: /etc/vsftpd/vsftpd.conf man 5 vsftpd.conf 格式:option=value 注意:= 前後不要有空格6、匿名使用者(映射為系統使用者ftp )共用檔案位置: /var/ftp7、系統使用者共用檔案位置: 使用者家目錄8、虛擬使用者共用檔案位置: 為其映射的系統使用者的家目錄9、命令連接埠 listen_port=2110、主動模式連接埠 connect_from_port_20=YES 主動模式連接埠為20 ftp_data_port=20 (預設) 指定主動模式的連接埠11、被動模式連接埠範圍 linux 用戶端預設使用被動模式 windows 用戶端預設使用主動模式 pasv_min_port=6000 0為隨機分配 pasv_max_port=601012、使用當地時間 use_localtime=YES 使用當地時間(預設為NO,使用GMT)13、匿名使用者 anonymous_enable=YES 支援匿名使用者 no_anon_password=YES(預設NO) 匿名使用者略過口令檢查 anon_world_readable_only (預設YES) 只能下載全部讀的檔案 anon_upload_enable=YES 匿名上傳,注意:檔案系統許可權 anon_mkdir_write_enable=YES 匿名建目錄 anon_umask=0333 指定匿名上傳檔案的umask,預設077 anon_other_write_enable=YES 可刪除和修改上傳的檔案 chown_uploads=YES(預設NO) 指定上傳檔案的預設的所有者和許可權 chown_username=wang chown_upload_mode=064414、Linux系統使用者 local_enable=YES 是否允許linux使用者登入 write_enable=YES 允許linux使用者上傳檔案 local_umask=022 指定系統使用者上傳檔案的預設許可權 guest_enable=YES 所有系統使用者都映射成guest使用者 guest_username=ftp 配合上面選項才生效,指定guest使用者 local_root=/ftproot guest使用者登入所在目錄15、禁錮所有系統使用者在家目錄中 chroot_local_user=YES(預設NO,不禁錮)禁錮系統使用者16、禁錮或不禁錮特定的系統使用者在家目錄中,與上面設定功能相反 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list 當chroot_local_user=YES時,則chroot_list中使用者不禁錮 當chroot_local_user=NO時,則chroot_list中使用者禁錮17、wu-ftp日誌: 預設啟用 xferlog_enable=YES (預設)啟用記錄上傳下載日誌 xferlog_std_format=YES (預設) 使用wu-ftp日誌格式 xferlog_file=/var/log/xferlog (預設)可自動產生 vsftpd日誌: 預設不啟用 dual_log_enable=YES 使用vsftpd日誌格式,預設不啟用 vsftpd_log_file=/var/log/vsftpd.log(預設)可自動產生18、登入提示資訊 ftpd_banner="welcome to mage ftp server" banner_file=/etc/vsftpd/ftpbanner.txt 優先上面項生效 目錄訪問提示資訊 dirmessage_enable=YES (預設) message_file=.message(預設) 資訊存放在指定目錄下.message19、使用pam(Pluggable Authentication Modules)完成使用者認證 pam_service_name=vsftpd pam設定檔:/etc/pam.d/vsftpd /etc/vsftpd/ftpusers 預設檔案中使用者拒絕登入正常情況下,任何一個檔案通過網路服務訪問時,他應該受控於兩個維度 1、受控於軟體本身定義的存取控制規則 2、受控於檔案系統
vsftpd匿名使用者配置樣本
簡單樣本:只要安裝好之後啟動服務就可以正常使用ftp1、安裝vsftpd軟體 [[email protected] ~]#yum -y install vsftpd2、啟動vsftpd服務 [[email protected] ~]#systemctl start vsftpd3、通過用戶端來訪問做個簡單測試 [[email protected] ~]#lftp 192.168.137.56 lftp 192.168.137.56:~> ls drwxr-xr-x 2 0 0 6 Aug 03 2017 pub lftp 192.168.137.56:/> cd pub lftp 192.168.137.56:/pub> ls lftp 192.168.137.56:/pub> ls -rw-r--r-- 1 0 0 23 Oct 22 12:26 issue lftp 192.168.137.56:/pub> lcd /tmp lcd ok, local cwd=/tmp lftp 192.168.137.56:/pub> mget issue 23 bytes transferred lftp 192.168.137.56:/pub> bye [[email protected] ~]#ls /tmp/ issue4、把服務端共用的檔案許可權改成600[[email protected] /var/ftp/pub]#chmod 600 issue [[email protected] /var/ftp/pub]#lltotal 4-rw------- 1 root root 23 Oct 22 20:26 issue5、再次通過用戶端串連然後下載此檔案 [[email protected] ~]#lftp 192.168.137.56 lftp 192.168.137.56:/> cd pub/ lftp 192.168.137.56:/pub> ls -rw------- 1 0 0 23 Oct 22 12:26 issue lftp 192.168.137.56:/pub> mget issue mget: Access failed: 550 Failed to open file. (issue) lftp 192.168.137.56:/pub> 配置匿名使用者上傳、下載、等功能: 修改設定檔,開啟允許匿名使用者上傳功能 [[email protected] /etc/vsftpd]#vim vsftpd.conf #anon_upload_enable=YES anon_upload_enable=YES 通過用戶端驗證 [[email protected] ~]#lftp 192.168.137.56 lftp 192.168.137.56:~> lcd /etc/ lcd ok, local cwd=/etc lftp 192.168.137.56:~> put fstab put: Access failed: 553 Could not create file. (fstab) lftp 192.168.137.56:/> 正常情況下,ftp的使用者anonymous被映射為ftp使用者,而預設共用的pub目錄屬主屬組預設為root,而ftp使用者被映射為其它使用者是沒有寫入權限,所以導致無法上傳,建議不要修改pub的許可權,最好建立一個目錄用來上傳 解決方案:在pub同級目錄下建立一個目錄專門用來上傳,修改目錄的所屬組和屬主許可權為ftp [[email protected] /var/ftp]#mkdir upload [[email protected] /var/ftp]#ls pub upload [[email protected] /var/ftp]#ll total 0 drwxr-xr-x 2 root root 19 Oct 22 20:26 pub drwxr-xr-x 2 root root 6 Oct 22 20:52 upload [[email protected] /var/ftp]#chown -R ftp.ftp upload/ [[email protected] /var/ftp]#ll -ld upload/ drwxr-xr-x 2 ftp ftp 6 Oct 22 20:52 upload/ 再次驗證用戶端 [[email protected] ~]#lftp 192.168.137.56/upload cd ok, cwd=/upload lftp 192.168.137.56:/upload> lcd /etc lcd ok, local cwd=/etc lftp 192.168.137.56:/upload> put fstab 595 bytes transferred lftp 192.168.137.56:/upload> 切換到伺服器上查看檔案 [[email protected] /var/ftp]#cd upload/ [[email protected] /var/ftp]#ls -l upload/ total 4 -rw------- 1 ftp ftp 595 Oct 22 20:55 fstab把上傳的檔案屬主改成別的使用者、並修改檔案許可權: 編輯設定檔 [[email protected] /etc/vsftpd]#vim vsftpd.conf #chown_uploads=YES #chown_username=whoever 改為 chown_uploads=YES chown_username=cobbler chown_upload_mode=0644 建立cobbler使用者 [[email protected] /etc/vsftpd]#useradd cobbler 重啟vsftpd服務 [[email protected] /etc/vsftpd]#systemctl restart vsftpd 通過用戶端驗證此舉設定是否成功 [[email protected] ~]#lftp 192.168.137.56/upload cd ok, cwd=/upload lftp 192.168.137.56:/upload> lcd /etc lcd ok, local cwd=/etc lftp 192.168.137.56:/upload> put passwd 1199 bytes transferred lftp 192.168.137.56:/upload> ls 從伺服器端查看檔案屬性 [[email protected] /var/ftp]#cd upload/ [[email protected] /var/ftp/upload]#ll total 8 -rw------- 1 ftp ftp 595 Oct 22 20:55 fstab -rw-r--r-- 1 cobbler ftp 1199 Oct 22 21:04 passwd 在用戶端串連到伺服器嘗試能否建立目錄 lftp 192.168.137.56:/upload> mkdir test mkdir: Access failed: 550 Permission denied. (test) lftp 192.168.137.56:/upload> rm fstab rm: Access failed: 550 Permission denied. (fstab) lftp 192.168.137.56:/upload> rm passwd rm: Access failed: 550 Permission denied. (passwd) lftp 192.168.137.56:/upload> 需要允許匿名使用者建立刪除檔案或者目錄需要在伺服器的設定檔裡面開啟如下兩項 [[email protected] /etc/vsftpd]#vim vsftpd.conf anon_mkdir_write_enable=YES anon_other_write_enable=YES 修改完之後重啟服務 [[email protected] /etc/vsftpd]#systemctl restart vsftpd 在用戶端上驗證 [[email protected] ~]#lftp 192.168.137.56/upload cd ok, cwd=/upload lftp 192.168.137.56:/upload> mkdir test mkdir ok, ‘test‘ created lftp 192.168.137.56:/upload> ls -rw------- 1 14 50 595 Oct 22 12:55 fstab -rw-r--r-- 1 1000 50 1199 Oct 22 13:04 passwd drwx------ 2 14 50 6 Oct 22 13:10 test lftp 192.168.137.56:/upload> rm fstab rm ok, ‘fstab‘ removed lftp 192.168.137.56:/upload> rm passwd rm ok, ‘passwd‘ removed lftp 192.168.137.56:/upload> rmdir test rmdir ok, ‘test‘ removed lftp 192.168.137.56:/upload> ls lftp 192.168.137.56:/upload>
vsftpd匿名使用者配置樣本
建立一個系統使用者,並修改密碼 [[email protected] /etc/vsftpd]#useradd ilinux [[email protected] /etc/vsftpd]#echo 123456|passwd --stdin ilinux Changing password for user ilinux. passwd: all authentication tokens updated successfully.用戶端登入剛剛在伺服器端建立的系統使用者,登入上來之後顯示的是系統使用者的名稱,而匿名使用者沒有 [[email protected] ~]#lftp -u ilinux 192.168.137.56 Password: lftp [email protected]:~> ls lftp [email protected]:~> lcd /etc/ lcd ok, local cwd=/etc lftp [email protected]:~> put issue 23 bytes transferred lftp [email protected]:~> ls -rw-r--r-- 1 1001 1001 23 Oct 22 13:19 issue lftp [email protected]:~> 在伺服器端ilinux的家目錄裡面查看從用戶端上傳上來的檔案每個使用者登入ftp之後訪問的都是使用者的家目錄為什麼匿名使用者存取的是/var/ftp目錄,匿名使用者存取的也是家目錄,是ftp的家目錄 [[email protected] /var/ftp/upload]#grep "^ftp" /etc/passwd ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin [[email protected] /var/ftp/upload]#ls /home/ilinux/ issue系統使用者和匿名使用者受控方式是不一樣的,就算禁止匿名使用者上傳下載,系統使用者不受影響、正常能上傳和下載
把系統使用者映射為來賓帳號guest
先建立來賓使用者和來賓的目錄,然後需要把建立的目錄去掉寫入權限要不然通過用戶端驗證會報錯誤提示 [[email protected] /var/ftp/upload]#useradd -d /data/ftproot vsguest [[email protected] /var/ftp/upload]#chmod -w /data/ftproot/ [[email protected] /var/ftp/upload]#ls -ld /data/ftproot/ dr-x------ 2 vsguest vsguest 62 Oct 22 21:56 /data/ftproot/ [[email protected] /var/ftp/upload]#chmod +rx !$ chmod +rx /data/ftproot/ [[email protected] /var/ftp/upload]#ls -ld /data/ftproot/ dr-xr-xr-x 2 vsguest vsguest 62 Oct 22 21:56 /data/ftproot/ [[email protected] /var/ftp/upload]#編輯設定檔增加兩項選項 [[email protected] /etc/vsftpd]#vim vsftpd.conf #guest user guest_enable=YES guest_username=vsguest重啟服務 [[email protected] /etc/vsftpd]#systemctl restart vsftpd複製測試檔案到來賓目錄下,能區分開來是在此目錄下 [[email protected] /etc/vsftpd]#cp /etc/vsftpd/vsftpd.conf /data/ftproot/在用戶端上測試:這裡上面說過要把來賓的目錄寫入權限去掉要不然會提示500的錯誤提示 [[email protected] ~]#lftp -u ilinux 192.168.137.56 Password: lftp [email protected]:~> pwd ftp://[email protected] lftp [email protected]:~> ls ls: Login failed: 500 OOPS: vsftpd: refusing to run with writable root inside chroot() lftp [email protected]:~> ls ls: Login failed: 500 OOPS: vsftpd: refusing to run with writable root inside chroot() lftp [email protected]:~> ls lftp [email protected]:/> ls -rw------- 1 0 0 5129 Oct 22 14:00 vsftpd.conf lftp [email protected]:/> 在伺服器上把剛才映射為來賓帳號的那兩項注釋掉然後再通過用戶端測試看是不是回到了它自己的家目錄裡面 [[email protected] /etc/vsftpd]#vim vsftpd.conf #guest_enable=YES #guest_username=vsguest重啟服務 [[email protected] /etc/vsftpd]#systemctl restart vsftpd然後在home下的ilinux目錄下查看裡面的檔案,再通過用戶端查看裡面的是否和這裡的看到的是一樣的檔案 [[email protected] /var/ftp/upload]#ls /home/ilinux/ issue測試用戶端上: [[email protected] ~]#lftp -u ilinux 192.168.137.56 Password: lftp [email protected]:~> ls -rw-r--r-- 1 1001 1001 23 Oct 22 13:19 issue lftp [email protected]:~> lftp [email protected]:~> cd /etc/ 一旦允許系統使用者登入以後有個悲劇性的問題,它可以隨意遊盪在整個系統之上,不光是自己的家目錄,如果伺服器上有敏感資訊,這樣一來使用者登入上去之後直接可以下載造成資訊泄露,建議最好使用者登入上來之後只能呆在自己的家目錄裡面,別的目錄不讓它隨意切換
禁錮系統使用者在家目錄中樣本:
要禁錮哪個使用者確保這個使用者的家目錄沒有寫入權限,要不然會報錯,不讓使用不過禁錮使用者不常用修改設定檔裡面的參數 [[email protected] /etc/vsftpd]#vim vsftpd.conf chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list建立一個使用者 [[email protected] /etc/vsftpd]#useradd ik8s [[email protected] /etc/vsftpd]#echo 123456|passwd --stdin ik8s Changing password for user ik8s. passwd: all authentication tokens updated successfully.把使用者家目錄的寫入權限去掉 [[email protected] /etc/vsftpd]#chmod -w /home/ik8s/建立要禁錮的使用者列表 [[email protected] /etc/vsftpd]#vim /etc/vsftpd/chroot_list ik8s重啟服務 [[email protected] /etc/vsftpd]#systemctl restart vsftpd用戶端測試: [[email protected] ~]#lftp -u ilinux,123456 192.168.137.56 lftp [email protected]:~> cd /etc/ lftp [email protected]:/etc> exit [[email protected] ~]#lftp -u ik8s,123456 192.168.137.56 lftp [email protected]:~> cd /etc cd: Access failed: 550 Failed to change directory. (/etc) lftp [email protected]:/> ls lftp [email protected]:/>
網路檔案分享權限設定服務-vsftp