ProFTPD

FTPサーバです。

環境設定

http://www.proftpd.org/からダウンロードしましょう。1.2.10をダウンロードしました。2006/05/02では1.3.0になってました。 --with-modules=mod_tls --with-includes=/usr/include/opensslはftpsを使う場合です。

./configure  --with-modules=mod_tls --with-includes=/usr/include/openssl
make
make install 

あと/etc/xinetd.dにproftpdをつくって

# default: on
# description: The ProFTPD FTP server
service ftp
{
       flags           = REUSE
       socket_type     = stream
       wait            = no
       user            = root
       server          = /usr/local/sbin/in.proftpd
       log_on_success  += HOST PID
       log_on_failure  += HOST
       disable         = no
}
HOST:サーバ名
PID:プロセスID
USERID:ユーザID
EXIT:終了を記録
DURATION:接続時間を記録

ここで、

log_on_success  += HOST PID USERID EXIT DURATION
log_on_failure  += HOST USERID

としているとすごく遅かったので、変更しました。 ではリスタートしましょう。

/etc/init.d/xinetd restart 

nmap localhostで確認しておきましょう。また使っているモジュールも確認しておきます。

/usr/local/sbin/proftpd -l

またつながらない等の原因を調べる場合は、

/usr/local/sbin/proftpd -n

で画面にログを出しましょう。

proftpd.conf

/usr/local/etc/proftpd.confを見ていきます。

  • Servertype inetdとstandaloneがあります。standaloneでは、proftpd が常駐しますので、xinetd.d経由のinetdにしてます。
  • DefaultServer? on VirtualHost?の設定でない場合デフォルトが使われます。
  • Umask 022 ファイルやディレクトリを作ったときのumask値
  • ServerIdent? on "" サーバのバージョン等表示させたくない場合。
  • DefaultRoot?
    必ず設定しておきましょう。ルートを設定できます。また
    DefaultRoot ~ ,!nobody
    とするとnobodyグループ以外に適応される。また,(カンマ)でつなげれる。~の後ろのスペースはいります。
  • ShowDotFiles? off ドットファイルを表示させない。はずが、エラーになります。どうも変わったようです。
    ListOptions "-a"
  • RootLogin? off rootログイン不可
  • UseReverseDNS off 名前解決しない。
  • IdentLookups? off Identを停止することで、レスポンスが向上します。
  • TimesGMT off 日本時間に変更
  • AllowRetrieveRestart? on レジューム対応
  • DeleteAbortedStores? on アップロード中断ファイルの削除
  • MaxClientsPerHost? 1 同一ホストからは1接続
  • MaxStoreFileSize? 10 Mb アップロードファイルの最大値の制限 ここであるグループに制限を増やしたい場合は、
    #hogegrp
    MaxStoreFileSize 500 Mb group hogegrp
    #hogeuser
    MaxStoreFileSize 500 Mb user hogeuser
    #etc
    MaxStoreFileSize 10 Mb
  • AuthPAMConfig ftp PAM認証設定 AuthPAMAuthoritative Onを指定するとworningがでた。
  • PathDenyFilter? "(\.mpeg)|(\.mpg)|(\.exe)|(\.MPEG)|(\.MPG)|(\.EXE)$" mpeg,mpg,exeのアップロードを禁止したい。
  • Directory
    <Directory /*>
    AllowOverwrite on
    </Directory>
    /ディレクトリは書き込みをOKにします。
    <Anonymous ~ftp>
    Anonymousです。使わない場合はコメントしておきましょう。
    <Limit SITE_CHMOD>
      DenyAll
    </Limit>
    属性の制限になります。AllowAll?で許可されます。
  • MasqueradeAddress? グローバルIPもしくはサーバー名 使用ルータがPASVモードに非対応の時に下記も併せて設定してみましょう。
    ルータによってはコメントを
  • PassivePorts? 4000 4029 最大ポート、最小ポートを指定します。またポートは1024以上を指定します。
    ルータによってはコメントを
  • モジュール
    • mod_delay.c Timing attack対策です。
      mkdir /var/proftpd
      chown -R nobody:nobody /var/proftpd
      としておきproftpd.confに
      <IfModule mod_delay.c>
       DelayEngine                   on
      </IfModule>
      DelayTable                      /var/proftpd/proftpd.delay
      を追加します。
    • mod_tls.c SSL/TLSです。
      <IfModule mod_tls.c>
       TLSEngine                     on
       TLSLog                        /var/log/proftpd/tls.log
       TLSProtocol                   SSLv23
       # SSL/TLS接続 offであれば通常も可
       TLSRequired                   off
       #サーバー証明書
       TLSRSACertificateFile      /usr/local/mycerts/server.crt
       #サーバー秘密鍵
       TLSRSACertificateKeyFile  /usr/local/mycerts/server.key
       # クライアント証明書
       TLSVerifyClient               off
      </IfModule> 
      SSLを参考に
      またソフトのSmartFTPでFTP over SSL Explisitにしてます。

また以下はログの設定です。

LogFormat allinfo "%t :  %u (%a [%h]) : [%s], %T, %m (%f)"
LogFormat write "%t : %u : %F (%a) : [%s]"
LogFormat read "%t : %u : %F (%a) : [%s]"
LogFormat auth "%t : %u (%a [%h]) : [%s]"
ExtendedLog /var/log/proftpd/all.log ALL allinfo
ExtendedLog /var/log/proftpd/write.log WRITE write
ExtendedLog /var/log/proftpd/read.log  READ read
ExtendedLog /var/log/proftpd/auth.log AUTH auth
%h   リモートホスト名 
%a   リモート IP アドレス 
%l   リモートユーザ名
%p   ローカルサーバのポート番号 
%v   ローカルサーバ名 
%P   ローカルサーバのプロセス id
%r   クライアントから受け取ったフルのコマンドライン 
%t   現在のローカルタイム 
%T   ファイルの送受信にかかった時間(秒)  
%s   Numeric FTP レスポンスコード
%u   ローカルで認証された userid 

レスポンスコードはhttp://www.atmarkit.co.jp/fnetwork/rensai/netpro10/ftp-responsecode.htmlを参照してください。   終わりましたら、

/usr/local/sbin/proftpd -t /usr/local/etc/proftpd.conf
(/usr/local/sbin/proftpd -t)

でチェックしておきましょう。Groupでnogroupでエラーと出る場合は、nobodyに変更しておきましょう。また/etc/pam.dのftpをloginで上書きします。では

/etc/init.d/xinetd restart

SSL/TLS

http://www.aconus.com/~oyaji/ftp/proftpd_ssl.htm
http://homepage1.nifty.com/yito/anhttpd/faq/ftp.html

TIPS

  • 一覧が見えない
    NLSTでコマンドを送っているソフトはみえないので、LISTが送れるソフトに変えましょう。RFC959に基づく変更です。ffftpはデフォルトでは見えません。
  • ログインできるユーザを制限する。
    ユーザの場合は、AllowUser? グループの場合は、AllowGroup?
    <Limit Login>
     Order allow,deny
     AllowGroup hogeg
     AllowUser hogeu1,hogeu2
     Deny All
    </Limit>

リンク

http://www.infoscience.co.jp/technical/proftpd/index.html
http://yamamaya.com/labo/labo2-3.html
http://www.stackasterisk.jp/tech/systemConstruction/proftpd01_01.jsp
http://www.miloweb.net/pastbbs/0005/1382.html
http://www.aconus.com/~oyaji/ftp/proftpd_rpm.htm
http://sphere.zive.net/server/ftp.htm
http://landisk.kororo.jp/diary/34_proftpssl.php
FTPの状態およびエラー・コード

参考書籍


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-07-11 (金) 04:00:00 (5789d)