Proftpdのインストールと設定

  proftpdはUnix上で動作するFTPサーバ。Linuxのディストリビューションによっては最初からインストールされているFTPデーモンにproftpdを採用しているものもあり、設定方法がApacheと似ていることもあって、比較的使いやすいFTPデーモンである。セキュリティ面においてもなかなか優れていることから、多くユーザに使われているようだ。
ただ現在では、すでにFTPというだけでセキュリティ不足というイメージが挙げられる。本当のセキュリティを考慮してFTPを使うとなると、SSHを利用したPasvモードを使ったほうがよい。
FTPDをインストールするときは、まず現在動作しているFTPDを停止、必要ならアンインストールを行った上でインストールを行ったほうがよい。また起動方法も、通常起動させるような方法以外に、tcpservやinetd、xinetd等を利用して起動させる方法があるので、それを考慮した上でインストールを行う。

DefaultPort
DefaultPort : 21(FTP) / 20(FTP-DATA)

1)ソースを「/usr/local/src/」で解凍し、展開されたディレクトリ内でコンパイルを行う。インストール先は「/usr/local/」。configureオプションは特に指定しなくてもよい。

# kill (プロセスID)
# vi /etc/inetd.conf
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
#ftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -l
# service inetd restart

2)Anonymous FTP用のユーザを追加する。ホームディレクトリにはAnonymous FTPを公開するディレクトリを指定する。シェルは必ず有効なものを指定する(「/sbin/nologin」や「/nonexistent」などは不可)。なお、FTPユーザはすでに追加されていることもあるので「/etc/passwd」や「/etc/group」を確認し、必要なら設定を変更する。

3)アーカイブを解凍する。JAVAをサポートする場合はJ2SDKのインストール場所を指定する必要があるため、予めJ2SDKをインストールしておく(環境によってはエラーが出て使えない場合がある)。

# groupadd -g 14 ftp
# useradd -u 14 -g ftp -d /home/ftp -s /bin/bash ftp

5)設定ファイルを書き換える。

# cd /usr/local/etc/
# vi proftpd.conf

・ユーザを、ホームディレクトリより上位に行けなくするには、以下の行を追加する。この例ではグループwheelに属するユーザ以外はすべてホームディレクトリをルート(/)に指定している。

DefaultRoot ~ !wheel

・Anonymous FTPログインを禁止するには、ディレクティブ内で以下の行を追加する。もしくは/etc/ftpusersに「ftp」および「anonymous」を追加する。

<Limit LOGIN>
DenyAll
</Limit>

・Anonymous FTPでファイルのアップロードのみ許すディレクトリ「incoming」を指定するには、ディレクティブ内で以下のように記述する。このディレクトリではファイルのアップロードとファイルのリストのみ可能で、ダウンロード、削除、上書き等はできない。

<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
<Directory incoming>
<Limit STOR>
AllowAll
</Limit>
<Limit READ>
DenyAll
</Limit>
</Directory>

・接続してからログインするまでに処理が遅い場合、DNSの参照をしないようにすることで早くなる場合がある。特に外部から接続する場合は以下のような記述で試してみる。

ftp stream tcp nowait root /usr/local/sbin/in.proftpd in.proftpd
ftp stream tcp6 nowait root /usr/local/sbin/in.proftpd in.proftpd

その後inetdを再起動。

# service inetd restart

6)通常に起動する場合は、proftpd.confファイル内の「ServerType standalone」のままで、「/usr/local/sbin/proftpd」を実行する。自動起動の設定を行う場合は「/etc/rc.local」に記述する。

# vi /etc/rc.local
/usr/local/sbin/proftpd

※chkconfigでの自動起動スクリプトは、ソースディレクトリ内の「contrib/dist/rpm/proftpd.init.d」にテンプレートがあるので、これを環境に合わせて修正し、実行権限を与えて/etc/rc.d/init.d/の中へコピーする。その後chkconfigコマンドで設定する。

TOP OF PAGE