Linux Install Memo

サーバー管理者によるLinux関連ソフトのインストールメモ

Home » □ftp(proftpd)

□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]

という感じです。

Name of author

Name: admin

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です