FTP

Top > FTP

FTPの種類

FTPサーバ 特徴 備考 公式サイト
WU-FTPd 初期。性能、安全面が弱い。 なくなっている?
vsftpd 高機能ではないが軽くて高速。 参考:http://safe-linux.homeip.net/other/linux-vsftp-01.html http://vsftpd.beasts.org/
ProFTPD 高機能で柔軟性のあるFTPサーバ。 Apacheの.htaccess 設定ファイルに似た、ディレクトリ毎の .ftpaccess 設定ファイル http://www.proftpd.org/
bftpd ポータブルで高速性を持つように設計されたUNIXシステム用のFTPサーバー。 http://bftpd.sourceforge.net/
FileZilla Server windowsで使用される。 参考:http://ja.wikipedia.org/wiki/FileZilla_Server http://filezilla-project.org/
War-FTP windowsで使用されるFTPサーバ。古い。 http://www.jgaa.com/
pure-ftpd バーチャルアカウントでFTP接続が可能 参考:http://www.momo-i.org/chapter6/pure-ftpd.html http://www.pureftpd.org/project/pure-ftpd
publicfile コンパクトなWebサーバかつFTPサーバ。 参考:http://ja.wikipedia.org/wiki/Publicfile http://cr.yp.to/publicfile.html
MuddleFTPD http://www.nongnu.org/muddleftpd/
iFTPd JAVAが必要 http://iftpd.sourceforge.net/

ProFTPDのインストール

  • ダウンロード
[root@water0 ~]# cd /usr/local/setup/archive
[root@water0 archive]# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3.tar.gz
[root@water0 archive]# cd ../make/
[root@water0 make]# tar -zxvf ../archive/proftpd-1.3.3.tar.gz
  • インストール
[root@water0 make]# cd proftpd-1.3.3/
[root@water0 proftpd-1.3.3]# ./configure --prefix=/usr/local 2>&1 |tee configure_100504.log
[root@water0 proftpd-1.3.3]# make 2>&1 |tee make_100504.log
[root@water0 proftpd-1.3.3]# make install 2>&1 |tee make_install_100504.log
※configure時に"--prefix=/usr/local"を"--prefix=/usr/local/proftp"としたほうが良かったと推測。インストール後のファイルの配置が分かりにくい。削除する"make uninstall"がないため、Makefileを調査しなければならないが今回は見送りという形で次回用確認。
  • 設定ファイル
[root@water0 proftpd-1.3.3]# vi /usr/local/etc/proftpd.conf
Group                           nobody
DefaultRoot ~ ←アクセスできるディレクトリを制限(ホームディレクトリ以下のみ)
ListOptions "-a" ←隠しファイルを表示
  • 起動
[root@water0 proftpd-1.3.3]# cp /usr/local/setup/make/proftpd-1.3.3/contrib/dist/rpm/proftpd.init.d /etc/init.d/proftpd
[root@water0 proftpd-1.3.3]# chmod 755 /etc/init.d/proftpd
[root@water0 proftpd-1.3.3]# chkconfig --add proftpd
[root@water0 proftpd-1.3.3]# chkconfig proftpd on
[root@water0 proftpd-1.3.3]# /etc/init.d/proftpd start
  • ポート開放
[root@water0 proftpd-1.3.3]# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
  • 再起動
[root@water0 proftpd-1.3.3]# /etc/init.d/iptables restart

ftpの接続

データコネクション port20
制御コネクション port21
  1. データコネクション:クライアントは一時的に使われるポート1024番以上の値からサーバの21番ポートへ張られる。
  2. 制御コネクション:activeモードとpassiveモードの2種類
  • activeモード
サーバの20番ポートからクライアントへ張られる。
  • passiveモード
クライアントからサーバへ張られる。
サーバ側のデータコネクションには20番を使用しない。iptablesで20を閉じておいても良い。
クライアントからアクセスするためのポートの範囲を予め決めておく。
参考:http://web.kuicr.kyoto-u.ac.jp/~hattori/non-research/memo/tools/ftp.html
参考:http://chibi.name/fedora/server/pasv.shtml
  • 設定ファイル

