□ftp(proftpd)
参考URL:
http://www.proftpd.org/
proftp-1.3.0までは時間の表示がおかしかったけど1.3.1以降で解消した。
(proftpd.conf に設定の追記が必要)
tar xvzf package/proftpd-1.3.2a.tar.gz
cd proftpd-1.3.2a/
./configure –prefix=/usr
make
make install
tar xvzf package/proftpd-1.2.10.tar.gz
cd proftpd-1.2.10/
./configure –prefix=/usr
make
make install
もしかしたら make install すると、とあるシステムでは
> chown: –no-dereference (-h) is not supported on this system
こんな風に言われるかもしれません。そんなときは Makefile をいじって
chown -h の -h を取っ払ってしまいましょう。
また、Linux では capabilities に関するオプションがデフォルトで on に
なってしまいますが、うまく行かないシステムがあるかもしれません。
そんなときには
./configure –disable-cap
としてから make してください。
で、インストールした後で /usr/etc/proftpd.conf を書き直す。
まず Anonymous での動作権限が、デフォルトは ftp:ftp になっているが、
「ftp」というグループはないので、bin かなにかに変えること
> # A basic anonymous configuration, no upload directories.
> <Anonymous ~ftp>
> User ftp
> Group bin ←★ここ
> # We want clients to be able to login with “anonymous” as well as “ftp”
とか
> # Set the user and group that the server normally runs at.
> User root ←★ここ
> Group bin ←★ここ
> ListOptions “-a”
さらに
> ServerType standalone
を
> ServerType inetd
にする。(xinetd であっても inetd とする)
また、標準のままだと世界標準時で時間が扱われてしまうので、
> TimesGMT off
をどこかに追加する。
新しいバージョンだと
> TimesGMT FALSE
になる。さらに時間がGMTにずっこける場合には
> SetEnv TZ :/etc/localtime
を追加すればよい。
他は proftpd の説明書やWEBに転がっている情報を参照する事。
続いて /etc/inetd.conf(xinetd.conf) を書き直し
> service ftp
> ?flags = REUSE NAMEINARGS
> ?socket_type = stream
> ?protocol = tcp
> ?wait = no
> ?user = root
> ?server = /usr/sbin/tcpd
> ?server_args = in.ftpd -l -i -a
> }
となっているところを
> service ftp
> {
> ?flags = REUSE NAMEINARGS
> ?socket_type = stream
> ?protocol = tcp
> ?wait = no
> ?user = root
> ?server = /usr/sbin/tcpd
> ?server_args = /usr/sbin/proftpd
> }
とする。
※Plamo-3.1以降 では in.ftpd -> in.proftpd -> proftpd となっている
ので、別に書き換えはしなくてもいい。
inetd(xinetd) を kill -HUP(kill) しておわり。
> telnet localhost ftp
として、
> # telnet localhost ftp
> Trying 127.0.0.1…
> Connected to localhost.
> Escape character is ‘^]’.
> 220 ProFTPD 1.3.0rc3 Server (ProFTPD Default Installation) [127.0.0.1]
> quit
> 221 Goodbye.
> Connection closed by foreign host.
とか出てくればOK。ちなみに上記のように quit で終われます。
出てこなかったら、たぶん tcp-wrapper(/etc/hosts.allow)で制限
されているので、受け付けるようにすればよい。
> #ALL : LOCAL
> ALL 😕 localhost : ALLOW
> in.ftpd: ALL : RFC931 1
> in.telnetd: ALL : RFC931 1
> in.rshd: ALL : DENY
> in.rlogind: ALL : DENY
> ALL : ALL : spawn (/usr/sbin/safe_finger -l @%h | \
>???????????? /bin/mail -s %d-%h root ) & : deny
こんな感じにする。
ただし、上記のように書くと接続された場合に必ず ident で問い合わせが
行くので、ノートンとかを入れていると「トロイの木馬がやってきた!」
とワーニングが出たり、ステルスなルーターの場合にはタイムアウトまで
FTP接続が止まる場合があるので、面倒だったら「in.ftpd: ALL : ALLOW」
にしてしまってもいいかも。
wu_ftpd より新しいので、バーチャルドメイン(でもIPアサインでないと
だめよん)とかできたりしますが、wu_ftpd 程でないにしてもセキュリティ
ホールがある(らしい)のでこまめにバージョンはチェックしましょう。
補足:スタンドアローンで動かしたい場合
/etc/rc.d/rc.inet2 に
> # Proftpd server
> SERV=”$SERV proftpd”
のように追加してもいいし、/etc/rc.d/rc.M の適当なところで
> if [ -x /usr/sbin/proftpd ]; then
>???? echo -n ” proftpd”
>???? /usr/sbin/proftpd
> fi
としてもよい。
補足:バージョンアップしたら動かなくなってしまった場合
たぶん、前から proftpd を使っている場合には
> LsDefaultOptions “-a”
というオプションになっていると思いますが、
> ListOptions “-a”
に変更しないといけません。
補足:Anonymous をバーチャルドメイン(IPアドレス)別に設定したい
Anonymous をバーチャルドメイン別に設定する場合、それぞれに必要な
だけIPアドレスを用意しないといけません。FTP のプロトコルでは、
ホスト名の通知というのはないからです。
また、設定のコツとして、全てのドメインのバーチャルなFTPを用意
する必要がない場合、「その他」の設定を一番最後に書くとOKです。
それより前に対象がないと最後の設定を使うようです。
/usr/local/etc/proftpd.conf の最後に下記のように追加すると、
> # バーチャルドメインのIP
> # Virtual host setting —————————————————–
> <VirtualHost 192.168.0.100>
> ServerName “My Virtual FTP server 192.168.0.100”
> DefaultRoot ~
> AllowOverwrite on
> ListOptions “-a”
> <Anonymous ~hogehoge/ftp>
> User ftp
> Group bin
> UserAlias anonymous ftp
> MaxClients 100
> </Anonymous>
> RequireValidShell off
> TimesGMT off
> </VirtualHost>
> #
>
> # Virtual host setting —————————————————–
> <VirtualHost 192.168.0.1>
> ServerName “My FTP server”
> DefaultRoot ~
> AllowOverwrite on
> ListOptions “-a”
> <Anonymous ~ftp>
> User ftp
> Group bin
> UserAlias anonymous ftp
> MaxClients 100
> </Anonymous>
> RequireValidShell off
> TimesGMT off
> </VirtualHost>
> #
実際にアクセスしてみると
> # telnet 192.168.0.100 ftp
> Trying 192.168.0.100…
> Connected to localhost.
> Escape character is ‘^]’.
> 220 ProFTPD 1.2.9 Server (My Virtual FTP server 192.168.0.100) [test-v]
> # telnet 192.168.0.1 ftp
> Trying 192.168.0.1…
> Connected to localhost.
> Escape character is ‘^]’.
> 220 ProFTPD 1.2.9 Server (My FTP server) [test-master]
という感じです。