proftpd

さて、ftp鯖です。
ファイル転送に必須だった(過去形)ftp鯖です。
今や、パスワードを生のまま垂れ流しているからセキュリティが悪いとかなんとか・・・

まぁ、でも、いまだに現役バリバリ(死)なサービスです。
いらないかなぁ・・・と思ってたんですが、やっぱり使ってみたい!
ってことで、インストール♪
「セキュリティが悪い」
って言うかさ、わざわざ個人鯖のパスワードを盗聴する人って居るんでしょうか?
盗聴って面倒臭いらしいし・・・
まぁ、sshでほとんど同じことができるし、個人使用ではわざわざ外部公開する必要性がないのは否定しないけどさ・・・
でも、まだまだ便利なサービスだと思うけどなぁ・・・

やること一覧
	・警告PAMの再インストール事前準備インストールProFTPD NLSTパッチ設定変更I.E.対策

関連ページ
	・pam(suの実行ユーザー制限のため)xinetd(アクセスコントロールのために)



警告
anonymous-FTPを許可すると誰でも玄箱内をのぞくことができます。
不適切な設定だと最悪クラッキング/システム改ざん等の可能性があります。
第3者からのファイルのアップロードを受ける必要が無ければ、
FTP鯖を”使用しない”ことをお勧めします。

PAMの再インストール

必須というわけではない。
やらなければやらないでいい。というだけ。

やりたい人はpamを参照のこと。
「pam」
ftp鯖では何度かはまってるんですが、これが最初のはまりポイント。
純正そのままだと、pamのバージョンが低いためか「pamがねぇよ!ヽ(`Д´)ノ」といわれます(うろ覚え)
で、pamのことを調べると・・・結構重要そうな部分じゃん(;´Д`)弄りたくねぇ・・・
と、断念したというわけ。

事前準備

/bin/pwdが無いといわれるのでシンボリックリンクを張る(coreutilsにて既出)

	# ln -s /usr/bin/pwd /bin/pwd
proftpd用のユーザー作成
	# groupadd -g 24 proftpd
	# useradd -g proftpd -u 24 -d /var/empty -s /bin/false proftpd
ユーザーをロックする
	# vipw
	または
	# vi /etc/passwd
		変更点:! を * に書き換える
「事前準備」
pamさえ何とかすればいつも通りって感じの準備です。
サクッと逝きましょう。
ちなみに vipw は su - のrootでないと実行できませんので注意してください。
まぁ、sbinのコマンドってことです。

インストール

FFFTP用の修正も一緒に行う。
パッチはバージョンによって違うので注意すること。

proftpd-1.3.0a.tar.gzとproftpd-1.3.0a-nlst-ffftp.patchを探してくる。
The ProFTPD Project: Home
ProFTPD NLSTパッチ
で、ユーザーのホームディレクトリにFFFTPで送る。
例のあれ

	$ tar xvfz proftpd-1.3.0a.tar.gz
	$ patch -p0 < proftpd-1.3.0a-nlst-ffftp.patch
	$ cd proftpd-1.3.0a
	$ ./configure --prefix=/opt/proftpd [--disable-auth-pam]
		

option説明など
--disable-auth-pampamによる認証を使わない
pamを入れなおしていなければ指定しないとエラーになる

$ make # make install
「--disable-auth-pam」
このオプションがわからず「pamがない=コンパイルできない」と思い込み挫折しました。

