ProFTPDの設定


debianではデフォルトでftpdがインストールされていませんので、いくつかあるftpdを選び自分でインストールしなければなりません。

有名どころではwu-ftpdとProFTPD、vsftpdがありますが、wu-ftpdはセキュリティホールがある上に、開発が止まっています。
vsftpdもいいのですが、今回は使い慣れたProFTPDを選択します。
ちなみにanonymousFTPは使用しない方向で行きます。

インストール

apt-getでインストールしましょう。

# apt-get install proftpd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  libcap1 proftpd-basic proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-pgsql
提案パッケージ:
  proftpd-doc
以下のパッケージが新たにインストールされます:
  libcap1 proftpd proftpd-basic proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-pgsql
アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 83 個。
1511kB のアーカイブを取得する必要があります。
この操作後に追加で 2573kB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://ftp.jp.debian.org lenny/main libcap1 1:1.10-14 [9082B]
取得:2 http://ftp.jp.debian.org lenny/main proftpd-basic 1.3.1-17lenny2 [689kB]
取得:3 http://ftp.jp.debian.org lenny/main proftpd-mod-mysql 1.3.1-17lenny2 [203kB]
取得:4 http://ftp.jp.debian.org lenny/main proftpd-mod-pgsql 1.3.1-17lenny2 [203kB]
取得:5 http://ftp.jp.debian.org lenny/main proftpd-mod-ldap 1.3.1-17lenny2 [212kB]
取得:6 http://ftp.jp.debian.org lenny/main proftpd 1.3.1-17lenny2 [195kB]
1511kB を 1s で取得しました (821kB/s)
パッケージを事前設定しています ...

パッケージの設定







 ┌────────────┤ ProFTPd configuration ├─────────────
 │ ProFTPd は、inetd 経由のサービスとして実行することもできますし、 スタンドアローン │
 │ のサーバとしても実行できます。どちらにもそれぞれ利点があります。1日に数回の         │
 │ ftp アクセスしかない場合は、資源を節約するために ProFTPd を inetd から起動する  │
 │ のが良いかも知れません。                                                  │
 │                                                                      │
 │ 一方、頻繁なアクセスがある場合は、接続ごとに新規プロセスが生成されるのを避ける       │
 │ ため 、ProFTPd をスタンドアロンサーバとして動作させるべきです。                 │
 │                                                                      │
 │ proftpd の起動方法:                                                    │
 │                                                                      │
 │                                  inetd 経由                           │
 │                                  スタンドアロン・                       │
 │                                                                      │
 │                                                                      │
 │                                       <了解>                          │
 │                                                                      │
 └───────────────────────────────────────────────────────────────────────





未選択パッケージ libcap1 を選択しています。
(データベースを読み込んでいます ... 現在 102633 個のファイルとディレクトリがインストールされています。)
(.../libcap1_1%3a1.10-14_i386.deb から) libcap1 を展開しています...
未選択パッケージ proftpd-basic を選択しています。
(.../proftpd-basic_1.3.1-17lenny2_i386.deb から) proftpd-basic を展開しています...
未選択パッケージ proftpd-mod-mysql を選択しています。
(.../proftpd-mod-mysql_1.3.1-17lenny2_i386.deb から) proftpd-mod-mysql を展開しています...
未選択パッケージ proftpd-mod-pgsql を選択しています。
(.../proftpd-mod-pgsql_1.3.1-17lenny2_i386.deb から) proftpd-mod-pgsql を展開しています...
未選択パッケージ proftpd-mod-ldap を選択しています。
(.../proftpd-mod-ldap_1.3.1-17lenny2_i386.deb から) proftpd-mod-ldap を展開しています...
未選択パッケージ proftpd を選択しています。
(.../proftpd_1.3.1-17lenny2_all.deb から) proftpd を展開しています...
man-db のトリガを処理しています ...
libcap1 (1:1.10-14) を設定しています ...
proftpd-basic (1.3.1-17lenny2) を設定しています ...
Adding system user `proftpd' (UID 111) ...
Adding new user `proftpd' (UID 111) with group `nogroup' ...
Not creating home directory `/var/run/proftpd'.
Adding system user `ftp' (UID 112) ...
Adding new user `ftp' (UID 112) with group `nogroup' ...
Creating home directory `/home/ftp' ...
`/usr/share/proftpd/templates/welcome.msg' -> `/home/ftp/welcome.msg.proftpd-new'
ProFTPd is started from inetd/xinetd.
proftpd-mod-mysql (1.3.1-17lenny2) を設定しています ...
proftpd-mod-pgsql (1.3.1-17lenny2) を設定しています ...
proftpd-mod-ldap (1.3.1-17lenny2) を設定しています ...
proftpd (1.3.1-17lenny2) を設定しています ...
#

途中、inetd経由かスタンドアロンで起動させるか選択しますが、頻繁にftpを使うことが無ければ殆どの場合はinetd経由が良いでしょう。
proftpdをインストールすると、inetd.confに自動的にエントリが追加されます。

# cat /etc/inetd.conf
# /etc/inetd.conf:  see inetd(8) for further informations.
#
# Internet superserver configuration database
#
#
# Lines starting with "#:LABEL:" or "#<off>#" should not
# be changed unless you know what you are doing!
#
# If you want to disable an entry so it isn't touched during
# package updates just comment it out with a single '#' character.
#
# Packages should modify this file by using update-inetd(8)
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
#:INTERNAL: Internal services
#discard                stream  tcp     nowait  root    internal
#discard                dgram   udp     wait    root    internal
#daytime                stream  tcp     nowait  root    internal
#time           stream  tcp     nowait  root    internal

#:STANDARD: These are standard services.
ftp     stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/proftpd

#:BSD: Shell, login, exec and talk are BSD protocols.

#:MAIL: Mail, news and uucp services.

#:INFO: Info services

#:BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."

#:RPC: RPC based services

#:HAM-RADIO: amateur-radio services

#:OTHER: Other services

#

/etc/proftpd.confの編集

FTPサーバーにログインしたユーザーは、サーバーの中のすべてのディレクトリを見ることができます。
パーミッションの設定によって禁止されている場所は閲覧や読み出し、書き込みができないのですが、
万が一、不正侵入されたときはディレクトリの情報からさらなる攻撃につながるかもしれません。
FTP接続したときに移動できるディレクトリを制限しておくべきです。

そこで/etc/proftpd.confに以下の一文を加えます。

DefaultRoot ~

追加する場所はどこでもかまいませんが、<×××>~<×××>で囲まれた中は避けるようにします。
これでログインしたユーザーはホームディレクトリの中しか見られなくなります。

「~」とはユーザーのホームディレクトリを表します。ユーザーにホームディレクトリの public_htmlディレクトリだけを操作させたいならDefaultRootを以下のようにします。

DefaultRoot ~/public_html

また、どのユーザーに対しても/var/ftpディレクトリだけを公開したいなら「DefaultRoot /var/ftp」とします。それ以外のディレクトリには移動できなくなります。

コメントを残す

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


+ 1 = 7

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>