ProFTPd
From Luna's Wiki
所需套件
proftpd
在安裝 ProFTPd 時,請依您的需求來選擇 ProFTPd 的運行方式。
註:
您可以隨時使用 dpkg-reconfigure --priority=low proftpd 來重新設定這些選項
在安裝過程中要設定 ProFTPd 的啟動方式:使用 StandAlone(永遠啟動)或是使用 inetd(由 inetd 來管理)。
建議使用 StandAlone,因為 ProFTPd 使用 StandAlone 的方式啟動時,可以加入避免 DoS 攻擊的選項。
ProFTPd configuration
|
ProFTPd can be run either as a service from inetd, or as a standalone server. Eeach choice has its own benefits.
If you have only a few ftp connections per day, it may not be worth the resources to keep proftpd running at all times.
On the other hand, if your ftp site is visited frequently, inetd
is not a good choice, because each time a connection is opened, a new
process is spawned.
Run proftpd from inetd or standalone?
|
建議安裝套件
簡介
一般設定
設定登入的目錄
設定除了特定帳號之外,其它皆以 /home/ftp 為預設的登入路徑。
不過這樣也同時限制了使用使只能在該目錄中活動。
DefaultRoot /home/ftp !UserName
設定除了特定帳號之外,其它皆以 Home Directory 為預設的登入路徑
DefaultRoot ~ !UserName
讓登入的使用者限制在某一特定目錄
限制使用者只能在 Home Directory 中活動:
...
<VirtualHost myhost.mynet.foo>
DefaultRoot ~
...
</VirtualHost>
限制 users 群組成員使用者只能在 /u2/public 中活動。但是同時是 staff 群組成員則不在此限:
...
<VirtualHost myhost.mynet.foo>
DefaultRoot /u2/public users,!staff
...
</VirtualHost>
設定 ProFTPd 只監聽特定的網路介面
設定 ProFTPd 不要使用 GMT
註:
如果您的 FTP 上面的時間日期不太對的話,大部份就是這個原因了
TimesGMT off
設定 root 也可以 Logon(非常不建議!)
RootLogin on
設定除了 incoming 目錄之外,匿名用的目錄及其子目錄都無法寫入
在 incoming 目錄中所上傳的檔案的權限為 UserName.UserGroup,
讓使用者可以上傳卻無法下載。
如果把 <Limit STOR> 替代成 <Limit WRITE> 的話,
使用者可以進行刪除、更名、建立子目錄等動作:
<Anonymous /home/ftp>
# All files uploaded are set to username.usergroup ownership
User username
Group usergroup
UserAlias ftp username
AuthAliasOnly on
RequireValidShell off
<Directory pub/incoming/>
<Limit STOR CWD>
AllowAll
</Limit>
<Limit READ RMD DELE MKD>
DenyAll
</Limit>
</Directory>
</Anonymous>
對匿名的使用者隱藏某個目錄
在這裡是將特定的 使用者 / 群組 的目錄隱藏起來
但是在這裡的特定的使用者/群組不能是 Anonymous 所使用的使用者/群組。
<Anonymous ~ftp>
...
<Directory Private>
HideGroup UserGroup
HideUser UserName
</Directory>
...
</Anonymous>
隱藏某個目錄
IgnoreHidden
建立虛擬的 FTP Server
<VirtualHost 10.0.0.1>
ServerName "My virtual FTP server"
</VirtualHost>
只讓 Anonymous 的使用者登入虛擬的 FTP Server
<VirtualHost 10.0.0.1>
ServerName "My virtual FTP server"
<Limit LOGIN>
DenyAll
</Limit>
<Anonymous /usr/local/private>
User private
Group private
<Limit LOGIN>
AllowAll
</Limit>
...
</Anonymous>
</VirtualHost>
<LOGIN> 的功用
<LOGIN> 通常會出現在 Server Config、<VirtualHost>、<Anonymous> 及 <Directory> 這些段落裡。
<LOGIN> 是用來控管 Client 是否可以進行連線。
注意:寫在較後面的設定會『蓋過』較前的設定。
如下,禁止所有來自 10.1.1.x 的連線(沒有任何警告訊息即切斷所有連線):
...
<Limit LOGIN>
Order deny,allow
Deny from 10.1.1.
Allow from all
</Limit>
...
如下,除了 anonymous 之外全都禁止連線,但是會出現 "Login invalid" 訊息:
...
<Limit LOGIN>
DenyAll
</Limit>
<Anonymous ~ftp>
...
<Limit LOGIN>
AllowAll
</Limit>
...
讓使用者建立自己的匿名目錄
頻寬控管
TransferRate
RateReadBPS 81920
RateReadFreeBytes 5120
RateReadHardBPS on
限制上傳的檔案大小
MaxRetrieveFileSize
MaxStoreFileSize
限制使用者帳號同時連線上限
MaxClientsPerUser
支援斷點續傳
AllowRetrieveRestart
限制 IP 的同時連線上限
MaxClientsPerHost 1
修改連線時所顯示的 Daemon 名稱及版本
ServerIdent On "Linux.co.uk server"
ServerIdent off
在 Login 之前顯示歡迎訊息
DisplayConnect /etc/proftp.msg
在 Login 之後顯示歡迎訊息
DisplayLogin /etc/proftp.msg
成功認證後的歡迎訊息
AccessGrantMsg "Guest access granted for %u."
錯誤訊息 "No certificates found!"?
請參閱 http://www.linuxdoc.org/HOWTO/SSL-Certificates-HOWTO/
openssl req -new -x509 -days 365 -nodes -out ftpd-rsa.pem -keyout ftpd-rsa-key.pem
cp *.pem /etc/ssl/certs/
使用 PAM 來進行認證
設定 Log 檔案位置
SystemLog
設定磁碟配額
Quotas on # 使用 Quota
QuotaCalc on # 當 .quota 不存在時是否即時計算出已使用 Quota 的大小
QuotaType soft # 如果設定為 hard,將會把超過 Quota 的檔案刪掉
DefaultQuota 8000 # Quota 的大小
QuotaBlockSize 1024 # Quota 的計算單位
QuotaBlockName kb # Quota 顯示時所使用的單位
設定顯示隱藏檔
ShowDotFiles on
最高重試次數
MaxLoginAttempts 3
注意事項
參考資訊
常見問題解答