Linux/ANSI C/C++/Perl/Python
自由的心,永远飞翔...

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?

inetd
standalone

<OK>

建議安裝套件

簡介

一般設定

設定登入的目錄

設定除了特定帳號之外,其它皆以 /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

注意事項

參考資訊

常見問題解答

posted on 2006-08-20 19:05 我心飞翔 阅读(835) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理