2006/06/22(木)Fedora × FFFTP (3)

前回の続きです。
今回はxinetd経由でProFTPDをデーモンとして起動させる事を目的としています。

xinetd設定メモ

まず、xinetdが入っていないとお話になりませんのでxinetdが入っていなければインストールします。
#xinetdのインストール
yum -y install xinetd

#xinetdデーモンの自動起動 (レベル3のみ起動させる)
#インストールされると自動でレベル2~5で起動するようになっていますので必要のないレベルはオフにします
chkconfig --level 2 xinetd off
chkconfig --level 4 xinetd off
chkconfig --level 5 xinetd off

#xinetdデーモンの起動
service xinetd start

ProFTPDをxinetdで起動させるスクリプト

# vim /etc/xinetd.d/ftp
service ftp
{
        disable = no
   socket_type  = stream
   protocol     = tcp
   wait         = no
   user         = root
   server       = /usr/sbin/proftpd
}

ProFTPDをスーパーデーモンとして登録/起動確認

chkconfig --add ftp
service xinetd restart
$ftp localhost
でProFTPDが起動しているか確認します

後は

iptablesの設定を見直してFTPで接続できるか確認します。
次回はセキュアなproftpd.confの設定についての予定です。

参考にしたとこ

2006/06/18(日)Fedora × FFFTP (2)

前回、インストールまで行いました。
今回は設定ファイル(proftpd.conf)の作成と、動作確認まで行います。
前回の設定でインストールした場合、ProFTPD本体は/usr/sbin/proftpd,
設定ファイルは/etc/proftpd.confとなります。

設定メモ(proftpd.conf)

とりあえずデフォルトで用意されている項目を編集します。
よりセキュアな設定は次回に後回し。
#まず、送信する文字コードの指定を追加します。
#これはデフォルトのproftpd.confにはないので新たに追記する必要があります。
CharsetLocal		UTF-8	#サーバ内部の文字コード
CharsetRemote		SJIS	#クライアントに送信する文字コード

ServerName			"Kaede Server"	#サーバ名。お好きにどうぞ
ServerType			initd		#ProFTPDをデーモンとして起動する場合
DefaultServer			on		#unknownな行き先の接続を受け取る場合

Port				21
#ProFTPDの待ち受けポート

Umask				022
#デフォルトのUmaskを022とし、新規作成されたファイルやディレクトリの安定性を高める

MaxInstance			30
#standaloneモードでの子プロセスの数の最大数を設定。
#initdモードの場合は影響しない。

User				proftpd
Group				proftpd
#ProFTPDプロセスを走らせるユーザ名/グループを設定。
#Apacheがapache:apacheで走っているのでそれに倣ってproftpd:proftpdとする。

DefaultRoot			~
#ユーザが利用可能な領域を設定。"~"とした場合、
ユーザのホームディレクトリ以下のみアクセス可能。(chroot)

AllowOverwrite		on
#すでに存在するファイルの上書きを許可。

<Limit SITE_CHMOD>
	Deny All
</Limit>
#chmodを制限する設定。この場合全て拒否。

<Anonymous ~ftp>
#anonymous接続に関する設定。
	User			ftp
	Group			ftp

	UserAlias		anonymous ftp

	MaxClients		10

	DisplayLogin	welcome.msg
	DisplayFirstChdir	.message

	<Limit WRITE>
		DenyAll
	</Limit>
</Anonymous>

ProFTPDを動作させるユーザの追加

#adduser -d /usr/sbin/proftpd -s /sbin/nologin

動作確認

#/usr/sbin/proftpd
で、FFFTPで接続してみましょう。

問題なくログインできたら、日本語ファイルを適当にアップロードしてみます。
私は「てすと.txt」を作りアップロードしてみました。
[album:server:proftpd.jpg:large]
このように、問題なくアップロードできています。

今回は必要最低限の設定だけ行いました。
次回はよりセキュアな設定、デーモンとして起動させる方法なんかを
だらだらと書いていこうと思います。

参考にしたもの

2006/06/15(木)Fedora × FFFTP (1)

Winで使用するFTPクライアントの代表的なものとしてFFFTPがあげられます。
が、Fedora Core@UTF-8環境で使用している場合、FFFTPがUTF-8に対応していないため文字化けを起こしてしまいます。

