1 / 40

Chapter 22 簡易 FTP Server 架設 -- Wu FTP

Chapter 22 簡易 FTP Server 架設 -- Wu FTP. 22.1 原理. File Transfer Protocol ( FTP ) 進行 Server 端與 Client 端之間的檔案傳送的功能 以 TCP 封包的模式進行 Server 與 Client 之間的連線,當連線建立之後,使用者可以在 Client 端連上 Server 端進行檔案的下載與上傳. FTP 的功能. 不同等級的使用者身份,三種主要的身份 real user guest anonymous 命令記錄與登錄檔記錄

giulio
Download Presentation

Chapter 22 簡易 FTP Server 架設 -- Wu FTP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 22 簡易 FTP Server 架設 -- Wu FTP

  2. 22.1 原理 • File Transfer Protocol ( FTP ) • 進行 Server 端與 Client 端之間的檔案傳送的功能 • 以 TCP 封包的模式進行 Server 與 Client 之間的連線,當連線建立之後,使用者可以在 Client 端連上 Server 端進行檔案的下載與上傳

  3. FTP 的功能 • 不同等級的使用者身份,三種主要的身份 • real user • guest • anonymous • 命令記錄與登錄檔記錄 • syslogd daemon 進行資料的紀錄 • 使用者下達過的命令與使用者傳輸資料的紀錄 • 限制或解除使用者家目錄所在 • chroot (change root)

  4. FTP 正常情況下的連線 • 主動模式(active) • 建立指令通道 (port 21) • Client request (SYN) • ftp-command port : 21 • Server response (SYN 與 ACK) • Client ACK • 建立資料傳輸通道(port 20) • Client request (SYN) • ftp-command port : 21 • Server request (SYN) • ftp-data port : 20 • Client response (ACK)

  5. Active mode client FTP server port > 1024 port 21 (ftp-command) port 20 (ftp-data) port > 1024

  6. 在 NAT 或者防火牆後端的 FTP Client 連線問題 • 個人PC 經過NAT主機連線 • FTP Server 看到的 IP 是 NAT 主機的 • FTP Server 主動由 port 20 向 NAT 主機的 >1024 port 要求建立連線 (Error)

  7. Passive mode • 建立指令通道 (port 21) • Same as active mode • 建立資料傳輸通道(port 20) • Client request (SYN) • ftp-command port : 21 • 告訴 FTP Server 使用 PASV 模式(passive)的方式來進行資料傳輸 • Server response • Server 隨機選取一個大於 1024 的埠口,並經由命令通道告訴 client 端那個大於 1024 的埠口,開始等待 client 端的連線 • Client request (SYN) • Server response (ACK)

  8. Passive mode NAT server client FTP server port > 1024 port 21 (ftp-command) port 20 (ftp-data) port > 1024

  9. 22.2 套件安裝 • rpm -qa | grep ftp ncftp-3.0.3-6 ftp-0.17-12 wu-ftpd-2.6.1-20 • wu-ftpd • FTP 伺服器 • ftp • ftp client 端工具 • ncftp • 提供匿名登入的 FTP 網站的 client 端的連線 FTP 軟體

  10. 22.3 Server 端設定 1. Wu FTP 的結構 • 設定檔 • /etc/ftpaccess • /etc/ftpusers • 檔案內的使用者都不能使用 FTP 的服務 • /etc/ftphosts • 允許或拒絕某部主機或者某位使用者是否能夠登入 FTP 主機 • /etc/xinetd.d/wu-ftpd • 啟動 FTP 的 daemon 設定檔案

  11. Wu FTP 的結構 • 執行檔 • ftpcount : 計算『目前連線的人數 • ftpwho : 顯示目前連線的使用者資訊 • ftprestart : 重新啟動 ftp • ftpshut : 指定時候關閉 FTP • in.ftpd : Wu FTP 的 daemon • 用戶端的使用執行檔 • ftp • ncftp

  12. 2. 最簡單的 ftpaccess 設定檔 1. 設定人物群組名稱 class <人物群組名稱> <用戶身份1,用戶身份2,..> <允許連線的來源> class  all   real,guest,anonymous  * class allone real,guest,anonymous *.edu.tw class alltwo guest,anonymous !*.chinait.com !61.141.0.0/16 * 2. 設定FTP管理員的e-mail位址與主機名稱 email root@localhost hostname vbird.adsldns.org

  13. ftpaccess 設定檔 (Cont.) 3. 允許同一次連線當中,錯誤登入的次數 loginfails 5 4. 向使用者顯示README檔案的內容訊息 <readme><README*><動作> readme  README*    login readme  README*    cwd=* • Login : 登入 • cwd=* : 變換目錄 5. 將檔案的內容直接顯示在螢幕上面 message /welcome.msg         login message .message                cwd=*

  14. ftpaccess 設定檔 (Cont.) 6. 是否提供使用者線上立即執行的指令 <指令名稱> <是否允許/yes/no> <針對的對象是誰> compress yes            all tar             yes            all chmod           no              guest,anonymous delete          no              anonymous overwrite       no              anonymous rename          no              anonymous umask           no              all

  15. ftpaccess 設定檔 (Cont.) 7. 將使用者執行的部分指令歷程記錄到 /var/log/xferlog<log><欲登錄的項目><記錄的使用者身份><何種動作> log transfers anonymous,guest,real inbound,outbound

  16. ftpaccess 設定檔 (Cont.) 9. 匿名者的密碼驗證 <passwd-check><no|trivial|rfc822><動作> • no :不需要密碼確認 • trivial :密碼當中必須含有 @ 這個 e-mail 的字元 • rfc822:密碼必須符合 frc822 的規範 • 動作 • warn:使用者輸入錯誤密碼時僅顯示警告訊息,仍允許其登入 • enforce:使用者輸入錯誤密碼,顯示警告訊息並中斷連線喔 passwd-check rfc822 warn <deny-email> deny-email IE?0User@ deny-email mozilla@

  17. ftpaccess 設定檔 (Cont.) 10. 設定允許與不許登入 FTP 伺服器的使用者與群組  deny-uid %-99 %65534- deny-gid %-99 %65534- allow-uid ftp allow-gid ftp deny-uid testing testqq deny-uid 100-1000

  18. 3. Super daemon 管理 FTP • /etc/xinetd.d/wu-ftpd service ftp {        disable = no        …… } • /etc/rc.d/init.d/xinetd restart • netstat -tl  • ftp localhost 

  19. 4.歡迎畫面 • message /welcome.msg         login • /welcome.msg Welcome to my FTP site. Now is the time ==> %T The host name is %L You are %U and from %R There are %N person in my site, now. If you have any problem please call me %E

  20. 變數 • %T 本地端主機時間 • 格式為 Fri Mar 21 11:28:50 2003 • %C 使用者目前所在的目錄 • %R 遠端主機的 IP 或 hostname • %L 本地端主機的名稱或 IP • %E 系統管理員的 email • %U 使用者的登入帳號名稱 • %MFTP 主機所能允許的使用者最大連線數量 • %NFTP 主機目前已經連線的使用者數量

  21. 5.限制最大線上人數 • etc/ftpaccess <limit> <群組名稱> <最大連線數> <時間> <顯示檔案> limit all 20 Any /etc/ftpmaxnumber limit guest 10 Any/etc/ftpmaxnumber limit anonymous 5  Any0800-2000 /etc/ftpmaxnumber • /etc/ftpmaxnumber 這裡已經太多人啦!請您等一下再進入! ^_^

  22. 6.限制與取消使用者的家目錄 • For real users • /etc/ftpaccess restricted-uid * restricted-uid 200-400 test testing unrestricted-uid test testing

  23. 7.時間相關的設定項目 (/etc/ftpaccess) • timeout accept 120 • FTP daemon等待PASV 的連線時間(client 回應) • timeout connect 120 • 等待 client 端回應的ACK • timeout data 2400 • FTP 可以讓我們下載或上傳一個檔案的最多時間 • timeout idle timeout maxidle 1800 • 多久沒有動作會被踢掉 • limit-time anonymous 30 limit-time guest    100 • 一次連線內,多久會被強制斷線

  24. 8.流量與上傳下載的限制項目(/etc/ftpaccess) • 整體檔案數目與檔案容量的限額 <file-limit> <in|out|total> <數目或 bytes 數> <身份群組> file-limit out 32 alltwo data-limit in  10240 alltwo • 限制流量的方法 <throughput> <根目錄> <次目錄> <檔名> <bytes/s> <倍數> <位址>throughput /var/ftp  *      * 10240 - * throughput /home/test /public_html * 51200 - * throughput /home/test /realdown  * oo- *.vbird.org

  25. 10. anonymous 的根目錄與建立可上傳目錄 • vi /etc/ftpaccess • anonymous-root /var/ftp • upload <家目錄> <次目錄> <yes|no> <檔案所屬人> <群組> <權限> <目錄> upload /home/ftp/public /upload  yes ftp sys 0666 upload /home/ftp/public /upfiles yes ftp sys 0666 nodirs

  26. 11.針對人物的限制設定 • real, guest, anonymous • /etc/ftpaccess nice <數值> <使用者群組或身份> defumask <數值> <使用者群組或身份> nice 10 anonymous nice -5 real defumask 022 real defumask 002 anonymous

  27. 12.拒絕與開放某些使用者的登入 • /etc/ftpaccess • <deny> <位址或主機名稱> <回覆給使用者訊息的文件>deny 192.168.0.100  /etc/ftpdeny.msg deny *.adsldns.org  /etc/ftpdeny.msg • <deny-uid> <帳號、UID或範圍>deny-uid %-499 %65000- deny-gid %-499 %65000- allow-uid ftp allow-gid ftp

  28. 使用額外檔案來抵擋:/etc/ftphosts • <deny> <使用者帳號> <不許連線的IP或主機名稱> • <allow> <使用者帳號> <不許連線的IP或主機名稱> denytest 192.168.0.0/24 allow testing 192.168.1.0:255.255.255.0 deny test2    192.168.5.10 allow test2 *

  29. 14.建立 passive port • /etc/ftpaccess <passive ports> <CIDR 位址> <最小 port> <最大 port> <pasv-allow> <人員身份> <位址> passive ports 0.0.0.0/0 65501 65505 pasv-allow all *

  30. Example • 三個群組 • real, guest, anonymous • real • 僅允許來自 140.116.0.0/16 網域 • guest, anonymous • 允許來自所有網域,但不允許來自 61.141.0.0/16 網域 • 允許使用 passive ports • port number 為 65501 - 65510 • 小於 499 以及大於 65000 的 UID 與 GID 都被拒絕登入

  31. Example • 最大線上人數限制為 30 人 • guest 最多 10 人, anonymous 最多為 5 人 • 實體用戶 mysiteuser • 被限制僅能在其家目錄當中工作,無法離開其家目錄 • anonymous登入者 • 家目錄 : /var/ftp • 限制 anonymous 一次連線最久 10 分鐘 • 最多僅能下載 20 個文件,以及 10MB 的資料量 • 上傳僅允許上傳到 /var/ftp/upload • 預設檔案擁有者為 ftp,群組是 sys

  32. 1.使用者的帳號 • groupadd myftpusers • useradd -m -g myftpusers -s /sbin/nologin wwwuser1 • useradd -m -g myftpusers -s /sbin/nologin wwwuser2 • useradd -m -g myftpusers -s /sbin/nologin ftpuser • passwd wwwuser1

  33. 2. /etc/ftpaccess 1.  針對 Server 的設定項目 • 針對群組的設定項目 class  all   real,guest,anonymous  140.116.0.0/16 class  allreal         real                    140.116.0.0/16 class  allguest      guest        !61.141.0.0/16  * class  allanonymous    anonymous   !61.141.0.0/16  * • 其他主機相關的設定項目 email           vbird@tsai.adsldns.org hostname        tsai.adsldns.org shutdown        /etc/shutmsg loginfails      3 log   transfers  anonymous,guest,real    inbound,outbound passwd-check    rfc822          warn

  34. 針對 Server 的設定項目 • 訊息管理 readme          README*         login readme          README*         cwd=* message        /welcome.msg    login message        .message        cwd=* • 指令管理 compress yes            all tar             yes            all chmod           no              guest,anonymous delete          no              anonymous overwrite       no              anonymous rename          no              anonymous

  35. 針對 Server 的設定項目 • 人物登入管理 deny-uid        %-499        %65000- deny-gid        %-499        %65000- allow-gid       myftpusers • 時間相關的設定值 timeout data    2400 timeout idle    1800 timeout maxidle 1800 • 主機最大連線人數設定 limit  all     30      Any     /etc/ftpmaxnumber • 被動的 port 設定 passive ports   0.0.0.0/0       65501   65510

  36. 針對實體, guest用戶的設定 2.  針對實體用戶的設定 restricted-uid  mysiteuser 3.  針對 guest 用戶的設定 limit    allguest   10   Any     /etc/ftpmaxnumber guestuser   wwwuser1      wwwuser2     ftpuser

  37. 針對guest用戶的設定 • www users guest-root  /home/wwwuser1/public_html  wwwuser1 guest-root  /home/wwwuser2/public_html   wwwuser2 throughput  /home/wwwuser1/public_html  * * 102400  -   * throughput  /home/wwwuser2/public_html  * * 102400  -   * • FTP users guest-root      /home/ftpuser      ftpuser

  38. 針對 anonymous 用戶的設定 • 4.  針對 anonymous 用戶的設定 limit allanonymous 5 Any /etc/ftpmaxnumber anonymous-root  /var/ftp limit-time   anonymous   10 file-limit      out          20              allanonymous data-limit out     10000000        allanonymous upload /var/ftp/upload yes ftp sys 0666

  39. 建立可上傳目錄與使用者家目錄 • mkdir /var/ftp/upload • chown ftp:sys /var/ftp/upload • mkdir /home/wwwuser1/public_html • mkdir /home/wwwuser2/public_html • chown wwwuser1:myftpusers /home/wwwuser1/public_html • chown wwwuser2:myftpusers /home/wwwuser2/public_html

More Related