passiveモードでアクセスするためには。

[root@water0 ~]# vi /usr/local/etc/proftpd.conf
#MasqueradeAddress 123.456.7.8 ←パッシブモードでクライアントにアクセスさせるアドレスを指定。通常自分のアドレス
PassivePorts 4000 4029 ←パッシブモードでクライアントにアクセスさせるポートを指定。"MaxInstances"より多く設定。
MaxInstances 30 ←アクセス制限
AllowOverwrite on ←ファイルの上書きを許可
Anonymousディレクティブをすべてコメントアウト
  • 再起動
[root@water0 ~]# /etc/init.d/proftpd restart
  • パッシブモード用にポートを開放
パッシブ用のポートを同じように開けると攻撃される。
クライアントに指定したポートだけ動的に開けるには"ip_conntrack_ftp"カーネルモジュールををロードする。
  • ロードされているか確認
[root@water0 ~]# lsmod|grep ftp
[root@water0 ~]# cat /proc/modules |grep ip_conntrack_ftp
ない場合は、ロードされていない。
  • "ip_conntrack_ftp"カーネルモジュールがあるか確認
[root@water0 ~]# modinfo ip_conntrack_ftp
filename:       /lib/modules/2.6.18-164.el5/kernel/net/ipv4/netfilter/ip_conntrack_ftp.ko
description:    ftp connection tracking helper
author:         Rusty Russell <rusty@rustcorp.com.au>
license:        GPL
srcversion:     E07D023E5C1EEB48A791EB8
depends:        ip_conntrack
vermagic:       2.6.18-164.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1
parm:           ports:array of ushort
parm:           loose:bool
module_sig:      883f3504a9f7848581431131ff6a527112421709d13e7f4825e9cabbde547ece82ef61549445e9da09cc9fe3b3f7dbf65fc35de98be78687c67cb2931
  • 依存関係調査
[root@water0 ~]# modprobe ip_conntrack_ftp --show-depends
insmod /lib/modules/2.6.18-164.el5/kernel/net/netfilter/nfnetlink.ko
insmod /lib/modules/2.6.18-164.el5/kernel/net/ipv4/netfilter/ip_conntrack.ko
insmod /lib/modules/2.6.18-164.el5/kernel/net/ipv4/netfilter/ip_conntrack_ftp.ko
※modprobeコマンドの場合、"/lib/modules/`uname -r`/modules.dep"ファイルを参照するので依存関係は考慮しなくてよい。
※insmodコマンド,rmmodコマンドの場合考慮しなければならない。
  • カーネルモジュールロード
[root@water0 ~]# modprobe ip_conntrack_ftp
※"modprobe -r ip_conntrack_ftp"はアンロード
  • ロードされているか確認
[root@water0 ~]# lsmod |grep  ip_conntrack_ftp
ip_conntrack_ftp       11569  0
  • アクセス確認
クライアントにFFFTPを使用。暗号化されないので注意。既存のFTPクライアントを使用してもよい。
ダウンロード:http://www2.biglobe.ne.jp/~sota/ffftp.html
[設定変更]-[拡張]タブ-[PASVモードを使う(V)]にチェック
※デフォルトでチェックがある。チェックをはずせばアクティブモード。
  • 認証に関するログ
[root@water0 ~]# less /var/log/secure
※rootユーザのみアクセス可能
  • 起動時にカーネルモジュールをロードさせるには。
modprobeコマンドは再起動された場合、自動的にロードはされません。
[root@water0 ~]# vi /etc/sysconfig/modules/ip_conntrack_ftp.modules
#!/bin/bash
/sbin/modprobe ip_conntrack_ftp
[root@water0 ~]# chmod 755 /etc/sysconfig/modules/ip_conntrack_ftp.modules
  • 逆に読み込みを禁止したいモジュールがある場合
[root@water0 ~]# vi /etc/modprobe.d/blacklist
blacklist ip_conntrack_ftp




最終更新:2010年05月05日 01:50
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。