そういえば、最初はパッチも当てずにコンパイルしていたんだよね〜(^^A"

設定変更

起動前にやらなければならないことがたくさんある。

設定の方針は、以下の通りとする(全てできます@面倒だから設定は書かないけど)
  ・純正FTPと共存する。
  ・anonymousのみ接続できるようにし、他ユーザーは一切接続できないようにする。
  ・また、warezなどに利用されないようにアップロード専用フォルダとその他を区別し、
  アップロード専用フォルダからダウンロードできず、その他にはアップロードできないようにする。
  ・xinetd経由での起動のみとする。

設定ファイルを弄る

	# vi /opt/proftpd/etc/proftpd.conf
		注:まぁ、がんばれ(ヒント
hosts.allowに許可を記入
	# vi /etc/hosts.allow
		(追加)
		┃proftpd : 192.168.0.
			注:本格的に運用するときにはALLなどを許可する
/var/log/wtmpがないといってくるので
	# touch /var/log/wtmp
ログファイルの作成
	# touch /opt/proftpd/var/system.log
	# touch /opt/proftpd/var/extend.log
	# touch /opt/proftpd/var/transfer.log
/etc/ftpusersにftpがftpへのログイン不可ユーザーとして書かれているので修正
	# vi /etc/ftpusers
		(修正)
		┃#ftp
anonymous用のUPフォルダ作成
	# mkdir /mnt/share-mac/up-only
	# chmod 777 /mnt/share-mac/up-only
		注:anonymous用のフォルダとして/mnt/share-macを利用している
xinetdの設定ファイルを書く
	# vi /etc/xinetd.d/proftpd
		(新規)
		┃service proftpd.sub.ftp
		┃{
		┃	type         = UNLISTED
		┃	port         = 2121
		┃	socket_type  = stream
		┃	protocol     = tcp
		┃	wait         = no
		┃	user         = root
		┃	server       = /opt/proftpd/sbin/proftpd
		┃	server_args  = 
		┃	disable      = no
		┃	access_times = 5:00-18:00
		┃}
			注:サービス提供時間を5時〜18時に制限している
xinetdの再起動
	# /etc/init.d/xinetd reload
接続テストを行う。
接続できないようなら、ログファイル(/var/log/messagesなど)を確認して間違いを修正する。

ログローテート
	# vi /etc/logrotate.d/proftpd
		logrotate参照
	# crontab -e
		┃30  4  *  *  *  cp /dev/null /var/log/wtmp
			wtmpは特殊なアクセスログなので定期的に内容を消去(肥大していく)
	または、
	# vi /etc/logrotate.d/binary_log
		(新規)
		┃/var/log/?tmp {
		┃    missingok
		┃    monthly
		┃    create
		┃    olddir /var/log/old
		┃    rotate 1
		┃}
ルーターの設定をする
	1.ポート変換機能のあるものはwan:21を開放してlocal:2121に変換(または2.)
	2.変換機能の無いものは2121を開放してクライアント側でポート2121を指定してもらう
		アドレスは ftp://[yourhost.yourdomain]:2121/ となる。
「warez」
個人鯖でも利用される可能性は高いと思います(見つかれば、だけど)
特に今回はanonymousでの公開を目標としているので誰でも利用できる便利さと危険性がある。
公然と公開するから、ちょっと悪意を持ったユーザーに見つかるとひどい使われ方をされるのは火を見るより明らかです。
ここは利便性を犠牲にして、ちょっと面倒な管理形態にしています。

皆さんは、利便性とリスクを考えて公開方法を決めてください。

まぁ、たいていの人は「純正ftpが使えないからproftpdに切り替えたい」と思ってるでしょうから、
ここに書いている情報をそのままでは使えないと思いますけどね(^^A"

I.E.対策

I.E.:つまりはインターネットエクスプローラのこと。
IEではパッシブ接続しかしないのでルーターの中のproftpdに接続できないことがある。
その問題を回避する方法。

対策1:IEの設定を変える
	インターネットオプション>詳細設定の中のブラウズ:パッシブFTPのチェックをはずす
		問題点:全員に同じ設定をしてもらうのは非現実的

対策2:passiveモードで使うポートを制限(指定)して、ルーターで指定したポートを開放する
	# vi /opt/proftpd/etc/proftpd.conf
		(追加)
		┃#passive mode settings : ddns set and limit passive mode use port
		┃MasqueradeAddress [your.domain]
		┃PassivePorts [start port] [end port]
			注:MaxInstancesの分だけ開けておけば良い
			注:他のサービスとかぶらないようにする( /etc/services 参照)
	PassivePortsで指定したポートを開放する(ルーターの設定)
		問題点:ほとんど無駄に開いているポートが30くらい発生する

対策3:使えないIEなんか使うな!FTPクライアントソフトを使え!(を
	要は、passiveモードを使わなければ接続できます
	(UP/DOWNの)安全性から言ってもクライアントソフトを使ったほうが良いです(FFFTPなど)
		問題点:だから、不特定の人たちに・・・(ぶつぶつ

対策4:ルーターにパッシブモードで公開可能な機能があればそれを使う
		問題点:全部のルーターにあるわけじゃない
「問題を回避する方法」
一番無難なのは、対策2なんでしょうけど・・・
ルーターに機能があればそっちを使うと良いですよ♪
接続テストは自分では行えないでしょうから、おやじさんのFTPチェッカーを使われるといいと思います。
ポートが21の人限定みたいだけど・・・


戻るなら押せ!