解決策

  • Fedora CoreサーバのロケールをEUCに変更する
  • FTPクライアントをUTF-8対応のものに変更する
  • UTF-8対応のFTPサーバプログラムを導入する
私の環境ではすでにUTF-8で構築されているため、今更ロケールをEUCに変更するといろいろ不具合が頻発することになり、あまり選択したくない項目です。
次に、FTPクライアントをUTF-8対応のものを使用することはある意味正攻法といえます。が、多くの場合このようなFTPクライアントはシェアウェアです。
また、W-ZERO3などのCEデバイスにはそもそもUTF-8に対応したFTPクライアントソフトが無いため、これも選択したくない項目です。
と、いうことで残された最後の選択肢である「UTF-8対応のFTPサーバプログラムを導入」することにします。

必要なもの

*1 : FFFTPでファイル一覧がみれないという問題を回避するためのパッチ

インストールメモ

ここを参考にProFTPD1.3.0でやってみました
# cd /usr/local/src
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0.tar.gz
# wget http://www.hakusan.tsg.ne.jp/tjkawa
/software/misc/proftpd-iconv/pack/proftpd-1.3.0-iconv.patch.gz
# wget http://www.hayasoft.com/haya/linux
/proftpd-nlst-patch/proftpd-1.3.0-nlst-ffftp.patch
# tar -zxvf proftpd-1.3.0.tar.gz
# gzip -d proftpd-1.3.0-iconv.patch.gz
# patch -p0 < proftpd-1.3.0-iconv.patch
# patch -p0 < proftpd-1.3.0-nlst-ffftp.patch
# cd proftpd-1.3.0
# ./configure --prefix=/usr --sysconfdir=/etc
 --with-modules=mod_codeconv
 --with-modules=mod_codeconv:mod_df
# make
# make install

(#で始まる行は改行されていても1つのコマンドです)
次回に続きます

2006/06/10(土)DHCPサーバ構築

W-ZERO3の無線LANを手動で固定IP設定をしてやっても、
再起動すると設定したIPなどが飛んでしまうため、
DHCPサーバを構築することで回避することにしました。

DHCPサーバ設定メモ

インストール

[root@kaede]$ yum -y install dhcp

DHCP設定 (dhcp.conf)

ddns-update-style none*1;

subnet 192.168.0.0 netmask 255.255.255.0*2 {
	option*3 routers*4	192.168.0.1;
	option subnet-mask		255.255.255.0;

	option domain-name		"kaede.homedns.org";
	option domain-name-service*5	192.168.0.254;

	range dynamic-bootp*6		192.168.0.200 192.168.0.253;
	default-lease-time		21600;
	max-lease-time	43200;
}

host client*7{
	hardware ethernet*8	01:23:45:67:89:AB;
	fixed-address*9		192.168.0.200;
}

参考にしたもの

*1 : #BINDと組み合わせることもできるが、とりあえずDHCPサーバとして稼働させるためにnoneを設定

*2 : この場合192.168.0.0/24のネットワークにIPを割り当てる

*3 : optionで始まる項目はクライアントに与える情報

*4 : デフォルトゲートウェイ

*5 : DNSサーバを指定

*6 : 貸し出すIPの範囲を指定

*7 : 固定IPを割り当てる設定

*8 : NICのMACアドレスを指定

*9 : 割り当てる固定IP

問題点

W-ZERO3からファイルサーバにアクセスすると毎回「ネットワークへのログオン」が表示され、
「パスワードの保存」がされていない。*10
これはW-ZERO3側の問題なのでこの件について調べる必要がある。

*10 : W-ZERO3に限らずWin95の頃のダイヤルアップ接続時にも同じような問題があった気が…

今後の予定

  • BINDとの連携

2006/06/09(金)WinMeのUserAgent

WinMeのブラウザのUser Agentを取ってみた

Firefoxの場合
HTTP_USER_AGENT=Mozilla/5.0 (Windows; U; Win 9x 4.90; ja; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4

Sleipnirの場合
HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322)

ここからわかることは、どちらもWin9x 4.90が入っていること。

ところで、かえでのアルバムに許可されていないドメインから画像のアップロードなどをしようとすると、
403 Forbiddenが返されるわけだが、User Agentに"Win9x 4.90"が含まれていたら
403 Forbidden
リクエストは拒否されましたが、Meたんのせいではありません
の様に返すようにしようとか企んでいます。