xserver
Home クッキー及びWeb ビーコンについて



Postfixによるメールサーバーの構築

FTPサーバーの構築

 ここでは、FTPデーモンであるProFTPDについて解説していきます。FTPデーモンと言えば、wu-ftpd が有名ですが、セキュリティホールが数多く報告されていたり、また開発のほうも停滞しているので当サイトでは、設定が簡単で且つ、wu-ftpd よりもセキュリティが高いと言われているProFTPDを採用しました。ProFTPD の設定ファイルは、Apache のhttpd.conf をお手本にした簡単設定で記述することができ、.htaccess ならぬ、.ftpaccess を採用していることで、ディレクトリごとのアクセス制御をかけることができます。その他、主な機能としては、複数のバーチャルFTPサーバーとして機能、スタンドアロンとinetd 経由どちらの起動方法にも対応、ロギングとutmp/wtmpのサポートなどがあります。また、mod_sql モジュールと組み合わせることで、FTP認証を実現したり、mod_quota モジュールでディスク容量制限(アップロード/ダウンロード)をしたりすることもできます(がここでは説明しません)。




■ProFTPD のダウンロード

Version proftpd-1.2.9
Homepage http://www.proftpd.org/
Download ftp://ftp.ayamura.org/pub/proftpd/distrib/source/
Install proftpd-1.2.9.tar.gz





■ProFTPD のインストール

 vsftpd がインストールされている場合は、予めアンインストールしておきます。

# rpm -e vsftpd

$ cd /usr/local/src
$ tar xzvf proftpd-1.2.9.tar.gz
$ cd proftpd-1.2.9
$ ./configure
$ make
# make install



■/usr/local/etc/proftpd.conf の編集

 FTPサーバーにログインしたときに表示されるデフォルトの名前です。初期値では、あまりかっこいいとは言えない名前なので変更したい方は変更してください(>▽<

ServerName "ProFTPD Default Installation"

 ProFTPDを inetd もしくは、xinetd 経由で起動させます。デフォルトは、スタンドアロンとして起動するようになっているので以下の行を修正します。デーモンとして起動させたいならば、standalone を指定します。

ServerType inetd

 DefaultRootを設定することで、chroot環境でFTPを動作させることができます。コメントを削除することで、ユーザーのホームディレクトリより上位の階層へはアクセスできなくなるのでセキュリティが向上します。ここでは、ユーザーのWebサイトをFTPサーバー上にアップロードすることを仮定して(/home/kororo/public_html)、public_html より上位の階層へアクセスできないように設定しています(なお、httpd.conf の設定でUserDirディレクティブをpublic_html にしたものとします)。

DefaultRoot ~/public_html

 グループをnogroup からnobody に変更します。

Group nobody

 AnonymousFTP はここでは使わないので、Anomynous行をコメントアウトして無効にします。使用する予定がないのであれば削除してしまっても構いません。

#<Anonymous ~ftp>
#User ftp
#Group ftp

# We want clients to be able to login with "anonymous" as well as "ftp"
# UserAlias anonymous ftp

# Limit the maximum number of anonymous logins
# MaxClients 10

# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
# DisplayLogin welcome.msg
# DisplayFirstChdir .message

# Limit WRITE everywhere in the anonymous chroot
# <Limit WRITE>
# DenyAll
# </Limit>
#</Anonymous




■ProFTPDを自動起動させる

 ProFTPDをxinetd 経由で自動起動させるように/etc/xinetd.d/proftp を作成します。

service ftp
{
disable = no
flags = REUSE
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/sbin/proftpd
}

■xinetd の再起動

 ProFTPDを起動するため、xinetd を再起動します。

# /etc/init.d/xinetd restart

■ProFTPD の動作確認

 21番ポートがLISTEN状態になっていることを確認してください。

# netstat -an | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

# nmap localhost
21/tcp open ftp



■その他の設定

 ポート番号の指定です。通常は変更の必要はありません。

Port 21

 Umask とは、新規に作成されたファイルやフォルダのデフォルトのパーミッション値を表し、umask 値が022 の場合は、644(rw-r--r--)と同様の意味になります。022という数値は、新規のファイル作成時に与えられる最大の権限である666(rw-rw-rw-)から22を引いた数値という意味なので、パーミッション値は644になります。仮にUmask値を002にすれば、初期権限は664(rw-rw-r--)になります。誰でも読み書き可能である666にしたい場合は000になります。また、ディレクトリ作成時の最大の権限は777で、初期に与えられるパーミッション値は755です。ProFTPDのデフォルトのUmask値は022となっているので、新規ファイルを作成したときには、666から22を引いた644で作成され、新規ディレクトリを作成した時には、777から22を引いた755が初期権限になるというわけです。なお、Umask値をあとから変更した場合、既存のファイル、もしくはディレクトリには影響がありませんので注意してください。

Umask 022

 DoS攻撃防止のため、最大の子プロセス数を設定します。デフォルトでは30に設定されていますが、FTPサーバーを利用する人数が少ない場合は、もっと数値を下げてもよいかもしれません。なお、MaxInstances はスタンドアロンで起動している場合のみ機能し、inetd モードでは無効になります。

MaxInstances 30

 ファイルの上書きを許可するかしないかを設定します。

<Directory />
  AllowOverwrite on
</Directory>

■ProFTPDのバージョンを非表示にする

 FTPサーバーにログイン時には通常、「220 ProFTPD 1.2.9 Server (ProFTPD Default Installation) [serv.kororo.jp] 」のようにサーバーの名称とバージョンが表示されます。FTPに限ったことではありませんが、バージョン等を表示させておくとセキュリティホールをついた攻撃をされる可能性もあるのでセキュリティ上、好ましくありません。そこで、ログイン時のバージョンを非表示にするには以下の1行を追記しておきます。

■アクセス制限をかける

<Limit LOGIN>
 Order allow, deny
 Allow from 172.16.50.0/27,172.16.51.0/28,127.0.0.1/8
 Deny from all
</Limit LOGIN>

■リジューム機能を使用する

 ダウンロード/アップロード中に意図せず回線が切断された場合、最初からまた接続を再開する羽目になってしまうことがあります。そこで、リジューム機能を使うことでダウンロード/アップロードを途中から再開することができます。なお、ダウンロードはデフォルトでオンの状態になっていますので、ここで指定するのはアップロードのリジュームを行いたい場合です。

AllowRetrieveRestart on



■クライアントからログインする

 それでは、実際にWindows マシンからコマンドプロンプトを使用してFTPサーバーにログインしてみます。ここで確認しておきたいのは、DefaultRoot で設定したディレクトリより上位の階層へアクセス不可能な状態になっているかどうかです。詳細な解説は下記に記します。

C:\>ftp ftp.kororo.jp
Connected to ftp.kororo.jp.
220 ProFTPD 1.2.9 Server (ProFTPD Default Installation) [ftp.kororo.jp]
User (ftp.kororo.jp:(none)): kororo
331 Password required for kororo.
Password:
230 User kororo logged in.
ftp>
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
cinema
index.html
movie

226 Transfer complete.
ftp: 72 bytes received in 0.00Seconds 72000.00Kbytes/sec.
ftp>
ftp> cd ../
250 CWD command successful.
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
cinema
index.html
movie

226 Transfer complete.
ftp: 72 bytes received in 0.00Seconds 72000.00Kbytes/sec.
ftp> pwd
257 "/" is current directory.

 上記のプロセスを説明するとまず、FTPサーバーにログインし、ユーザー名とパスワードを入力します。ログインに成功したら、ls コマンドでディレクトリを一覧表示させます。次に、CDコマンドを使用して現在いる初期ディレクトリより上位の階層へアクセス可能かどうかを調べます。プロンプト上では、「250 CWD command successful.」という成功した旨のメッセージが表示されますが、ls コマンドを使ってカレントディレクトリを調べてみると先ほどと同様のディレクトリにいることがわかります。つまり、DefaultRoot で設定した ~/public_html がきちんと有効になっていることを確認することができます。最後にpwd コマンドを使って自分が現在いるディレクトリを調べてみると、"/ "(ルート)にいることがわかり、これ以上、上位の階層にはアクセスできないことがわかります。







TOPに戻る

Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円~30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: