將系統的 ftp 服務換成 ProFTP

Redhat Linux 7.3 預設的 ftp 服務是採用 wu-ftpd,雖然 wu-ftpd 在效能上,一直有不錯的表現,程式版本更新的速度也不慢,不過,它卻不是一個夠安全的系統。ProFtpd 的發展,一開始便是定位在成為一個安全且容易設定的 ftp 伺服器程式,它的風格及表現,深得許多網管人員的喜愛。如果您想找一個不錯的 ftp 伺服程式來取代 wu-ftpd,試試 ProFtpd 吧…

安裝 ProFTP 套件程式

  • 移除 wu-ftpd 及 anonftp:
  • apt-get remove anonftp
    apt-get remove wu-ftpd
  • 使用 Apt 安裝 ProFtp:
  • apt-get install proftpd

    相關程式與設定檔

  • /etc/proftpd.conf: ProFTP 的設定檔。
  • /etc/ftpuser: 設定不可用 FTP 登入的使用者 id,加入在該檔內的 id 將會被拒絕登入。
  • /usr/sbin/ftpshut: 關閉 FTP 服務。關閉後,在 /etc 下會產生一個名稱為 “shutmsg” 的檔案,把它刪除即可恢復啟動狀態。
  • /usr/bin/ftpcount: 查看目前連線數量。
  • /usr/bin/ftpwho: 查看目前的連線者。
  • ProFTP 的設定檔參數

  • ServerName: 設定登入 FTP 主機要顯示的名稱。
  • ServerName "Welcome to My FTP Server"
  • ServerType: 設定啟動型態。standalone | inetd
  • ServerType standalone
  • DefaultServer: 設定未知的連線是否由預設的主機來處理。
  • DefaultServer on
  • Port: 設定啟動時要監聽哪個 port。
  • Port 21
  • umask: 設定建立檔案目錄時,使用的權限遮罩(”022″ 代表 755)。
  • Umask 022
  • MaxInstances: 指定當啟動型態為 “standalone” 時,最多允許多少程序啟動。
  • MaxInstances 20
  • User/Group: 設定啟動時的身份與群組。
  • User nobody
    Group nobody
  • AllowOverwrite: 設定是否可以覆寫檔案(預設是 off,可以適用於整體設定與目錄區段設定)。
  • AllowOverwrte on
  • ServerIdent: 是否於使用者登入時顯示伺服器的類型。
  • ServerIdent off
  • DefaultRoot: 指定特定使用者登入後的根目錄。
  • DefaultRoot /var/www webmaster
    設定每個使用者登入後的根目錄(”!” 後為排除的使用者)。
    DefaultRoot /var/ftp !admin
    限制每個使用者都登入在自己的家目錄(”!” 後為排除的使用者)
    DefaultRoot ~ !admin
  • AllowStoreRestart: 允許上傳續傳。
  • AllowStoreRestart on
  • DisplayLogin: 設定登入伺服器時,要顯示的內容(僅適用於 anonymous 與 VirtualHost)。
  • DisPlayLogin welcome.msg
  • DisplayFirstChdir: 設定切換目錄時要顯示的內容(僅適用於 anonymous 與 VirtualHost)。
  • DisplayFirstChdir .message
  • DisplayQuit: 設定結束連線時要顯示的內容(僅適用於 anonymous 與 VirtualHost)。
  • DisplayQuit goodbye.msg
  • MaxClients: 設定伺服器最多允許多少個使用者(不同IP)登入,後面為超過數量時顯示的訊息。
  • MaxClients 5 "Sorry, max %m users -- try again later"
  • MaxClientsPerHost: 設定同一個 IP 的使用者最多能登入幾個程序。
  • MaxClientsPerHost 2
    ~
  • MaxLoginAttempts: 設定使用者嘗試登入失敗後幾次斷線。
  • MaxLoginAttempts 3
  • RateReadBPS: 限制每秒下載的速度(bytes)。
  • RateReadBPS 10240
  • RateWriteBPS: 限制每秒上傳的速度(bytes)。
  • RateWriteBPS 10240
  • RequireValidShell: 檢查使用者的 shell 程式是否合法。
  • RequireValidShell on
  • RootLogin: 設定是否可以使用 root 帳號登入。
  • RootLogin off
  • TimeoutLogin: 指定連線後多久沒有登入就斷線(秒)。
  • TimeoutLogin 100
  • TimeoutIdle: 設定登入主機後閒置多久就斷線(秒)。
  • TimeoutIdle 600
  • TimeoutNoTransfer: 設定多久沒傳輸資料就斷線(秒)
  • TimeoutNoTransfer  600
  • UseHostsAllowFile: 指定允許連線的主機,指定檔案,其語法與 /etc/hosts.allow 一樣。
  • UseHostsDenyFile: 指定拒絕服務的連線主機,指定檔案,其語法與 /etc/hosts.deny 一樣。
  • 存取權限設定

    ProFTP 的權限控管可針對一般使用者及匿名登入的使用者…

  • 匿名使用者的部分,是宣告在 ~ 區段內。
  • 目錄存取權限設定,是宣告在 ~ 。
  • ~ : 設定該目錄的存取動作,priv 的方式如下…

  • ALL (identical to READ WRITE DIRS)
  • CWD (Change Working Directory)
  • DELE (DELEte)
  • DIRS
  • LOGIN
  • MKD (MaKe Directory)
  • READ (RETR, STAT)
  • RETR (RETRieve)
  • RMD (ReMove Directory)
  • RNFR (ReName FRom)
  • RNTO (ReName TO)
  • STOR (STORe)
  • WRITE (also include MKD and RMD)
  • 指定存取的權限…

  • Allow [from] all | none | host1[,host2,...]
  • Deny [from] all | none | host[,host,...]
  • AllowAll
  • DenyAll
  • AllowUser UserName
  • AllowGroup GroupName
  • DenyUser UserName
  • DenyGroup GroupName
  • Order allow,deny | deny,allow
  • 使用範例

    <Directory /path>
      <Limit CWD>
        Order Allow,Deny
        Allow from 128.44.26.,128.44.26.
        Allow From host.example.com
        Deny from all
      </Limit>
    </Directory>

    匿名區域開放上傳的設定範例

    <Anonymous ~ftp>
      User ftp
      Group ftp
      UserAlias anonymous ftp
      MaxClients 5
      AnonRequirePassword off
      RequireValidShell off
      <Directory upload/>
        <Limit STOR CWD MKD>
          AllowAll
        </Limit>
        <Limit READ RMD DELE>
          DenyAll
        </Limit>
      </Directory>
    </Anonymous>
    1. Using Google Chrome Google Chrome 22.0.1229.79 on Windows Windows 7

      谢谢博主~ 非常详细的文章...收益匪浅!

    1. No trackbacks yet.

    return top

    %d 位部落客按了讚: