[web] FTPサーバの設定

自宅サーバProFTPDを設置したときの覚え書き。
予想通り、大ハマリ有り。詳しくは「(恒例の)ハマった事」の項を参照。

inet設定

デフォルトではインストールされていなかった


# apt-get install inetd
/etc/inetd.confを書き換え
下記の行を有効に

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

実行


/etc/rc.d/init.d/inet start

proftpd.conf設定

/etc/proftpd.conf


ServerName "foo FTPD"
ServerType inetd
DefaultServer on

ServerIdent on "FTP OK"
UseReverseDNS off
IdentLookups off
DefaultRoot ~/public_html
MaxLoginAttempts 3
MaxClientsPerHost 1
MaxClientsPerUser 1
ListOptions "-a"

#for PASV mode
AllowForeignAddress On
## MasqueradeAddressは、ルータがハングするので設定してはいけない。
#MasqueradeAddress subdomain.foo.jp
PassivePorts 3600 3629

#PAM
AuthPAMAuthoritative On
AuthPAMConfig ftp

AllowRetrieveRestart on
AllowStoreRestart on
RootLogin off
DisplayLogin .htftpd
DirFakeUser on invisibleUser
DirFakeGroup on invisibleGroup
PersistentPasswd off
RequireValidShell off

#log
LogFormat allinfo "%t : %u (%a [%h]) : [%s], %T, %m (%f)"
LogFormat write "%t : %u : %F (%a)"
LogFormat read "%t : %u : %F (%a)"
LogFormat auth "%t : %u (%a [%h])"
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


# Port 21 is the standard FTP port.
Port 21

Umask 022

# Use localtime
TimesGMT FALSE
SetEnv TZ JST-9

MaxInstances 30

User nobody
Group nobody

CharsetLocal EUC-JP-MS
CharsetRemote EUC-JP-MS


AllowOverwrite on

Anonymous ログインの停止するため、を削除

時刻がずれることがある

mieki256's diary - Vine Linux 4.1 の ProFTPD設定でハマる より
proftpd.confに


SetEnv TZ JST-9
を加えた。

ログローテーションの設定

一定期間たまったログを古い物から削除する設定。
設定ファイルは /etc/logrotate.d/proftp(vineではデフォルトで設定済み)


/var/log/proftpd/*.log {
missingok
notifempty
postrotate
/usr/bin/kill -HUP `cat /var/run/proftpd.pid 2>/dev/null` 2>/dev/null || true
endscript
}

/etc/skel の設定

public_htmlが無いので、作成しておく


# cd /etc/skel
# mkdir public_html
# echo "Hello" > public_html/.htftpd

ルータ設定

BUFFALO の BBR-4HGを使用している

  1. アドレス変換の設定
    3600〜3629をサーバの同ポートに変換

    ルータ(BBR-4HG)がPASVモードに対応しているため、設定の必要なし
  2. 21番ポートの解放

(恒例の)ハマった事

パッシブモードで接続するとクライアントから接続出来ず、しかもBBR-4HGも反応が無くなってしまうという現象が起こった(ルータの電源を入れ直すとレスポンスは戻ってくる)。
理由不明。。
クライアント側のログを見ると、ファイル一覧の取得に失敗しているらしいのだが。

解決

ソース FTPサーバ(ProFTPD)の構築


 最近は、いくつかのメーカや機種で本設定を行わなくてもルータで同等の対応を行うものが増えてきているので、まずは、本設定を行わずにPASVを動かしてみるとよい。対応済みルータで本設定を行うと逆にLISTで止まるようになるので注意が必要。
とのことで、どうやらルータの機能とProFTPDの設定がバッティングしていたのが原因のようだ。
proftpd.confからMasqueradeAddressの設定をコメントアウトして解決。
バッファローのBBR-4MGの内側へPASVなFTPサーバー設置メモ - とりあえず に詳しい説明があった。