proftpでファイル転送

ProFTPでファイル転送

FTPはこんな形で使用したいと思います。

  • 不特定多数にFTPでファイルダウンロードとか(anonymous)は使用しない
  • 特定の人のみアクセスさせる
  • 暗号化にも対応したい(ProFTP + TLS)
  • 特定なユーザはchrootする。管理者はしない。
  • レジュームも使う
  • 日本語も化けないで表示できる(できれば文字コードに依存しない)
  • PORTもPASSIVEもできる

インスト

いつものこれで

#apt-get install proftpd

インスト時にinetで起動しますか?と聞かれるのでYESと答える。内部なんでスタンドアロンで使わないです。

基本設定

uid,gidの閲覧

chrootした時もuidとかgidは見えるようにする(デフォルトでOK)

PersistentPasswd on

Identの停止

クライアントからFTP接続があった時にIdentプロトコルを使用して、サーバからクライアントへ問い合わせを行う。通常こんな機能はいらないので止めておく

IdentLookups off

設定内容

inetd.conf

ちなみにinetd.confはこんな感じ。

ftp     stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/proftpd

/etc/proftpd.conf

設定ファイル

ServerName                      "Debian"
ServerType                      inetd
DeferWelcome                    off
MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                     "-l"
DenyFilter                      \*.*/
Port                            21
MaxInstances                    30
User                            nobody
Group                           nogroup
Umask                           022  022
AllowOverwrite                  on
IdentLookups off

Passiveモードの設定について

内部公開用なので、関係ないが外部に公開するならばNAT越えの設定が必要なので書いておく。ルータがFTPに対応していない場合。

MasqueradeAddress nai.homelinux.net
PassivePorts 3001 3015

※PassivePortsは最小ポートと最大ポートを指定する。この設定した範囲をルータのポートマップ(NAT)に追加する必要がある。フィルタも。

chrootしたい

chrootしたいなら、以下の書式で。

DefaultRoot [パス] [ユーザ]

ユーザまたはグループである「staff」はDefaultRootを有効にし、admグループは無効にしたい場合

DefaultRoot ~/ staff,!adm

ログインユーザを限定したい

こんな感じで制限すればよい

<Limit LOGIN>
DenyAll
AllowGroup staff
AllowGroup adm
</Limit>

レジュームを有効にしたい

アップロード

AllowStoreRestart on

ダウンロード

AllowRetrieveRestart on

debian Valid HTML 4.01 Strict [VALID RSS!]