FTPサーバーを作る

NekosogiFTPd

FTPサーバーソフトは他にもTinyFTPD(日本語)やWarFTPd(英語)などいろいろあるが NekosogiFTPdが一番安定して扱いやすかったため推奨。

★NekosogiFTPdの主な特徴
  • 設定が日本語環境
  • 比較的設定が簡単
  • 2バイト文字(日本語文字)のフォルダ・ファイルも扱える
  • 4GB以上のファイルサポート
  • SSL/TSLセキュア接続サポート

NekosogiFTPdの設定

NekosogiFTPd 2.07のときの設定
  1. Download Pageからダウンロードして解凍し好きなところに保存
  2. フォルダ内のnekosogiftpd.exeを実行し左から3番目のシステムアイコンをクリック
  3. 起動時にサーバー開始と最小化で起動にチェックを入れAdvanceボタンを押す
  4. サービスに登録ボタンを押しOKボタンを押しシステム設定を終了
  5. 初期画面で左から2番目のユーザーリストアイコンをクリックし、追加ボタンを押す
  6. ユーザータブ内でユーザー名・パスワードを入力
  7. ディレクトリ操作タブ内で追加ボタンを押し、ホームディレクトリに設定するフォルダを選択しOKを押し、
    ディレクトリを選択した状態でhomeに設定ボタンを押し、必要に応じてディレクトリ・ファイルの許可する動作に
    チェックを入れてOKを押す
  8. 初期画面で1番左の接続アイコンを押して接続完了
    FTPクライアントソフトで接続できるか確認
※接続がうまくいかないときはFTP接続ツールの設定でパッシブモードを有効にする。
それでもだめなときはセキュリティソフトやルーターの使用によってポートが閉じられていないか確認する。

ProFTPD

Vine Linux 4.2にはProFTPDが組み込み済みで、初期設定ですでに起動しており使用可能だが少し設定変更する。 またProFTPDはApacheと同様にバーチャルホストの構築も可能だがFTPサーバーはHTTPと異なり プロトル上ホスト名(ネームベース)の伝達手段がないため、IPベースのバーチャルホストしか対応できないことに注意。

基本設定

ProFTPD 1.2.10のときの設定
  1. UNIXユーザーを作成しホームディレクトリを /www/ユーザー名 などにし、ログインしないユーザーならシェルを/sbin/nologinにする
  2. /etcディレクトリにあるproftpd.confをテキストエディタで開き、以下のように修正
    ServerType standalone → ProFTPDを常駐したくない場合はServerType inetd
    Group nogroup → Group nobody
    #DefaultRoot ~ → DefaultRoot ~ ホームディレクトリ以下のみ表示
    ※管理目的などで指定ユーザーのみホームディレクトリより上の階層を表示できるようにする場合はDefaultRoot ~ !username
    <Limit SITE_CHMOD>ディレクティブ(パーミッションの変更可否設定)内のDenyAll → AllowAll
    <Anonymous ~ftp> から </Anonymous> まで → 不特定多数のアクセス(一般公開)を許可しないなら削除
  3. proftpd.confに以下を追記
    ServerIdent on "FTP Server" FTPサーバー接続時に表示されるメッセージ。この項目がないと、使用しているFTPサーバー名(ProFTPD)とバージョンおよびServerNameが表示される。
    UseReverseDNS off 名前解決の項目でoffにすることで速度向上
    IdentLookups off 名前解決の項目でoffにすることで速度向上
    TimesGMT off GMT時間。offでlocaltime(日本時間)に変更
    ListOptions "-a" 隠しファイルの表示
  4. ServerTypeをinetdにするとinetdを介して起動するようになるため、inetdの設定が必要になる。なので以下も設定する
    • Vine Linux 4.2にはinetdがインストールされていないので、まずインストール
      apt-get install inetd
    • /etcディレクトリにできたinetd.conf内の#ftp stream tcp nowait root /usr/sbin/tcpd in.proftpdの先頭にある#を除く
    • 状況に応じて/etcディレクトリにあるhosts.allowとhosts.denyでアクセス制限をする。deny→allowの順番で審査される。
      hosts.denyにin.proftpd: ALL すべてのアクセスを拒否
      hosts.allowにin.proftpd: 192.168.1.やin.proftpd: △△△.comを記述するなど。
    • chkconfig --list proftpdで3,4,5がonならchkconfig proftpd offで常駐を解除
    • service inet start(/etc/rc.d/init.d/inet start でも可)
  5. ServerTypeがstandaloneならservice proftpd restart(/etc/rc.d/init.d/proftpd restart でも可)
  6. ServerTypeがstandaloneならchkconfig --list proftpdですべてoffになっていたらchkconfig proftpd onで常駐
  7. 21番ポートの解放
  8. FTPクライアントソフトで設定し、接続できればOK
※ProFTPDには文字コード変換機能を付加するパッチがあります。 サーバーがUTF-8でクライアントがShift JISで見たい場合に便利です。無変換なら必要なし。

バーチャルアカウントの作成

FTPしか利用しないユーザーの場合やUnixシステムアカウントをあまり増やしたくない場合に便利なバーチャルアカウント。 ただ、バーチャルアカウントでHTTPサーバーを利用するとCGIプログラムなどはapacheなどの権限で動作します。 バーチャルアカウントの作成にはテキストエディタでも可能ですがここではftpasswdというツールを使います。 Vine Linux 4.2のProFTPDにはftpasswdが含まれていないのでまずはftpasswdの取り込みから。
  1. ProFTPDホームページの左メニューDownload serversを選びダウンロード先サーバーの選択
  2. ディレクトリ ProFTPD → distrib → source → proftpd-1.x.x.tar.gzをダウンロード
  3. tar zxvf proftpd-1.x.x.tar.gzで展開
  4. 展開してできたディレクトリ内にcontribディレクトリがあるのでそれを/usr/localなどのわかりやすい位置に移動
  5. コマンドでユーザーアカウント作成
    ./ftpasswd --passwd --file=/etc/ftpd.passwd --name=user1 --uid=5000 --gid=5000 --home=/home/user1 --shell=/sbin/nologin
  6. パスワードを入力(2回)
  7. コマンドでグループアカウント作成
    ./ftpasswd --group --file=/etc/ftpd.group --name=user1 --gid=5000
  8. proftpd.confにバーチャルアカウントを使用できるよう以下の3行を追記
    AuthUserFile /etc/ftpd.passwd
    AuthGroupFile /etc/ftpd.group
    AuthOrder mod_auth_file.c
    ※Unixシステムアカウントも併用する場合3行目をAuthOrder mod_auth_unix.c mod_auth_file.cにする。先に記述した方から認証される。
  9. service proftpd restart(ServerTypeがinetdならservice inet restart)
※うまく動作しない場合 /var/log/xferlog にログが保存されているので確認する
※AuthOrderディレクティブは1.2.8rc1以降から使用可能

TOPへ
戻る