* [[ProFTPD]]
FTPサーバです。

#contents

** 環境設定
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>http://hidekazu.dhs1.sst.ne.jp/pukiwiki/pukiwiki.php?SSL]]を参考に~
また[[ソフト>http://hidekazu.dhs1.sst.ne.jp/pukiwiki/pukiwiki.php?%A5%BD%A5%D5%A5%C8]]の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の状態およびエラー・コード>http://www.hiteksoftware.com/jp/knowledge/articles/FTP%20status%20code.htm]]~
** 参考書籍

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS