> Linux

Linux

Windows Home Server 2011 でMac OS X Lion (10.7) 以降用のTime Machine 用バックアップ領域を作る

Dell SC440 にWindows Home Server 日本語版 Power Pack 1 DSP版 を入れてみた : インストール編」、「Dell SC440 にWHS 日本語版 PP 1 DSP版 を入れてみた : WHS Connector ソフトウェア編」 から5年、まぁ大変便利にWHS(Windows Home Server) を使ってきたのですが、流石に最近調子が悪くなってきたので、WHS 2011 にリプレースしました。

...という話はまたにして、今回はタイトルの件。自分用メモを兼ねてこれだけ先に書いときます。

Mac OS X Lion (10.7) 以降、AFP のバージョンが上がって普通のNAS にTime Machine のバックアップが取れなくなりました。


で、WHS の時代はcoLinux でLinux 環境作ってそこにバックアップする、てやり方を使ってました。

割とちょくちょくバックアップ領域が吹っ飛んでくれたりしてバックアップとして有用なのかは不明ですが、自動的にバックアップしてくれるのは便利っちゃー便利でした。ここまで前振り。

PuTTY 0.60 ごった煮版 2007年8月6日版 からGDI PuTTY に入れ替えてみた

これまでずっとPuTTY を使ってるんですが、ながらく「ゑBLOG: PuTTY 0.60 ごった煮版 2007年8月6日版」 のままだったので、ちょっと気になってました。

でも乗り換え先がなーってところでずっとそのままにしてたのですが、ようやく(今頃になってとも言う) いい感じのを見つけたので早速入れ替え。

こちらも同じ PuTTY 0.60 ごった煮版 2007年8月6日版 ベースなので、putty.ini と.ppk を移してそのまま問題なく。

同じ作者さんの「D2D/DW PuTTY」 てののほうがより表示が綺麗になるみたいですが、「動いている間は動いていますが、動かなくなると動かなくなります。」 というのがちょっと気になったので、GDI 版で。それでも背景の透明化が出来るようになったりしたのでそれだけでもいい感じです。

さくらのVPS 2G 申し込んでみた

今alectrope.jp として運用しているこのサーバは(オーバースペックかなーとか思いつつ...) さくらのVPS 1G(月額1,480円) を使ってるんですが、同じ金額なのに仮想CPU が2 から3、メモリが1GB から2GB、そしてHDD が30GB(20GB+10GB) から200GB(1パーテーション) になってて大盤振る舞いすぎるというか同じ値段なのにこの違いは何? と。

一応、1G の場合はメモリが1GB から1.2GB へと増量されるようですが、VPS といっても何でも自由にできるというわけではなく、色々制限があるのは仕方ないとはいえそれだけではなぁと。というわけで、乗換優遇策も発表されたので、もやもやしながら使い続けるくらいなら、面倒でもがんばって乗り換えてしまえ、となりました。

PDF ファイルの説明によると、さくらのVPS の新プランを新規契約後、04/20 までに既存の(旧)プランを解約手続きを行っておくと、そのまま05/31 まで無料で継続使用可能とする(=1ヶ月無料で使える) ので、この併用期間内に新プランに移行してね、ということみたい。

移行先プランは、1G なら今とほぼ同じでHDD だけ増量、月額利用料金は500円安くなる(月額980円) なので1G か2G で迷ったのだけど、まあ初期費用無料キャンペーンもやってるし(かなりの)余裕を見て2G にしとけば困ることはないだろう、ということで2G を選択。

で、今日受付再開したので申し込み。


サーバーの移行については、rsync を使う方法があるようなのだけど、移行元がCentOS 5.8(x64)、移行先が標準だとCentOS 6.2(x64) となるようなのでこの方法は使えない。

いや移行元のCentOS 5.8 をアップグレードしたらいいんじゃない? という話ではあるんだけど今動いてるものをどうこうするのは怖いし、そもそもCentOS 5 からCentOS 6 へのアップグレードは推奨されてない(RHEL 自体そういうポリシー) ようなので、これまでと違ってリスキーな感じ。

なので新規インストールした上でまた一から構築する予定。去年構築したときに手順のメモを作って、結局時期を逃して公開せずじまいになったので、今度こそちゃんとまとめて公開する。今度こそ。


あと、VPS じゃなくてレンタルサーバーの移転ですが、コンテンツの移行とDNS の変更は凄く参考になるのでまた後ほど参照予定。

追記

乗り換えプランの期間が延長され、04/20 あるいは05/20 までに申し込めばそこから1ヶ月無料、となるとのこと。

IBM x3105 にCitrix Xen Server Express 入れてみた (1) ハードウェア編

リニューアルしました」 の詳細を今頃になって書いてみる。

IBM x3105 のCPU、HDD、ディスクドライブを交換、メモリを増強、Citrix Xen Server Express 4.0.1 をインストールし、その上に仮想サーバとしてこのMT4 をホストしているサーバと、旧サーバをP2V して同居させてます。

まずx3105 詳細。2007/02 頃に4347-22J のOS なしモデルが安売りされてたので、衝動買い。

オリジナルの構成だとAthlon 64 3500+、512MB、80GB、CD-ROM ドライブなので、これをそれぞれ、Athlon 64 X2 4400+、WD5000AACS 500GB、DDR2-667 512MB + 512MB + トランセンド 2GB 専用メモリ/IBM(1GB x2)= 3GB、ソニーNECオプティアーク AD-7170A という構成に変更。

x3105_mem_samsung.jpg

メモリは、元々付いてたのがSAMSUNG のだったので、やふおくで同等品と思われる物を購入。

x3105_mem_transcend.jpg

で、トランセンドのメモリを追加。

エントリーとはいえサーバはサーバなので静音性など考慮されているはずもなく、筐体内部の音が筐体内で反響しているようだったので、オトナシートと側板や要所に貼り、隙間にはハンズで売ってる片面が波形になっているスポンジ を敷き詰め、HDD はAbee AS Silencer 2 に入れて5インチベイに押し込み、どうにか許容できる感じになりました。

5inchbay_1.jpg

5インチベイの固定方法はちょっと特殊で、ねじ穴に板を差し込み、その板でケースに固定するようになってます。AS Silencer 2 のねじ穴は1列しかないため、板をちょっと加工する必要がありました。

5inchbay_2.jpg

実際に取り付けるとこういう感じ。

ケース内部の写真は撮り忘れたので、またいずれメンテで開けたときにでも撮る所存。

また、部品の交換などにあたり、大変参考にさせていただいたので最後にリンク。ありがとうございます。

日本標準時なNTP サーバ

日本標準時、とか聞くと早速設定を変えてゆきたい!! という誘惑に駆られるのだけど、ちょっと様子見。ウチのネットワーク的にはどこを指定するのが一番安定してるのかなぁ。

今はmfeed の3つを指定中。で、こんな感じ。


$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ntp1.jst.mfeed. fs-monntp1.mfee  2 u  526 1024  377   20.094   -0.905   1.806
+ntp2.jst.mfeed. ote-ntp1.jpnap.  2 u  582 1024  377   15.691    0.329   0.079
*ntp3.jst.mfeed. fs-monntp1.mfee  2 u  435 1024  377   15.972    0.461   0.094

スラッシュドットの書き込みで知ったのだけど、こういうサーバもあるみたい。

(2006/06/15 16:34 追記)

でntpq -p の結果を募集されてたので投稿してみた。

(2006/06/15 16:47 追記)

WWWOFFLE とEstraier で過去に見たWeb ページを全文検索

WWWOFFLE とは、プロキシソフトです。ダイアルアップで頻繁に切断することが主流だった頃、オフライン時でも前に見たことのあるページを表示したり、オンラインになった際に特定のページを自動的に見に行くようにしたり、という利用方法を想定していたようです。

いまどきの常時接続時代には無用のものと思いきや、見たページを全てローカルにキャッシュした上で全文検索エンジンにかけることにより、「あのページどこだったっけ?」 みたいな時に役立つ自分専用記憶補完装置になります。

今回のWWWOFFLE + Estraier 以外にも、WWWOFFLE + namazu(mknmz-wwwoffle) や、あるいはSquid + namazu というやりかたもあります。

ちなみに、色々試して、PC - (WWWOFFLE) - (Squid) - The Net という多段プロキシ構成にしています。Squid では可能な、「特定のURL からのリファラをカットする」 という設定がWWWOFFLE にはない(特定のURL には送らない、しか出来ないっぽい) のと、WWWOFFLE はHTTP 1.1 に対応してなくてあからさまにプロキシ判定されたりしたので。

逆に、特定のURL の画像は取得しないようにする、などの広告フィルタ機能とかが結構使える感じです。2段にすることで色々ムダもありそうですが自分専用のシステムならまあいいかなと。キャッシュをHDD に貯める関係上、明らかにもっさりになった気もしますが、ま、それはそれ。

WWWOFFLE のインストール

まず、オフィシャルサイトの「The WWWOFFLE Version 2.8 Download Page」 から"wwwoffle-2.8e.tgz" をダウンロードします。

当初ぷらいべーとRPM置場 から"wwwoffle-2.7h-1.nosrc.rpm" を流用し、中のSPEC ファイルをちょこちょこと変えたらいけるんじゃないかな、と甘い見通しを立ててたのですが、「error: Package already exists: %package debuginfo」 というエラーが出たり。これはrpm-4.2 以下で出るエラーらしく(ウチのはまさしくrpm-4.2-1)、ひとまず、"%install" という文字列を削除するなり変更するなりで回避できたものの、やっぱり最後までビルドが通らず。

どうしたものかと"wwwoffle-2.8e.tgz" の中身を見ていたところ、"contrib/redhat3/wwwoffle.spec" がRHL9 用であることが分かったのでこいつでビルドしてみたところ、無事出来ました。

結構高機能なので出来る事も多く把握しきれないのですが、とにもかくにも"/etc/wwwoffle/wwwoffle.conf" をひたすらカスタマイズすることになります。設定ファイルの中では、"DontCache" と"DontGet" の使い分けが重要です。"DontCache" は普通に読み込むけどキャッシュはしないので、Google などの検索結果や、ファイルサイズの大きくなりがちな画像などはここで指定。"DontGet" は広告カットや危険なサイトなどを指定し、全くアクセスできないようにします。"wwwoffle-dontget.conf" を丸ごとインクルードして必要なサイトだけ除外指定したり追加したりするのがラクチンかも。

変更した設定は"/etc/rc.d/init.d/wwwoffled restart" で再起動させれば反映されます。ただし起動直後はオフラインモードになるようなので、ブラウザでコントロールページに行き、"Online" ボタンを押すか、コマンドラインから"wwwoffle -online -c /etc/wwwoffle/wwwoffle.conf" でオンラインモードに移ります。あとは何も考えずにあちこち見て回れば自動的にざくざくキャッシュされていきます。

Estraier のインストール

オフィシャルページの説明が大変優れているので、この通りにやれば問題ないと思います。

libiconv はSamba 3.1.0 を入れた時 に"libiconv-1.8-1.src.rpm" を一緒にいれましたが、「1.9.1より前のバージョンにはメモリリークの問題がある」 とのことなので入れなおすことにしました。前にSRPM から作った時のSPEC ファイルを流用したのですがどうにもうまく行かないのでさっくり諦め、"libiconv-1.10.tar.gz" に"libiconv-1.10-ja-patch" をあてて普通にソースからインストール。

最初は何もconfigure オプションを付けずに作ってインデックスを作って検索もして感動したのですが、標準の機能ではたとえば「はてな」 などがインデックスされないので、別途解析用のプログラムを組み込むことにしました。ということで選んだのはMeCab。

インストールには「ipadic-2.4.4/2.5.0/2.5.1のいずれか1つ」 が必要とのことなので、"mecab-0.81.tar.gz" と一緒に"ipadic-2.5.1.tar.gz" を拾ってきて手順どおりにインストール。特にconfigure オプションは付けず。

最終的にEstraier のconfigure オプションは"./configure --enable-mecab --enable-regex --enable-dlfilter" のようにしてみた。

あとはWWWOFFLE のキャッシュのインデックスを作るだけ。まずはブラウザでアクセス可能な場所にフォルダを作り、そこで以下のコマンドを実行。"estsearch.cgi" は"index.cgi" 等にリネームしても大丈夫です。

cp /usr/local/libexec/estsearch.cgi /usr/local/share/estraier/locale/ja/estsearch.* .

以下のようなスクリプトを組み、1日1回、真夜中に回すようにしてみた。


cd 上記で作ったフォルダ
estwolels /var/cache/wwwoffle/ | estindex register -list - -tsuf "" -hsuf "" -msuf "*" -mn -iz casket
estindex relate casket

インデックスされたものは全て"casket" フォルダ以下に入るので、ここのアクセス制限は厳密にやっておいたほうがよいと思います。

これで検索できるようになったわけですがひとつ気になる点が。WWWOFFLE でキャッシュされるファイルのtimezone がGMT になっていて、Estraier での検索結果もGMT のまま。インデックス作成時のオプションとかにもそういった指定はなさそうだし、考え方としてはたぶんWWWOFFLE ではなくてEstraier のソースファイルのどこかをどうにかすればいいのだろうけど、どこをどうしたらいいのやら。どうにかできんもんかなぁ。

PHP 4.3.11 に脆弱性のパッチをあてたRPM を作ってインストール

PHP 4.4.0 以下およびPHP 5.0.5 以下の脆弱性に対処するために、PHP 4.3.11 にパッチをあてたRPM ファイルを作りました。基本は、これまでのとおなじSPEC ファイル に、上の「PHP/patch/$GLOBAL保護パッチ」 ページから頂いた「PHP 4.3.11用 - php-4.3.11-global.patch (要検証)」 のパッチをあてました。

SPEC ファイル内の適当な箇所に


Patch99: php-4.3.11-global.patch

%patch99 -p1 -b .global

などと書いてビルドしました。

今回、FC3 用のPHP 4.3.11 SRPM では最後のtest で引っかかってビルドできず、自前SPEC ファイルとオフィシャルのPHP 4.4.1 tarball でも途中で止まり、FC4 用のPHP 5.0.4 はMySQL 4.x が必要で…とかで割と八方ふさがりでした。今回は何とかお茶を濁せたものの、まただいぶ環境を汚してしまったし、RHL9 を引っ張って使い続けるのも限界かもなァ。この数日、何度心が折れそうになったことか!!

色々調べてるときに見つけた参考サイト。

Apache 2.0.55 のRPM ファイルを作って入れ替え

えーと、かなり色々と迷走してたので本日15:15頃 - 16:00頃 までの間、Web サービスが止まっておりました。

さて、その色々な経緯を書くととても長くなるので、ウチのRHL9 環境でうまく行った(と思われる) 方法を書いておくことにします。当然ながら、他の環境でうまく行くかどうかは無保証です。

apr 関連のパッケージをインストール

ftp://ftp.kddilabs.jp/Linux/packages/fedora/core/development/SRPMS/ から、"apr-0.9.7-2.src.rpm" と"apr-util-0.9.7-3.src.rpm" をダウンロードしてビルド、インストールします。

wget ftp://ftp.kddilabs.jp/Linux/packages/fedora/core/development/SRPMS/apr-0.9.7-2.src.rpm
wget ftp://ftp.kddilabs.jp/Linux/packages/fedora/core/development/SRPMS/apr-util-0.9.7-3.src.rpm
rpmbuild --rebuild apr-0.9.7-2.src.rpm
rpmbuild --rebuild apr-util-0.9.7-3.src.rpm

出来上がったらまとめてインストール。もし依存関係でエラーが出たら、"--force" を追加。


rpm -Uvh /usr/src/redhat/RPMS/i386/apr-0.9.7-2.i386.rpm /usr/src/redhat/RPMS/i386/apr-devel-0.9.7-2.i386.rpm /usr/src/redhat/RPMS/i386/apr-util-0.9.7-3.i386.rpm /usr/src/redhat/RPMS/i386/apr-util-devel-0.9.7-3.i386.rpm

Apache をインストール

オフィシャルのSRPM ファイルがいつの間にか用意されているのでこれを利用します。ftp://ftp.kddilabs.jp/infosystems/apache/httpd/binaries/rpm/SRPMS/ から"httpd-2.0.55-1.src.rpm" をダウンロード、ビルドしてインストール。

ftp://ftp.kddilabs.jp/infosystems/apache/httpd/binaries/rpm/SRPMS/httpd-2.0.55-1.src.rpm
rpmbuild --rebuild --target i686 httpd-2.0.55-1.src.rpm
rpm -Uvh /usr/src/redhat/RPMS/i686/httpd-2.0.55-1.i686.rpm /usr/src/redhat/RPMS/i686/httpd-devel-2.0.55-1.i686.rpm

あとは"/etc/httpd/conf/httpd.conf" とかを編集したりとかして、最後に


/etc/rc.d/init.d/httpd start

して問題なく起動できればOK です。

エラー対策など

Apache 2.0.55 では"apr" と"apr-util" のバージョンが低いとhttpd サービスを上げるときにエラーが出たりするようです。以下はエラーの一例。


httpdを起動中: Syntax error on line xxx of /etc/httpd/conf/httpd.conf:
Cannot load /usr/lib/httpd/modules/mod_cgi.so into server: /usr/lib/httpd/modules/mod_cgi.so: undefined symbol: apr_procattr_addrspace_set

この件について困ってる人もいるみたいなのだけど根本的解決がよく分からず、結局"apr" と"apr-util" のバージョンをそれぞれ"0.9.7" に上げたら解決してしまったのでこれはこれで。

chkrootkit のSRPM からRPM を作る

典型的な(既知の) rootkit を検出できるchkrootkit をインストールしてみます。

現時点での最新版は"chkrootkit-0.45.tar.gz" です。当初、例によってRHL9 用の最終バージョンのSRPM("chkrootkit-0.44-0.fdr.2.rh90.src.rpm") を拾ってきてSPEC ファイルを抜き出し、適当にRPM ファイルを作ってみたのですが、その後fedora extras にRPM を見つけたので、なんとなくこっちに切り替え。SRPM 拾ってさくっとビルド。


# wget http://ftp.kddilabs.jp/Linux/packages/fedora/extras/4/SRPMS/chkrootkit-0.45-3.src.rpm
# rpmbuild --rebuild --target i686 chkrootkit-0.45-3.src.rpm
# rpm -Uvh /usr/src/redhat/RPMS/i686/chkrootkit-debuginfo-0.45-3.i686.rpm

とりあえずの使い方は、


# /usr/sbin/chkrootkit

でズラズラっとでてきます。

本来ならcron で定期的にチェックするようにしたり、安全が確認できている(インストール直後とかの) 状態の各種コマンドをFD とかCD-RW とかにコピーしておいて、チェックするときはそれを使う、とかしないといけないようだけど、とりあえず今日はここまで。

雷対策の一環としてのUPS 導入

えー、自宅サーバを稼働させて結構になりますが、実は雷対策は全然してなかったり。だめじゃん。

一応、建物レベルでは10kA まで耐えられる避雷器付き配電盤(たぶんこれ と同等品) なんかがついてたりしてますが、当然、落雷後の停電に対しては無防備。

新品も結構するので、ここはひとつ、所詮自作機の自宅サーバですし、ってことで、なんとなく、やふおくでよさげなAPC Smart-UPS 1400 をゲット。

付属品として、通信ケーブルである940-0024C とかPOWER CHUTE plus とか付いてたのですがケーブルだけ流用して、管理ソフトはapcupsd を利用。今回はちょっと手抜きしてRHL9 用の "apcupsd-std-3.10.18-1.rh9.i386.rpm" をダウンロードしてそのままインストール、ITmedia の記事の通りで初期チェック完了。

apcupsd はネットワーク経由で複数台のPC の電源管理が出来るようなのですが、とりあえず、Linux サーバだけ。UPS のコンセントを抜いてバッテリ駆動が出来ることも確認。

あとは瞬停が致命的な、TV 録画予約もやっているメインPC とCRT もぶら下げてみた。停電時のバッテリ駆動時間のことを考えるならばCRT でなく液晶の方がよいですね。まだ余裕があるようなのでゲームPC もぶら下げるか、もう1台サーバを増やしたとしても対応できそうです。

で、設置後、3日間ほど様子を見ていますが、通電時はさほど発熱もないし、騒音も皆無なので、良い感じです。

余談ですが、電話線は気休めのサージフィルター、光ファイバはたぶん雷に対しては耐性がある、あとケーブルTV は宅内引き込みの保安器で対策されてるのかな? という感じ。

ま、色々考えても雷直撃したら終わりですけどね。

(2005/08/03 23:53 追記)

そうそう、今回入手したSmart-UPS 1400 は、2000年に稼働開始したようなのですがその割にはまだバッテリは生きています。ただ、メーカ的にはだいたい2年で交換すべし、とあるので、近いうちに交換しないといけないかも、なメモ。

純正品だと「RBC7L」 というやつ。実売でも2万円後半、と結構する。もう少し安くしたいなら天翔電源製作所の「RBC7L」 互換品、「LHM15-12 2本セット」 というバッテリがよさそう。20,000円(+送料等)。あるいはUPS 丸ごと買った方が良いかもしれない。

もっと安く済ませたいなら自己責任で、秋月電子の「WP22-12」 というバッテリを2コ買って自分で取り付ける。これなら2コで10,000円と少し(+加工の手間暇)。写真付きの取り付け記事があるのもありがたいです。

(2005/08/11 14:47 追記)
外で雷が鳴り出すと「入れててよかったUPS!!」 という安心感が得られます。ログなどを見返してみても、幸い、今のところはまだ停電にはなっていない模様。そもそもこの5年で停電になったのは早朝に電力会社の送電設備側で事故が起きて停電、くらいなモンです。

ウチと同様、Smart-UPS 1400 の中古で運用している方は多いみたいです。この上のクラスになるとさらにサイズアップするし、バッテリも4個組みになったりするしね。

(2005/08/11 22:47 追記)
バッテリ交換せずに限界まで放置した実例。怖いすぎる…!! 早いうちに交換しよう……。

  • 2004/06/29
    http://trashbox.homeip.net/nownow/20040629/

(2005/08/16 23:00 追記)

(2006/07/09 17:30 追記)

  • apcupsd
    http://www.xa10.com/apcupsd/

PHP 4.4.0 のコンパイルエラー

上記サイトから入手できる


PHP 4.4.0 (tar.gz) [4,856Kb] - 11 Jul 2005
md5: 4c12d241216e4ca2f2ce2cb7ee5de48b

で、"--with-regex=system" を指定しているとコンパイル途中に


make: *** [ext/standard/reg.lo] Error 1

というようなエラーが出て止まってしまいます。これはPHP 4.4.0 の問題のようです。

で書かれているように、PHP Snapshots から最新版を落としてくればビルドが通ります。4.4.0 から今日までのスナップショットでは


?? ??? 2005, Version 4.4.1
- Fixed bug #33690 (Crash setting some ini directives in httpd.conf). (Rasmus)
- Fixed bug #33673 (Added detection for partially uploaded files). (Ilia)
- Fixed bug #33648 (Using --with-regex=system causes compile failure). (Andrei)
- Fixed bug #33156 (cygwin version of setitimer doesn't accept ITIMER_PROF).
  (Nuno)
- Fixed bug #32160 (copying a file into itself leads to data loss). (Ilia)
- Fixed bug #31158 (array_splice on $GLOBALS crashes). (Dmitry)

が修正されています。今回の件はFixed bug #33648 のようですね。4.4.0 はメンテナンスリリースとのことですが、4.4.1 もリリースされそうですね。

Linux 版Adobe reader 7.0 日本語版

待望のAdobe reader 7.0 日本語版 for Linux がリリースされました。tar.gz と、RPM の2種類があります。RPM が使える環境の場合はRPM パッケージを使ったほうが何かとラクでしょう。

Web ですぐ見つけられるところに載ってない気がするので、「必要システム構成」をまるまる引用。

必要システム構成: ====================

Linux(R) 版 Adobe Reader 7.0 を実行するために必要なシステム構成
- 32 ビット Intel Pentium(R) クラスのプロセッサ
- Linux カーネル 2.4 以降
- GLIBC バージョン 2.3 以降
- 128 MB の RAM(256 MB を推奨)
- 110 MB のハードディスク空き容量
- アジア言語のフォント(オプション)をインストールする場合はさらに 40 MB
のハードディスク空き容量
- サポートされている Linux ディストリビューション:
o Red Hat Linux AS 3.0(2.4.21)、4.0(2.6.9)
o Red Hat Linux ES 3.0(2.4.21)、4.0(2.6.9)
o Red Hat Linux WS 3.0(2.4.21)、4.0(2.6.9)
o Red Hat Linux Desktop
o Red Hat Linux 9.0(2.4.20-6)
o SUSE Enterprise Server 9X(2.6)
o SUSE Professional 9.2(2.6.4)
o Novell Linux Desktop 9.x(2.6.4)
o Turbolinux 10 Desktop(2.6)
o Red Flag Linux Desktop 4.0


Web ブラウザのサポート
次のブラウザ内で PDF ファイルを表示できます。
o Mozilla 1.7.3、1.8
o Firefox 1.0
o Netscape 7

インストール後、ブラウザプラグインを手動でインストールする必要があります。通常は"/usr/local/Adobe/Acrobat7.0/Browser/" 以下の"Browser_Plugin_HowTo.txt" をよく読んだ上で、同じ階層にある"install_browser_plugin" を実行。

パッケージは入れたものの、プラグインのインストールや動作確認まだなので、ひとまずこのへんまで。

SARG でSquid のログ解析

先週くらいから、Squid のログ解析をやろうかと調べていまして、SARG はそのうちのひとつです。

<mack.ro /> から"sarg-2.0.7-1.mack.src.rpm" を頂いてきて、RPM を作成します。特にSPEC ファイルもいじることなく、ビルドも通りました。

ただ、デフォルトだと日本語の文字化けが起きるみたいなので、SARG FAQ を見て、ソース(charset.c) に手を加えました。


wget http://mack.ro/linux/sarg/sarg-2.0.7-1.mack.src.rpm
rpm -ivh sarg-2.0.7-1.mack.src.rpm
tar xvzf sarg-2.0.7.tar.gz
emacs sarg-2.0.7/charset.c
rm sarg-2.0.7.tar.gz
tar cvzf sarg-2.0.7.tar.gz sarg-2.0.7/
rpmbuild -ba --target i686 /usr/src/redhat/SPECS/sarg-2.0.7.spec
rpm -Uvh /usr/src/redhat/RPMS/i686/sarg-2.0.7-1.fc2.mack.i686.rpm

あとは"/etc/sarg/sarg.conf" を必要に応じて編集。


# sarg

で解析される、とのことなのですが、なぜか待てど暮らせど解析が終わらない。このとき、sort がCPU 100% 近くに張り付いた状態。仕方ないのでCtrl-C でプロセスをストップ、そのときのエラーメッセージが以下。


# sarg
SARG: Records in file: 26306, reading: 100.00%
sort: オープン失敗: /tmp/sarg/.htmp: そのようなファイルやディレクトリはありません
SARG: (totday) ログファイルをオープンできません: /tmp/sarg/.sort

ちょっとお手上げな感じ。情報も見つからないし、諦めて他のにした方が良いかな。ちなみに他によさそうと思ったのは以下のふたつ。

Fedora のSquid SRPM からRHL9 用RPM を作る・2

セキュリティホール memo より。

Squid 2.5 STABLE9 以前に「DNS lookups unreliable on untrusted networks」 という脆弱性が発見されたようです。既にパッチ(squid-2.5.STABLE9-dns_query-5.patch) が出ています。

Fedora Core 用のSRPM(squid-2.5.STABLE9-7.src.rpm) は既にこのパッチを取り込んだものに修正されていたので、早速入れ替えました。

以前の「Fedora のSquid SRPM からRHL9 用RPM を作る」 と全く同じ手順で出来ましたので、詳しくはそちらを参照してください。

(2005/05/18 16:21 追記)
またしてもセキュリティホール memo より。

Squid 2.5.STABLE10 出ました。上記のセキュリティFIX を含みます。さすがにFedora のSRPM 版はまだ出ていないので、これを出るのを待つのではなく、今すぐ出来る方法で対処をしておくべきです。被害があってからでは遅いですしね。

bbclone 0.4.8a utf8 に入れ替え

BBClone 入れてみました」 にもちょっと書きましたが、さらに追記で、バージョンアップする際は「var フォルダとconf フォルダ以外を全て転送」 が正しいです。"conf/config.php" は必要に応じて編集してください。

さてさて、最近の数バージョンでは、[詳細統計] の[どこから来たか] のリンク方法の仕様が二転三転していて、前までは普通にリンクするようになっていたのが、リファラを隠蔽するためか、JavaScript を使ったものに変更されました。

それはそれでいいのですが、一旦飛んだ先のページで個人的には大嫌いな(というか機能しない設定にしている) "<meta http-equiv="Refresh" content="0; URL=…>" を使用していて、イヤな感じです。とりあえず、自分の欲求を満足するためだけに、ちょこっと変更したので、変更箇所を忘れないために、メモ。

変更するファイルは"lib/html.php"、ブラウザから見た場合の"show_detailed.php" の<head> ~ </head> 内をいじります。

92行目あたり、<body> の行と</body> の行の間に以下のコードを挟みます。


          ."    +'<a href=\"http://'+addr+'\">http://'+addr+'</a>'\n"

Google のリファラなどで検索文字列が文字化けするため、"unescape()" は外してみました。必要に応じて、89行目も同じように変更しておくと良いかも。


          ."    +'<meta http-equiv=\"Refresh\" content=\"0; URL=http://'+addr+'\" />'\n"

smartmontools でHDD のS.M.A.R.T. チェック

HDD から聞こえる「カチョン」 という音、それはディスクを読み込むヘッドのアームが一番端に当たった時に出る音です。経験上、この音が聞こえたHDD はヤバいです。

というわけで、こないだディスクを増設したばかりですが、どうやら元のHDD の死期が近づいてきているような気がしてならない今日この頃です。既に代替HDD は用意してあるので近日中にまた入れ替え作業を行うつもりですが、そのまえに、S.M.A.R.T. のチェックをしておきましょう。

さっとググって見つけたのが「smartmontools」。今回は特になんの工夫もなく、オフィシャルに置いてあるRPM をもらってきてそのままインストールしました。使い方などは以下のページが参考になりました。

で、早速取得してみると、既に16000時間くらい稼働している模様。2年弱ですね。買ったのが2年近く前で、それからずっと通電しているので、そろそろ…かも。

一応、selftest もかけてみましたが、特にエラーは出ず。

smartmontools のサイト経由でFD 起動なディスクユーティリティを見つけたので、あわせて紹介。これ、作っておくと良さそう。

サーバメンテナンス中の代理サーバ

サーバメンテナンス中も出来ればWeb は見られるようにしたいと思い、身代わりサーバを立てていました。その実体は以前譲り受けたものの、実はあまり稼働率の高くなかったIBM ThinkPad 600E 2645-4AJ。こういうのを用意しておいた方が落ち着いて作業できますしね。

ささっと流しながら作業したので、あんまり覚えてないですが、軽くメモ。

600E にはCD-ROM ドライブが付いてるので、Linux Magazine 2005年1月号付録のFC3 CD-ROM を利用、X WINDOW とか、要らないコンポーネントは削ってさくさくと進めて、コマンドプロンプトへ。

ローカルで作業しても良いけど、折角SSH があるのでSSH の設定。鍵とか作ったりとか、chkconfig でSSH 起動するようにしたりとか。

次にyum の設定。以下のサイトを参考に。

最低限、以下の通りにやれば良いようです。リポジトリを色々いじる時間もないのでこのままupdate。


# rpm --import /usr/share/rhn/RPM-GPG-KEY-fedora
# yum update

あとはhttpd。このへんは今あるサーバの設定をコピー。今回は再構築した後のHTML と、include するためのPHP さえ動けばOK なので、さくさくと設定。

以上。適当すぎ。>じぶん

サーバメンテナンス詳細

忘れないうちに書いておこう。今回のメンテナンスの目的は、以下の4つでした。

  1. ケース内清掃
  2. IEEE1394 PCI カード増設
  3. GbE NIC 増設
  4. HDD 増設

ケース内清掃は結構久しぶりで、ブロワーで吹き出しながら掃除機で吸っていたのですが、特にCPU クーラファンあたりからどす黒く、細かいホコリ(というレベルでは最早ないような…) がいっぱい出てきたりしましたのでやってて良かった早めの清掃。

IEEE1394 PCI カードは、丁度余っていたので、万が一のバックアップ作業とかで外付けHDD とかを使う場合を想定して増設。古いマザーなのでUSB1 しか付いてないし、あった方が微妙に安心。

GbE NIC は、前々からやろうと思っていたので、思い切ってこの機会に。これで常用PC は全てGbE NIC にリプレースできたので、近いうちにアライドテレシスの8ポート GbE ハブ 「CentreCOM GS908GT」 を購入予定。

さてさて、買ったのはIntel(R) PRO/1000 MT デスクトップ・アダプタ(PWLA8391MT) です。

割とどうでもいい事ですが最近のPC はNIC が標準装備になったからか、PC パーツショップですら、NIC(しかも普通の10/100 とか) の取り扱いが限りなく小さくなっているのはどういう事ですか? GbE NIC を求めて日本橋かけずり回っても扱ってたのが僅か2,3 件という。さほど数が出るモンじゃないから仕方ないと言えば仕方ないけど。

あと、Intel のGbE NIC といえば少し前に偽造品が出回った りもしましたがこれは型番が変わってるので特に問題はないでしょう。

あまり深く考えず、これまで使っていたいわゆる "DEC Tulip(21140-AF)" なNIC と差し替え。既にドライバがあるNIC の場合は自動認識してくれますが、ウチのRHL9 では認識してくれず。仕方ないのでオフィシャルからドライバを落とす。

といっても、Linux なので.tar.gz。しかも自分でコンパイルもしないと行けない。さすがLinux。幸い、SPEC ファイルがあるので、こいつを流用してパッケージをビルドすると後々ラクでしょう。あとは以下のような感じでNIC が認識できました。


# rpmbuild -ta --target i686 e1000-5.7.6.tar.gz
# rpm ivh /usr/src/redhat/RPMS/i686/e1000-5.7.6-1.i686.rpm
# insmod e1000
# /sbin/lsmod
# /sbin/ifconfig -a

参考にしたのは付属のドキュメント と以下のサイトです。

と書くと、結構あっさり設定できたように見えますが、実際には相当な試行錯誤があったりしました。要は「スタンドアローンなPC にどうやってドライバを持って行くか」 という事なのですが、ナゼかFDD が壊れててFD 経由の受け渡しが出来ず、仕方なくCD-RW にディスクアットワンスで書いてみてもマウントできず、やむなくNIC 付属のCD-ROM から古いバージョンのドライバを拾って一端認識させた後、ネットにある最新版ドライバに入れ替えたりとかしてました。やれやれ。

最後に、HDD 増設。本来はこれが主目的だったのですが、ここに至るまでが長かった。設定自体は、以下のサイトの説明通りでいけました。最初何も考えずにフォーマットしたらext2 になってて、ext3 でフォーマットし直した以外は特に問題もなく。

HDD の寿命からして、新しいHDD に丸ごと環境を引っ越した方が良かったはずですが、今回は気力や時間の関係で、単に増設して終了。これはまた機会があれば。

Linux Magazine 休刊のその後のPDF

先月の話ですが、「Linux Magazine」 が休刊となりました。ここで気になるのが毎年恒例の本誌PDF はどうなるのか、ということ。とりあえず2004年12月号までのPDF は全てこのムックで補完できます。

4756145574 Linux magazine THE DVD 2005 (アスキームック Linux magazine Mook No. 16) [ムック]

で、2005年1月号、2月号のPDF は3月号に付いてます。

最後に、3月号のPDF はオフィシャルサイトから落とせます。ダウンロードできるようになるまで1ヶ月近く期間をおいたとはいえ、太っ腹な対応です。

一応上記3つをまとめれば全部入りになりますが、まとめるの面倒だなぁ。

なにげにこの1年半くらいは(半ば惰性気味ながら) ずっと買っていたので、ちょっと寂しいです。次は「UNIX USER」 にでも移行しようかな。

PuTTY でSquid proxy を利用する

PuTTY でsocks proxy の機能を利用する」 でリモートホスト経由で外部に接続した場合、データ自体はSSH で暗号化されているで問題ないのですが、DNS のクエリをSSH の接続先に飛ばすのではなく、もともとのローカル環境のDNS に問い合わせに行くようなのです。socks5 になればこのへんも改善するらしいのですが良く分からず。

なので、外部から自宅サーバ環境へsocks proxy で繋いだとき、自宅サーバのアドレス(ウチだとalectrope.jp) の名前解決にローカル環境のDNS から外部向けIP アドレスを引っ張ってきてしまい、内側から繋いでいる(=内向きのIP アドレスが必要) socks proxy では接続できない、という現象が起きます。いちいちIP アドレス直打ちもめんどうなので、なんとかしたいなーと。

これを解決するひとつの方法として、socks proxy ではなく、Squid によるproxy を利用します。インストール方法については「Fedora のSquid SRPM からRHL9 用RPM を作る」 で簡単にまとめました。

では、PuTTY での実際の設定です。ウチの環境ではSquid はポート3128 でListen してます。適宜読み替えてください。

[PuTTY 設定]-[接続]-[SSH]-[トンネル] で

  • [源ポート] を"8080"
  • [送り先] を"内側のDNSサーバ名:3128"
  • ラジオボタンは [ローカル]、[自動]

で追加します。

putty.ini 的には、"L8080=内側のDNSサーバ名:3128," という感じになると思います。

ブラウザ側のプロキシの設定は、"127.0.0.1:8080" です。

完全に原因究明まではしていませんが、ポートの番号を合わせるとなぜかうまく行かなかったりしたっぽいので、こういう設定にしています。
参考: 「YA-Faq - Clarkconnect Faq - HOWTO Squid proxy using through SSH tunnel

これで内部のPC にもドメイン名でアクセスできます。

Fedora のBIND SRPM からRHL9 用RPM を作る

Fedora のSquid SRPM からRHL9 用RPM を作る」 でやりたいことは達成できてしまったので、DNS サーバは必ずしも必要ではなかったようなのですが、折角入れ替えたのでメモ。

ちなみに、入れ替え前に入っていたもの。


# rpm -qa |grep bind
bind-9.2.1-16
bind-utils-9.2.1-16

オフィシャルな最新版は"BIND 9.3.1rc1" とのことで、"bind-9.3.1rc1-3.src.rpm" を頂いてきたのですがどうにも上手くいかないのでバージョンを下げました。実際に使ったのは"bind-9.2.4-2.src.rpm" です。


# rpm -ivh bind-9.2.4-2.src.rpm

例によってコンパイルオプションの"-fPIE" でひっかかるので、以下をコメントアウト。


#%patch7 -p1 -b .pie

ついでに、以下もコメントアウト。


#       --enable-ipv6

ビルドします。


rpmbuild -ba --target i686 /usr/src/redhat/SPECS/bind.spec

できあがったらまとめてインストール。


rpm -Uvh /usr/src/redhat/RPMS/i686/bind-9.2.4-2.i686.rpm /usr/src/redhat/RPMS/i686/bind-utils-9.2.4-2.i686.rpm /usr/src/redhat/RPMS/i686 /bind-libs-9.2.4-2.i686.rpm /usr/src/redhat/RPMS/i686/bind-chroot-9.2.4-2.i686.rpm

あとは上記のサイトなどを見て設定します。まだ設定は煮詰め中です。内向きのDNS なので、比較的気楽にやってます。

Fedora のSquid SRPM からRHL9 用RPM を作る

PuTTY でsocks proxy の機能を利用する」、とてもベンリです。

ネットワークセキュリティHACKS―プロが使うテクニック&ツール100選
Andrew Lockhart 渡辺 勝弘 鶴岡 信彦 黒川 原佳 新井 貴之 松田 綾爾 鈴木 和也
オライリー・ジャパン (2005/01)
売り上げランキング: 7,807
通常24時間以内に発送

「ネットワークセキュリティHACKS―プロが使うテクニック&ツール100選」 の「HACK #76」 によると、SSH のsocks はsocks 4 のようなのですけど、socks 4 ではDNS のクエリをSSH 接続先でなく、通常接続時のDNS に飛ばしているようなのです。このため、外部からSSH 経由で繋いだ時、IP アドレスを指定しないとアクセスできなかったりする(コレの対処はローカルPC のhosts ファイルに書く) のと、接続元の環境でどうしてもアクセスの痕跡が残ってしまう、という2つの問題がある、ということが分かりました。

これの対処法として書かれているのが、「HACK #75」 の、SSH 経由でSquid を使う、という方法です。なのでSquid の設定をしてみましょう。とりあえず、最新版のパッケージを作って入れ替えます。

最新版は"squid-2.5.STABLE9" のようですが、Fedora のリポジトリにあったのは"squid-2.5.STABLE8-2.src.rpm" だったので、これを頂いてきます。Squid のアドバイザリを見るに、今のところは"2.5.STABLE8" であれば大丈夫そうです。

ダウンロードできたら、おもむろにインストール。


# rpm -ivh squid-2.5.STABLE8-2.src.rpm

適当なエディタで"/usr/src/redhat/SPECS/squid.spec" を開き、RHL9 のgcc(ウチの環境だと"gcc-3.2.2-5") では認識されないコンパイルオプション、"-fPIE" を探し出してこれを削除します。2箇所くらいあるはず。セーブして、いざコンパイル。


# rpmbuild -ba --target i686 squid.spec

できあがったら、インストール。


# rpm -Uvh /usr/src/redhat/RPMS/i686/squid-2.5.STABLE8-2.i686.rpm

"/etc/squid/squid.conf" を適当なエディタで編集。基本的には「squid の設定」 の設定そのままで、あと、"visible_hostname" にホスト名を入れます。以下は例。


visible_hostname alectrope.jp

セーブしたら、キャッシュを初期化します。ちなみに"/var/spool/squid/" 以下にキャッシュされます。


# squid -z

起動。上手くいかない場合はログファイルとかあたりのアクセス権が"squid:squid" になってるかとかを確認します。


# /etc/rc.d/init.d/squid start

あとは適当にブラウザにproxy の設定をして、正常にアクセスできる + ログファイルに残っていることが確認できたらOK です。Squid は色々な事が出来るようですが、ひとまずこのへんで。

十分なHDD 資源を用意して、全てのアクセスをキャッシュするようにすれば、それだけでローカルミラーになるなぁ。

Webalizer の検索キーワード文字化け対策

これまで、convertlog を使ってましたがちょっとおもしろそうなのを見つけたのでちょっと入れ替えてみました。

文字コードの変換だけでなく、全角アルファベットを半角に、アルファベット大文字は小文字に変換、おまけに検索文字の全角スペースを半角スペースに変換し、半角スペースをキーワードの区切りとして各キーワードを並び替えまでしてくれます。

BBClone だと完全に1キーワードまで分解してくれるのですが、どちらかというと「どういう組み合わせで辿り着いたのか」 が知りたいので、これはかなり重宝しそうな気がします。

ソートをするようになったからか、さすがにこれまでよりも少し時間がかかるようになりましたが、なかなか良い感じです。perl ベースなので、自分で改造できそうな(気がする) のもちょっと良いかも。

ついでに、webalizer まめちしき。検索エンジンからのリファラで埋まってしまうことが多く、普通のサイトからのリファラが埋もれてしまうことがあるので、ウチではこうやって対策してます。GroupReferrer とHideReferrer を併用すると、合計だけが表示され、個々のリファラは消してくれます。検索エンジンに限らず、いくらでも応用がきくと思います。


GroupReferrer	.google.			Google
GroupReferrer	.104/search		Google
HideReferrer	.google.
HideReferrer	.104/search
GroupReferrer	search.yahoo.co.jp		Yahoo!Japan
GroupReferrer	srd.yahoo.co.jp		Yahoo!Japan
HideReferrer	search.yahoo.co.jp
GroupReferrer	search.goo.ne.jp		goo
HideReferrer	search.goo.ne.jp
GroupReferrer	search.biglobe.ne.jp	biglobe
HideReferrer	search.biglobe.ne.jp
GroupReferrer	search.msn		MSN
HideReferrer	search.msn
GroupReferrer	excite.co.jp/search.gw	excite
HideReferrer	excite.co.jp/search.gw
GroupReferrer	infoseek.co.jp		infoseek
HideReferrer	infoseek.co.jp
GroupReferrer	mixi.jp			mixi
HideReferrer	mixi.jp

vsftpd 2.0.1 をRPM でRHL9 にインストール

永らく"vsftpd-1.1.3-8" のまま放置していたので、さすがにそろそろバージョン上げるか、と思い立ち、いつものごとくFC3 から"vsftpd-2.0.1-9.src.rpm" を頂いてくる。とりあえずのダメ元ビルドはやっぱりエラーが出て終了。どうやら"-fpie" というコンパイルオプションが引っかかっているらしい。


# for -fpie
BuildPrereq: gcc > gcc-3.2.3-13, binutils > binutils-2.14.90.0.4-24, glibc-devel >= 2.3.2-27

binutils こそこないだついうっかり入れ替えました が、gcc とglibc-devel のバージョンが古いので、このままではコンパイルが通らない。なので、RHL9 用の"vsftpd-1.1.3-8.src.rpm" からSPEC ファイルを抜き出して比較検討した結果、"-fpie" オプションを外すことでビルド通りました。"-fpic" も出来ればあったほうが良さそうですが、ないものは仕方がないので、これ以上はあんまり深く考えない。

で、変更した箇所。39行目あたり、上記と同じところをコメントアウト。


# for -fpie
# BuildPrereq: gcc > gcc-3.2.3-13, binutils > binutils-2.14.90.0.4-24, glibc-devel >= 2.3.2-27

70行目あたり、コンパイルオプションから"-fpie" を削除。


make CFLAGS="$RPM_OPT_FLAGS -pipe" \

で、ビルド。出来上がったらアップグレード。


# rpmbuild -ba --target i686 vsftpd.spec
# rpm -Uvh /usr/src/redhat/RPMS/i686/vsftpd-2.0.1-9.i686.rpm

あとはconf ファイルとかを設定すれば完了。体感上、特に何かが変わった感じもしませんが、SSL/TLS サポートなどが追加されてるので、オレオレ証明書でも作れば一応平文FTP よりはマシな運用が出来るかもしれない。これはまたいずれ。

(2005/03/03 19:59 追記)
設定方法が良くまとまっていて、分かりやすいので。xinetd 経由での起動方法が特に参考になりました。

SSL 関係の設定はこっちで確認。

Fedora Legacy kernel アップデート

さすがにkernel までは自分でRPM 作るのも怖いし…と、脆弱性があるのを知りつつ実は放置していたのですが、Fedora Legacy から"kernel-2.4.20-42.9.legacy" がリリースされたので早速入れてみました。

yum のリポジトリの設定を"Fedora Legacy" に変更 してあれば、あとは簡単です。ただ、デフォルトの設定だとkernel 関係は自動アップデートの対象外になっているので、"/etc/yum.conf" の以下の行をコメントアウトします。


#exclude=kernel*

あとは、


# yum update

で必要なパッケージを自動で落としてきてくれます。これまで、アップデートしていない場合は、kernel 以外にも色々取ってくると思います。

kernel に関しては、万が一の時のために前のバージョンでも起動できるように、update(rpm -Uvh) ではなく、install(rpm -ivh) するように、とされています。yum なら自動的によしなにしてくれます。


[install: kernel 2.4.20-42.9.legacy.i686]
[update: kernel-source 2.4.20-42.9.legacy.i386]
Is this ok [y/N]: y

終わったら、再起動。kernel の選択に"2.4.20-42.9.legacy" が追加されていればOK です。こいつを選択して起動しましょう。ウチでは特に問題なく動いてる模様。

PuTTY 0.57 出ました

PuTTY 0.56 以前に脆弱性があるとのこと。既に0.57 が出てますし、いつものごった煮版も即日対応されてますので、ささっと入れ替えておきましょう。

また、PuTTY のコードを利用しているFilezilla とWinSCP も同様に。これを書いてる時点ではWinSCP はまだ対応版は出ていないです。

Nessus をRPM でインストール

なんとなく、入れてみたくなったので、入れてみる。

まず、Nessus の動作に必要とされるGTK2.2、Nmap、OpenSSL のうち、Nmap のバージョンが古いみたいなので、Nmap のRPM パッケージを新たに作って、アップグレードします。

上記サイトから"Latest Stable Source RPM (includes NmapFE): nmap-3.75-1.src.rpm" をもらってきてビルド。特にSPEC ファイルもいじらないでOK だったので、ラクできます。


# rpmbuild --rebuild --target i686 nmap-3.75-1.src.rpm

で、おつぎはNessus 本体。オフィシャルにインストーラ付きのがあるのでこれを利用しても良いのですが、少し探し回って以下のサイトのSRPM からビルドすることにしました。今回もらってきたのは"nessus-2.2.2a-18.rh9.at.src.rpm"、"libnasl-2.2.2a-19.rh9.at.src.rpm"、"libnessus-2.2.2a-15.rh9.at.src.rpm" の3つ。

以下の順番で入れられました。


# rpmbuild -ba --target i686 libnessus-2.2.2a-15.rh9.at.spec
# rpm -Uvh /usr/src/redhat/RPMS/i686/libnessus-2.2.2a-15.i686.rpm /usr/src/redhat/RPMS/i686/libnessus-devel-2.2.2a-15.i686.rpm
# rpmbuild -ba --target i686 libnasl-2.2.2a-19.rh9.at.spec
# rpm -Uvh /usr/src/redhat/RPMS/i686/libnasl-2.2.2a-19.i686.rpm /usr/src/redhat/RPMS/i686/libnasl-devel-2.2.2a-19.i686.rpm /usr/src/redhat/RPMS/i686/nasl-2.2.2a-19.i686.rpm
# rpmbuild -ba --target i686 nessus-2.2.2a-18.rh9.at.spec
# rpm -Uvh /usr/src/redhat/RPMS/i686/nessus-2.2.2a-18.i686.rpm /usr/src/redhat/RPMS/i686/nessus-server-2.2.2a-18.i686.rpm /usr/src/redhat/RPMS/i686/nessus-devel-2.2.2a-18.i686.rpm

ただし、各SPEC ファイルの一部を書き換える必要があります。


%{eversion} -> %{version}

インストール後は上記サイトの説明でいけると思います。

今回クライアントはWindows 版の"nessuswx-1.4.5a.zip" を使っています。

スキャン結果は一覧にしてくれるのでベンリです。危ない部分に対しては対策も載せてくれます。いいですねこれ。

もちろん、これを自分の管理しているホスト以外に使ってしまうと不正アクセスと見なされる可能性が極めて高いので使っちゃダメです。

Ethereal 0.10.9 のRPM を作ってインストール

数日前からハマっていること の調査のために、Ethereal が必要になりました。ついこないだ脆弱性が発見されて、"0.10.9" がリリースされているので、今回はこいつのRPM を作ってインストールすることにします。

さくっと手順だけ。ソースファイルは、"ethereal-0.10.9.tar.bz2" をダウンロード、"/usr/src/redhat/SOURCES/" へ。あと、RHL9 用Ethereal の最終リリースであるSRPM、"ethereal-0.10.3-0.90.1.src.rpm" からspec ファイルを抜き出します。で、"/usr/src/redhat/SPECS/" へ。

"ethereal.spec" はバージョンナンバーがハードコードされてたりするので、適当に編集。また、こないだ作ったnet-snmp のRPM パッケージ では"net-snmp-utils" は作られていませんので、コメントアウト。あといくつか、エラーが出た"*-devel" パッケージをyum とかでインストール。

しばらく待てばできあがり。"ethereal" と"ethereal-gnome" をインストールして、完成。はしょりすぎで、すみません。

使い方については、まだよく分かってないので、割愛。上記サイトがかなり詳しいので、そちらをどうぞ。

で、生パケットを見ているわけですが...待て続報。

さらにちょこっと(リファラ|コメント|トラックバック)spam 対策

(2005/01/29 21:47 全体的にリライトしてます)

ここ数日、定期的に変なリファラがついたリクエストがログに残っていて、ちょっと気になっていました。決まってとあるドメインネームからのリファラが付いていて、しかもご丁寧にも、毎回サブドメインの部分が異なるという。

たいして実害はないのですがよけいなログが残るのもアレだし、余りにも執拗なので、httpd レベルではじきます。前に作ったやつ を元に、今回したいことを書き出してみます。サブドメインがころころ変わるので、そこのぶぶんをどう正規表現で書いたらいいのか分からず、結局力業、でもダメで、もう丸一日いじってますがどうにも上手くいかないのでもう忘れる。また今度。プンスカ。

(実際のコードはエントリの最後に移動しました)

"SetEnvIf" まわりの、deny とかのロジックは期待通りに動くことを確認しているので、純粋に上記の部分だけの問題だと思うのだけど…。もう、なにがなにやら。アスタリスクによるワイルドカードが使えるなら、"http://*.tecrep-inc.net/" で済むような問題なんだけど、正規表現はどうにも取っつきが悪し。理解力不足とも言う。

ときに、このリファラはナニをしたいんだろうね? 毎回アクセス元のアドレスの国が異なるし、ある時は某国内大手プロバイダからだったりしたし、proxy というよりもこれは何らかのウィルスにかかったPC からのアクセス…とかだったりするのだろうか。

さらにもう一つ、「迷惑な」 という意味で使う場合、「spam」 と小文字で書くのが慣習らしい。大文字で書くと商標に引っかかっちゃうので、とのこと。へぇ。

(2005/01/31 21:05 追記)
「忘れる」 とかいいつつしつこく調査中。コメント頂いたり、リファラでアドバイス頂いたり して、ありがとうございます。

結果から言うと、"^http://.*\.tecrep-inc\.net/"、"^http://(.*\.)?tecrep-inc\.net/" どちらでも引っかけることは出来ませんでした。テストしてみたところ、普通はリファラ中の何か一単語でも引っかかりさえすれば排除できるのに、今回対象のものについては、どうにも上手くいきません。ログに残っている文字列は普通に見えますが、この部分からして変な細工をしているのかなあ。ってそんなこと出来るのか?

そうこうするうちに、リファラspam のドメインが増えました。"*.learnhowtoplay.com" というやつ。ログから抜き出してみたところ、これまでのと送信元が割と一致します。冗長すぎるけど、もう送信元IP アドレスで弾くしかないのか…。

(2005/02/01 22:12 追記)
…えーと、httpd.conf でちょっとややこしいこと をしているので、それが原因で上手くいってなかったみたい。トホホ。ってだけじゃアレなので追加情報を。

今回のリファラspam は、結構インテリジェントです。

  1. 個別エントリにアクセスする際は、リファラに見せたいURL を入れている。
  2. MT の標準の"mt-comments.cgi" 決めうちでPOST。このとき、リファラはコメント入力ページのURL。
  3. ファイル名を変更していても、form タグを解析し、追尾してくる。リファラは上記と同じ。
  4. 同様にして、"mt-tb.cgi"(とリネームしたやつ) にもアクセスしまくり。

しかしながら、こういうのの対策として、リネームしたり、プラグイン入れたり するのはかなり有効です。

で、最後に今回の回避方法ですが、proxy 経由か、変なヘッダがついてるので、それを指定します。とりあえずこんな感じで。上記特徴とかも考えると、リファラではじくのと併せ、これも指定しておいた方がよいかもです。

Samba 3.1.0 のRPM を作って入れ替え

Fedora のSRPM からOpenSSL をリビルドしてRHL9 に」 の後処理その2。うかつなことをするとどうなるか、というお話。

Samba も死にました。いい機会なのでSamba 3.1.0 へ入れ替えます。前回 はワザワザglibc にパッチを当てておきながら結局Samba もソースからビルドしたりとかやったので、今回はlibiconv にパッチを当ててみることにします。まずはglibc をパッチを当ててない、もとのやつに戻しておきます。

libiconv は標準では入っていないので、ソースにパッチを当ててインストールするか、既にパッチ適用済みの"libiconv-1.8-1.src.rpm" をリビルドするかする必要があります。今回は後者を選択。


# wget ftp://ftp.kddilabs.jp/inet/samba/samba-jp/samba-3.0-ja/SRPMS/libiconv-1.8-1.src.rpm
# rpmbuild --rebuild --target i686 libiconv-1.8-1.src.rpm
# rpm -Uvh /usr/src/redhat/RPMS/i686/libiconv-1.8-1.i686.rpm

"samba-3.0.10.tar.gz" をもらってきて、解凍。SPEC ファイルを見つけて、コピー。そしてささっとビルド。


# tar xvzf samba-3.0.10.tar.gz
# cp packaging/ReHatdHat/samba.spec /usr/src/dredhat/SPECS/
# rpmbuild -ba --target i686 /usr/src/reddhat/SPECS/samba.spec

で、やっぱりエラー。


mkdir: too few arguments

[Samba] RPM build error 3.0.0」 を見て


mkdir -p $RPM_BUILD_ROOTMANDIR_MACRO


mkdir -p $RPM_BUILD_ROOT/%{_mandir}

に変更。

ついでに、もう一カ所変更。


make DESTDIR=$RPM_BUILD_ROOT \
(snip)
MANDIR=MANDIR_MACRO \


make DESTDIR=$RPM_BUILD_ROOT \
(snip)
MANDIR=%{_mandir} \

で、ビルド再開。また止まる。


RPM build errors:
File must begin with "/": MANDIR_MACRO/man1/*
File must begin with "/": MANDIR_MACRO/man5/*
File must begin with "/": MANDIR_MACRO/man7/*
File must begin with "/": MANDIR_MACRO/man8/*

かなり意味が分からないエラーだったのですが、"samba.spec" の最後の方にある


MANDIR_MACRO/man1/*
MANDIR_MACRO/man5/*
MANDIR_MACRO/man7/*
MANDIR_MACRO/man8/*

を以下に変更、これでパッケージが出来ました。


%{_mandir}/man1/*
%{_mandir}/man5/*
%{_mandir}/man7/*
%{_mandir}/man8/*


# rpm -Uvh /usr/src/redhat/RPMS/i686/samba-3.0.10-1.i686.rpm

設定ファイルとかはいままでのでそのままいけました。文字化けもナシ。ほっ。

OpenSSH のRPM を作って入れ替え

Fedora のSRPM からOpenSSL をリビルドしてRHL9 に」 の後処理その1。うかつなことをするとどうなるか、というお話。

OpenSSL 入れ替え後、さてお次はOpenSSH の入れ替えしますか...、と思っていたのですが、ふとWinSCP でsftp 接続しようとしたところ、繋がりません。...ええっ!? なんかおかしいと思いつつ、sshd を再起動...しない。事態はさらに深刻に。つまり、今繋がってるセッションが切れたら最後、ってことですか? というわけで急遽予定を大幅に早めて入れ替え決行。

"openssh-3.9p1-chroot.tar.gz" をもらってきて...って、...えーと、wget も死んでます。幸い、FTPd が生きてたので、PC 側で落としてFTP で転送。wget 自体は適当にSRPM をもらってきてビルドしたら治ったので割愛。

SPEC ファイルは"contrib/redhat/openssh.spec" を使用しました。適当に、編集。Filezilla にはEUC<->SJIS 変換パッチ があるので、sftp-server SJISパッチ は不要になりました。フォルダ名を変えるためだけにいったん解凍して再度固めています。


# tar xvzf openssh-3.9p1-chroot.tar.gz
# mv openssh-3.9p1-chroot openssh-3.9p1
# cp openssh-3.9p1/contrib/redhat/openssh.spec /usr/src/redhat/SPECS/
# tar cvzf openssh-3.9p1.tar.gz openssh-3.9p1/
# emacs /usr/src/redhat/SPECS/openssh.spec
# rpmbuild -ba --target i686 /usr/src/redhat/SPECS/openssh.spec

で、アップグレードしてsshd を再起動。


# rpm -Uvh /usr/src/redhat/RPMS/i686/openssh-3.9p1-1rh9.i686.rpm /usr/src/redhat/RPMS/i686/openssh-clients-3.9p1-1rh9.i686.rpm /usr/src/redhat/RPMS/i686/openssh-server-3.9p1-1rh9.i686.rpm
# /etc/rc.d/init.d/sshd restart

ここで強制的にウィンドウが閉じるので、再度接続...繋がりませんようわー。半泣きになりながらコンソールからログイン、sshd を起動させて事なきを得る。ほっ。SSH の入れ替えもなかなかスリリングですなぁ。

Fedora のSRPM からOpenSSL をリビルドしてRHL9 に

(2005/01/25 15:00 追記)
※ 以下で説明している作業手順は全て無保証です。重要なコンポーネントを半ば強引に入れ替えていますので、ここに挙げた以外にも、何か致命的な障害を起こす可能性が十分にあります。あくまでひとつの参考事例として考えていただけたら幸いです。

以前OpenSSL のソースファイルからRPM ファイルを作る で作ったものは、最後のところでシンボリックリンクを作って対処したつもりにして放置していたのですが、やはりおかしいようなので入れなおしてみます。

現時点で最新の"openssl-0.9.7e.tar.gz" を拾ってきていつものごとくSPEC ファイルを抜いてビルド...失敗。エラーメッセージで検索して「Re: [openssl.org #970] build error 0.9.7e」 とかのとおりにやってみてもダメ。RHL9 用OpenSSL の最終リリースからSPEC ファイルを抜いてきてごにょごにょやってみてもダメ。今回結構八方塞がりです。

仕方がないのでオフィシャルのtarball からのインストールは諦め。最後の悪あがきでFedora Core 3 用のソースRPM でビルドしてみたところ、依存関係でややてこずりましたが結果的に入れ替えが出来たっぽいのでその手順をメモ。バージョンナンバー的には古いですが、SPEC ファイル内でセキュリティFIX などのパッチはあててますので、これはこれでよいかと。

"openssl-0.9.7a-40.src.rpm" をダウンロード。今回SPEC ファイルも全く触らなかったのでそのままリビルド。


# rpmbuild --rebuild --target i686 openssl-0.9.7a-40.src.rpm

はい、ここでまたしてもエラー。


as: unrecognized option `--noexecstack'

Re: RedHat 9」 には"binutils" を新しいのにしてみよう、とあるので素直に従う。

今まで入っていたのは以下のバージョン。


# rpm -qa |grep binutils
binutils-2.13.90.0.18-9

Fedora Core 3 用では"binutils-2.15.92.0.2-5.i386.rpm" が最新だったので特に工夫もなくそのままアップデート。今にして思えばこれもSRPM から作るべきだったかも。


# rpm -Uvh binutils-2.15.92.0.2-5.i386.rpm

ビルドがちょっと進むようになったけど、やっぱり止まる。


include/openssl/kssl.h:72:18: krb5.h: No such file or directory

どうやら、Kerberos 関連のなにかが引っかかってるみたい。

この時点で入っていたもの。


# rpm -qa |grep krb5
pam_krb5-1.60-1
krb5-server-1.2.7-14
krb5-devel-1.2.7-14
krb5-libs-1.2.7-14
krb5-workstation-1.2.7-14

"krb5-1.3.6-2.src.rpm" をもらってきてビルド。ビルド自体は滞りなく終了。


# rpmbuild --rebuild --target i686 krb5-1.3.6-2.src.rpm

しかし、アップデートの際に


e2fsprogs-devel is needed

依存関係のエラーが出ます。RHL9 標準のではバージョンが低いみたいなので、これもアップデートしてしまいます。芋づる式にやることが増えていますがもう行けるところまで行くだけです。


# rpm -qa |grep e2fsprogs
e2fsprogs-1.32-6
e2fsprogs-devel-1.32-6

"e2fsprogs-1.35-11.2.src.rpm" をもらってきてリビルド。


# rpmbuild --rebuild --target i686 e2fsprogs-1.35-11.2.src.rpm

アップデート。これでようやく、折り返しです。


# rpm -Uvh /usr/src/redhat/RPMS/i686/e2fsprogs-1.35-11.2.i686.rpm /usr/src/redhat/RPMS/i686/e2fsprogs-devel-1.35-11.2.i686.rpm

krb5 のインストール。依存関係のエラーは"--nodeps" 付けて強行。ちなみに、RHL9 の最終リリースである"openssl-0.9.7a-2" に戻してたりしてます。


# rpm -Uvh krb5-libs-1.3.6-2.i686.rpm krb5-devel-1.3.6-2.i686.rpm krb5-server-1.3.6-2.i686.rpm krb5-workstation-1.3.6-2.i686.rpm
: Failed dependencies:
libcom_err.so.3 is needed by (installed) openssh-server-3.8.1p1-2
libcom_err.so.3 is needed by (installed) samba-3.0.6-1
libcom_err.so.3 is needed by (installed) cyrus-sasl-2.1.10-4
libcom_err.so.3 is needed by (installed) wget-1.8.2-9
libcom_err.so.3 is needed by (installed) curl-7.9.8-5
libcom_err.so.3 is needed by (installed) openssh-3.8.1p1-2
libcom_err.so.3 is needed by (installed) cyrus-sasl-devel-2.1.10-4
libcom_err.so.3 is needed by (installed) php-4.3.10-1
libcom_err.so.3 is needed by (installed) pam_krb5-1.60-1
libcom_err.so.3 is needed by (installed) postgresql-server-7.3.4-3.rhl9
libcom_err.so.3 is needed by (installed) openssh-clients-3.8.1p1-2
libcom_err.so.3 is needed by (installed) openssl-0.9.7a-2
# rpm -Uvh --nodeps krb5-libs-1.3.6-2.i686.rpm krb5-devel-1.3.6-2.i686.rpm krb5-server-1.3.6-2.i686.rpm krb5-workstation-1.3.6-2.i686.rpm

いよいよ、今回の目的、OpenSSL です。"--target i686" つけると本体しか作られないので、2回実行。


# rpmbuild --rebuild --target i686 openssl-0.9.7a-40.src.rpm
# rpmbuild --rebuild openssl-0.9.7a-40.src.rpm

インストール。うまくいくときはやけにあっさり。


# rpm -Uvh /usr/src/redhat/RPMS/i686/openssl-0.9.7a-40.i686.rpm /usr/src/redhat/RPMS/i386/openssl-devel-0.9.7a-40.i386.rpm /usr/src/redhat/RPMS/i386/openssl-perl-0.9.7a-40.i386.rpm

RPM パッケージをそのまま、ってのは出来ないですが、SPEC ファイルの更新履歴とか見てると丹念にパッチをあてたりして育てている様子が伺えたりするし、SRPM からリビルドすればなんとか使えるようですね。今回はたまたま、かもしれませんが。

というわけでかなりの長い間悩んでいたことがひとつ解決。たぶん。

NTP サーバは出来るだけ福岡大以外のものを指定しましょう

NTP を利用してPC の時刻を同期させる」 でmfeed と福岡大学のNTP サーバを利用させて頂いていましたが、この福岡大学の回線の帯域がNTP サーバへのリクエストで常に消費され続けたりしているので皆で負荷分散しましょう、というお話。

自分の使っているプロバイダでNTP サービスが動いていればそれを利用するのがベストです。もしない場合はmfeed のサーバを指定します。

というわけで、ウチのプロバイダも非公式ながらNTP サーバがいたようなので、設定変更。一応、同期しつつある模様。まとめサイトにも情報乗ってるし、"ntpq -p" で途中経路のルータを調査、そこから芋づる式に引き出せた情報ではあるけど、いつサービス止められるか分からないのでmfeed の方も継続。

(2005/05/23 15:07 追記)

  • ntp server
    http://www.asahi-net.or.jp/~mu6k-ski/ntp.html

真っ白けのページ

IE のセキュリティレベルを上げて以来、真っ白けのページに遭遇することが多くなってきました。落胆のため息をつきつつ、仕方なくソースを開いてみると、そういうページはほぼ例外なくHTML の<HEAD> 部分に


<META HTTP-EQUIV=Refresh CONTENT="0; URL=http://www.hogehoge.com/">

とか書いていて、そして<BODY> は真っ白け、なのです。自動で別のページに飛ばす、というのは使いようによっては非常に危険なのでこういうのも弾くようになるのですね。えらいぞIE。

セキュリティレベルを上げることによって不便になることは良くあることですが今回ばかりは違います。あえて断言しますが、間違いなくページ製作者の無自覚さが原因です。

例えば、HTMLHelp.com のMETA タグの説明ページ

では<META HTTP-EQUIV=Refresh ...> について、以下のように書かれています。

全てのブラウザがこれをサポートしているとは限りませんので、必要に応じて新しいページへ移動する代替えの方法を提供しておくべきです。 "見出し画面"やページ移動に Refreshヘッダーがよく使われますが、技術的には有効なものではありません、と言うのは更新される画面をユーザーは全く見ていないかもしれないし、ブラウザ上でユーザーの経緯メッセージを書けなくなくなるからです。

こういう動作をさせたいならば、本来はWeb サーバ側で"HTTP ステータス 301" などを使って実現すべきなのです。

色々な制約があってそこまではできなくても、せめてジャンプ先のURL へのリンクを作っておくべき。絶対。「xx秒後に自動的にジャンプします。ジャンプしない場合は以下をクリックしてください」 みたいなやつ。意外と、これができているところって少ない気がする。

などということを以下の記事の前半部分を読んでいて思ったりしました。JavaScript が無くても最低限ナビゲーションは出来るようにしておいて欲しいところ。ウチのサイトでは外部リンクは基本的に有無を言わさず"target="_blank"" つけちゃってます。

「その組織のドメイン名と今見ているドメインが違う。大丈夫なのか?」 とかいうのは「xxx@xxx.com にケータイから空メールを送信!!」 とかいうのを見るたびによく思います。あれも、詐欺的手口に使われやすい方法だと思います。

たぶん携帯で長いメールアドレスを打ち込ませるのが面倒だろうし、とかの配慮からだろうと思うのですが、QR コードとかも普及してきたのでそっちで解決したほうがスマートな気がする。もちろん、手入力が気にならない人用にメールアドレスを文字でも書いておく、と。

ImageMagick をRPM でインストール

MovableType で必要との事でずいぶん前にソース(ImageMagick-5.5.7-15.tar.gz) からインストールした のですが、RRDTool でも使うみたいなので久しぶりに確認してみたらバージョンナンバーが上がっていたので入れ替えを考えてみます。

これまではソースからインストールしていたので、


make uninstall

でこれまでのバイナリを削除。

オフィシャルサイトには、昔はなかったはずのRPM ファイルがありますが、あまりヒトに頼りきりになるのもアレなので、いつものごとくまずはSRPM を貰ってきてパッケージ作成するも、失敗。また良く分からないエラーが。最近こういうの多すぎ。


RPM build errors:
File not found by glob: /var/tmp/ImageMagick-6.1.8-root/usr/lib/perl*/site_perl/*/*/Image
File not found by glob: /var/tmp/ImageMagick-6.1.8-root/usr/lib/perl*/site_perl/*/*/Image/Magick.pm
File not found by glob: /var/tmp/ImageMagick-6.1.8-root/usr/lib/perl*/site_perl/*/*/auto/Image/Magick
File not found by glob: /var/tmp/ImageMagick-6.1.8-root/usr/lib/perl*/site_perl/*/*/auto/Image/Magick/*
File not found by glob: /var/tmp/ImageMagick-6.1.8-root/usr/share/man/man3/*gz

仕方がないので"ImageMagick-6.1.8-9.i386.rpm" を貰ってきてインストール。なんだかずいぶんあっさりと、目的達成。頼れるときは頼ったほうが良いかも。

(2005/01/22 01:36 追記)
昨日の今日でバージョンが上がってるし。ついでに、fedora 用RPM をみつけたので特に気にせずにRHL9 に入れてみる。

入れたのは以下の4つ。いらないのもあるかも。


# rpm -qa |grep ImageMagick
ImageMagick-devel-6.1.9-2
ImageMagick-perl-6.1.9-2
ImageMagick-debuginfo-6.1.9-2
ImageMagick-6.1.9-2

あと、ソースファイルももらってきて解凍、できたフォルダの中の"PerlMagick" というフォルダに移動。"README.txt" を読みつつ、必要に応じて"Makefile.PL" を編集。であとはインストール。


# tar xvzf ImageMagick-6.1.9-1.tar.gz
# cd ImageMagick-6.1.9-1/PerlMagick
# perl Makefile.PL
# make
# make install

MovableType のmt-check.cgi の実行結果。ちゃんとインストールされました。


Image::Magick...
Your server has Image::Magick installed (version 6.1.9).

(2005/01/22 01:42 追記)
MovableType の画像アップロードでちゃんとJPEG ファイルのサムネイルが作れることも確認。これまでサムネイル作成でエラーが出てたりして、なにげに懸案事項だったので、問題解決ばんざーい。

RRDTool のRPM を作ってインストール

以前「MRTG の設定で挫折」 して以来、軽くトラウマーとなり、その後永きに渡って放置してきたハードウェモニタリングですが、MRTG より設定が難しいらしいという噂のRRDTool もHotSaNIC というものと併用すれば比較的簡単に導入出来るらしい、ということが分かったので改めてチャレンジしてみることにしました。参考にしたのは以下のページ。

あと、実際にインストールしたソフトをリスト、関連記事へリンクしておきます。細かいライブラリなどが別途必要になる場合があります。

以下、文末の表記ゆれが多々ありますがご容赦を。

公式サイトから"rrdtool-1.0.49.tar.gz " をダウンロード、中にSPEC ファイルがありますので"/usr/src/redhat/SPECS" へコピーします。漢字パッチはそのまま適用しても問題ないようなので、SPEC ファイルの中に記述してみましたが、記述を間違えたらしく、日本語化に失敗してました。RPM 作り直すのも手間なので、まぁ、またいずれ機会があれば。英語表示でも特には困らないです。


# rpmbuild -bp --target i686 /usr/src/redhat/SPECS/rrdtool.spec # パッチをあてる
# rpmbuild -bc --target i686 /usr/src/redhat/SPECS/rrdtool.spec # コンパイルを行う
# rpmbuild -bi --target i686 /usr/src/redhat/SPECS/rrdtool.spec # インストールテスト
# rpmbuild -ba --target i686 /usr/src/redhat/SPECS/rrdtool.spec # パッケージを作成する

出来上がったパッケージをインストールしようとしたところ、依存関係のエラー発生。


# rpm -Uvh /usr/src/redhat/RPMS/i686/rrdtool-1.0.49-1.9.i686.rpm
: Failed dependencies:
perl(Net::SNMP) is needed by rrdtool-1.0.49-1.9

[rrd-users] Re: Can't install rrdtool(failed dependencies--perl(Net::SNMP)is needed by rrdtool-1.0.41-1.8.0)」 の記述を参考に、"cpan2rpm" で"Net::SNMP" パッケージを作り、インストール。


# cpan2rpm Net::SNMP
(snip)
# rpm -Uvh /usr/src/redhat/RPMS/noarch/perl-Net-SNMP-v5.0.1-1.noarch.rpm
: Failed dependencies:
perl(Crypt::DES) is needed by perl-Net-SNMP-v5.0.1-1
perl(IO::Socket::INET6) is needed by perl-Net-SNMP-v5.0.1-1
perl(Socket6) is needed by perl-Net-SNMP-v5.0.1-1

ここでもまた依存関係で怒られたので、またしても"cpan2rpm" で"Crypt::DES"、"IO::Socket::INET6"、"Socket6" それぞれのパッケージを作る。


# cpan2rpm Crypt::DES
# cpan2rpm IO::Socket::INET6
# cpan2rpm Socket6

"IO::Socket::INET6" はパッケージ作成中に良く分からないエラーが出る。コンパイル後のテストでfail してる模様。修正方法も思いつかないのでこれ以上の深追いは諦める。"IO::Socket::INET6"、"Socket6" は共にIPv6 関連のだと思うので、見なかったことにする。


Failed Test        Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
t/io_multihomed6.t   97 24832     5    5 100.00%  1-5
t/io_sock6.t         97 24832    20   20 100.00%  1-20
Failed 2/3 test scripts, 33.33% okay. 25/32 subtests failed, 21.88% okay.
make: *** [test_dynamic] Error 29

で、"--nodep" を付けて強行。問題があればまた考える。


rpm -Uvh --nodep /usr/src/redhat/RPMS/noarch/perl-Net-SNMP-v5.0.1-1.noarch.rpm

これでやっとRRDTool がインストールできた。


# rpm -Uvh /usr/src/redhat/RPMS/i686/rrdtool-1.0.49-1.9.i686.rpm

HotSaNIC はただのPerl スクリプト群なので、ダウンロードして解凍したものを"/usr/local/HotSaNIC/" 以下に放り込めばOK。hddtemp をsensors 内で使えるようになったみたいなので、daily snapshot の"hotsanic-0.5.0-pre6-snapshot.tgz" を使用。

あとは以下の順番でコマンドを入れ、試行錯誤しつつ設定していけばOK だと思います。細かい解説は上記のサイトなどをご参照ください(手抜きですみません)。


# cd /usr/local/HotSaNIC # 作業時は必ずこのフォルダで
# ./setup.pl # 初回、バージョンアップ、なんかおかしいときなどに実行
# emacs settings # よしなに編集
# emacs modules/hogehoge/settings # これもよしなに編集
# ./makeindex.pl # インデックスを作る
# ./rrdtimer.pl -i # 手動で実行しますよ
# ./rrdgraph start # rrdtool のデーモンを起動
# ./diagrams.pl # グラフを作成
# ./convert.pl # サムネイルを作成

なかでも一番ハマったのがsensors の設定。"lm_sensors howto" とかいうのも見つからないし、具体的な記述例とかもあんまりなかったので少々てこずりましたが、何とかうまくいったので、ASUS TUSL2 + (i2c) + lm_sensors + hddtemp での記述例を書いておきます。参考になれば。


SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/temp2,cpu_temp,CPU temp,3,1.4,25,C"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/temp1,mb_temp,M/B temp,3,1,0,C"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/fan1,cpu_fan,CPU fan,2,1,0,RPM"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/fan2,case_fan,CASE fan,2,1,0,RPM"
SENSOR="/usr/local/sbin/hddtemp -n /dev/hda |",hda,HDD1,1,1,0,C,40,60
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/in0,vcore1,Vcore 1,3,1,0,V"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/in1,vcore2,Vcore 2,3,1,0,V"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/in2,+3.3v,+3.3V,3,1,0,V"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/in3,+5v,+5V,3,1.68,0,V"
SENSOR="/proc/sys/dev/sensors/as99127f-i2c-0-2d/in4,+12v,+12V,3,3.8,0,V"

+5V と+12V の記述が厄介でした。"/etc/sensors.conf" をじっくり読んで、以下のような記述を発見。


label in3 "+5V"
label in4 "+12V"

compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1) compute in4 ((28/10)+1)*@ , @/((28/10)+1)

思いつきで、+5V には"(6.8/10)+1 = 1.68"、+12V には"(28/10)+1) = 3.8" を掛ければ良いのだなと適当に解釈、そのまま書いてみたらうまく出来ました。

全てがうまくいったら、起動スクリプトの設定。


# cp /usr/local/HotSaNIC/rrdgraph /etc/rc.d/init.d/rrdtool
# /sbin/chkconfig --add rrdtool
# /sbin/chkconfig --level 2345 rrdtool on
# /sbin/chkconfig --list rrdtool
rrdtool         0:オフ  1:オン  2:オン  3:オン  4:オン  5:オン  6:オフ
# /etc/rc.d/init.d/rrdtool start

(2005/01/20 15:55 追記)
標準で動いてなかったping を、以下のページを参考にして動くように設定。CPAN から"Net::Ping" をインストール。"modules/ping/settings" にアドレスと説明のリストを作り、"./setup.pl" を再度実行、特にエラーもなく表示されるようになりました。

(2005/06/28 20:00 追記)
CPU とM/B の記述が反対でした。あと、CPU もそのままの温度は不正確だったので、それも修正。修正の根拠は、+5V とかと同じく"/etc/sensors.conf" の"chip "as99127f-*"" 内の記述。ウチのサーバのM/B はTUSL2 なのですが基本的にはCUSL2 と同じでOK。


# Asus CUSL2, Asus CUV266-DLS
   compute temp2 (@*60/43)+25, (@-25)*43/60

# Most Asus boards have temperatures settled like that: label temp1 "M/B Temp" label temp2 "CPU Temp"

"(@*60/43)+25" を計算、60/43 は1.3953488372093023255813953488372 なのだけど適当に丸めて1.4倍して25 を足すという感じで。小数点以下の誤差が出るけどこのくらいなら許容範囲内かなー、と。

/etc/sensors.conf(lm_sensors の設定)」 も参照してみてください。

i2c とlm_sensors のRPM を作って入れ直し(RRDtool を使う)

RRDTool のインストールにあたり、「lm_sensors のインストール」 でインストールしたi2c とlm_sensors も改めてRPM パッケージを作ってインストールしようかと思いました。ただ途中で色々と躓いたので、今回は見送りにしました。今後のためにメモだけ残しておきます。

"i2c-2.8.4.tar.gz" と"lm_sensors-2.8.5.tar.gz" をインストールしていますが、現時点での最新のバージョンはどちらも2.9.0 です。

i2c は"i2c-2.9.0.tar.gz" を拾ってきて解凍、"RPM/i2c-rh.spec" を"/usr/src/redhat/SPECS" へ。で、パッケージのビルド。エラー発生。


RPM build errors:
File not found: /var/tmp/kernel-i2c-2.9.0/usr/local/include/linux
File not found by glob: /var/tmp/kernel-i2c-2.9.0/usr/local/include/linux/*.h

Re: RedHat 9」 ではkernel-source は入っているか? とか聞かれているけど、入っているし、たぶん無関係。

ここ数日、おんなじことばっかりやってるのでかなりピヨってまいりました。公式サイト見てるとなにやら以下のような記述が。

RPMs for Red Hat 7.3, 8.0 and 9, and Fedora Core 1, were made available by Axel Thimm on his ATrpms website. You need to use the i2c/lm_sensors-enabled kernels from the same site.

これはベンリかもしれない。

ただ、i2c ってkernel と密接な関係があるらしいし、kernel の入れ替えはかなり抵抗感がある。万一起動しなくなった場合のリカバーとかも考えると…というわけで今回は中止。一応動いてるようだし、ま、いっか。ということで。

net-snmp のRPM を作る(RRDtool を使う)

ずいぶんと前にnet-snmp とMRTG を…とか言ってたような気がしますが、全てなかったことにして、改めてnet-snmp + RRDtool で稼働状況をモニタ出来るようにしていきたいと思います。

というわけで色々話が前後するかもしれませんが、まずはnet-snmp のRPM を作るところから。SourceForge のページには"net-snmp-5.2-1.fc2.i686.rpm" なんてファイルが置いてあって、いかにもFedora Core 2 用ですよー、といってるような気がしますが、効率が良くないけどやはりここは自分でソースからインストール。というわけで"net-snmp-5.2.tar.gz" を頂いてきました。

解凍して中にspec ファイルがないか捜索、"dist/net-snmp.spec" を発見。特にいじることもなく、ビルド通りました。


# rpmbuild -bp --target i686 /usr/src/redhat/SPECS/net-snmp.spec # パッチをあてる
# rpmbuild -bc --target i686 /usr/src/redhat/SPECS/net-snmp.spec # コンパイルを行う
# rpmbuild -bi --target i686 /usr/src/redhat/SPECS/net-snmp.spec # インストールテスト
# rpmbuild -ba --target i686 /usr/src/redhat/SPECS/net-snmp.spec # パッケージを作成する

ただ、途中で

/usr/bin/ld: cannot find -lelf

みたいなエラーが出てとまったので、検索して見つけた「Compiling apt for RH 9.0.」 を参考にして"elfutils-devel" をインストール。このへんは手抜してyum を利用。


# yum install elfutils-devel
(snip)
I will do the following:
[install: elfutils-devel 0.76-3.i386]
Is this ok [y/N]: y
Getting elfutils-devel-0.76-3.i386.rpm
Calculating available disk space - this could take a bit
elfutils-devel 100 % done 1/1
Installed:  elfutils-devel 0.76-3.i386
Transaction(s) Complete

そして無事にパッケージが出来ました、めでたし、めでたし。

(2005/01/19 16:55 追記)
実際にインストールすると以下のようなメッセージが出ました。"cpan2rpm" でパッケージを作って解決。


# rpm -Uvh net-snmp-5.2-1.i686.rpm
: Failed dependencies:
perl(Term::ReadKey) is needed by net-snmp-5.2-1
perl(Tk) is needed by net-snmp-5.2-1

(2005/01/20 14:44 追記)
Tk パッケージもテストにfail してしまうので、さっくり諦めた。今後不具合が発生した時用にいちおうソースが置いてあるフォルダへリンク。

で、インストール強行。


# rpm -Uvh --nodep net-snmp-5.2-1.i686.rpm

続く。

Perl のCPAN を使う

Perl のモジュール(例えば、Jcode など) はCPAN で管理すればベンリです。初期設定などは上記サイトなどを参照。手抜きですみません。基本的には、


# perl -MCPAN -e shell

でCPAN のシェルを起動、


CPAN> install Jcode

とかやれば自動的にモジュールのインストールを行ってくれます。

シェルの終了は"Ctrl+D" あるは"q" です。

この方法は、RPM によるパッケージ管理とは切り離されていますので、なにかRPM パッケージをインストールしようとした際に、CPAN でモジュールはインストールしているのにRPM の依存関係でおこられたりするかもしれません。そこでオススメしたいのが"cpan2rpm"。これはCPAN モジュールをRPM パッケージに仕立ててくれるものなのです。

今回は公式サイトから"binary RPM cpan2rpm-2.026-1.noarch.rpm" を頂いてきました。RHL9 にインストールしてみましたが、

Our binaries are architecture independent but generated on an i386 platform running perl 5.8.0

とあるので特に問題もなさそう。たぶん。より安全を求める人は"Old Fedora Extras" のリポジトリからからどうぞ。現時点ではバージョンは同じです("cpan2rpm-2.026-0.fdr.1.noarch.rpm")。

使い方は、


# cpan2rpm Jcode

これでよしなにしてくれます。

(2005/01/26 16:29 追記)
CPAN つながりで。

Filezilla 2.2.10 とEUC&lt;-&gt;SJIS 変換パッチ

FileZilla 2.2.10 と、同バージョン用ファイル名 EUC<->SJIS 変換パッチ がリリースされました。「FileZilla Forums :: View topic - FileZilla 2.2.10 delayed」 によると、今バージョンでの変更点は、

FileZilla 2.2.10 is done, but due to problems with the file release system of Sourceforge, I won't be able upload it right now.

Here's the changelog:
- If server does not allow resuming, prompt for file exists action if APPE fails
- Add support for unix style directory listings with named size information (e.g. 7.5k)
- Parsing VxWorks type listings did not work properly
- fixed some crashes

とのこと。セキュリティFIX を含むものではありませんがクラッシュを修正した、ともあるのでアップデートしておいても良いかも。

PHP 4.3.10 のRPM を作って入れ替え

「PHP 4.3.9 以前 / 5.0.2 以前に複数の重大な欠陥。」 とのこと。

実はPHP 4.3.8 のまま放置していたので、これを気に入れ替え。ついでに、RPM の作り方をメモ。

まず、ダウンロードページ から"php-4.3.10.tar.gz" (4,892,209 bytes, md5: 73f5d1f42e34efa534a09c6091b5a21e) をダウンロード、"/usr/src/redhat/SOURCES" へ。

マニュアルのパッケージも作っておきたい人は各言語版のマニュアル もダウンロードして同じく"/usr/src/redhat/SOURCES" へ。

さらに、php.conf をどこからから探してきてこれも"/usr/src/redhat/SOURCES" へ。ウチではとりあえずつじつまを合わせるために"/etc/httpd/conf.d/php.conf" を再利用。

先ほどダウンロードしてきた"php-4.3.10.tar.gz" の中の"php4.spec" は実行しても「SRPM を作って終了」 となってしまうので、RHL9 用のPHP のSRPM の中から"php.spec" だけを抜き出して適当に作り変えてみました。全部貼り付けると異常に長くなるので、変更したポイントだけを短く紹介。基本的にはPatch 関係を全部コメントアウト、マニュアルも日本語のみ、としています。


%define contentdir /var/www
%define manual_langs ja


Name: php Version: 4.3.10 Release: 1

Source0: %{name}-%{version}.tar.gz Source1: php_manual_ja.tar.gz Source2: php.conf

コンパイルオプションには以下のものを追加。あとはお好みで。


--enable-roxen-zts \
--enable-mbstring \
--enable-mbstr-enc-trans \
--enable-mbregex \
--enable-zend-multibyte \
--enable-track-vars \
--with-zlib \

そしていつもの呪文。


# rpmbuild -bp --target i686 /usr/src/redhat/SPECS/php.spec # パッチをあてる
# rpmbuild -bc --target i686 /usr/src/redhat/SPECS/php.spec # コンパイルを行う
# rpmbuild -bi --target i686 /usr/src/redhat/SPECS/php.spec # インストールテスト
# rpmbuild -ba --target i686 /usr/src/redhat/SPECS/php.spec # パッケージを作成する

出来上がったらパッケージのアップグレード、httpd の再起動。


# rpm -Uvh /usr/src/redhat/RPMS/i686/php-4.3.10-1.i686.rpm
# rpm -qa |grep php
php-4.3.10-1
# /etc/rc.d/init.d/httpd restart

"php.ini.rpmnew" が出来たので"/etc/php.ini" と比較してみましたが、特に変更点がなかったので、そのまま。

あと、「Apache 2.0.52 に入れ替えついでにいくつか変更」 で書いたように、"X-Powered-By:" というフィールドでPHP のバージョンが丸見えになってしまう対策で"/etc/php.ini" の中のexpose_php = On" を"expose_php = Off" に変更。

PHP 4.3.8 もRPM を作って入れていたのですが、作業手順のメモを書き忘れていたので少し手間取りました。ちゃんと書こう。>じぶん

PuTTY でsocks proxy の機能を利用する

セキュリティホール memo 経由。

もともとはSSH にある機能とのことですが、SSH クライアントであるPuTTY でも同様の設定が出来るようです。というわけで早速トライ。といってもにとよんさんの説明どおり にやれば特に問題なくできました。proxy を変更できない環境でも、例えばSleipnir なら自前でproxy のリストが作れるのでそこで同様に設定すればOK です。

接続テスト。確かにネットワーク内部からしかアクセスできないはずのページがあっさりと見られました。これまで、どうしても必要なときにはVNC をSSH でフォワードさせて、とかやっていたのですが、これはベンリです。一応、確認君などでもチェックしましたが、確かにトンネルしている模様。

出先でネットワークに繋ぐとき、できるだけ途中経路に痕跡を残したくない場合には有用かもしれません(でもSSH の接続先から身元がバレると思うので、犯罪的行為には使えないと思うよ!!)。

というわけで便利すぎなのですが、socks proxy とか動作原理分からずに使っているので、要勉強ですな。なにかとんでもないミスとかしてしまうかもだし。こういうことが出来る以上、SSH へのアクセスは厳重に管理したほうがよさそうです。

(2005/03/07 13:05 追記)
PuTTY でSquid proxy を利用する」 も併せてご覧ください。

BBClone 入れてみました

「多く見られたページ」 をリスト表示できる方法がないかなぁ、とか思ってさまよっていたら偶然見つけたので、そのまま勢いでインストールしてみました。良い感じ。

KANWAKYUDAI::Blog: BBCloneでphpアクセス解析 の説明をもとに、気づいた点などを簡単に説明。

BBClone のダウンロードページ から、"bbclone-0.4.6-utf8.zip" をダウンロード、適当に解凍して"conf/config.php" を適当に編集。このへんは上記を参照に。

で、サーバにアップロード。"var/" 以下のファイルの".htalock"、"*.php"、"*.inc" のアクセス権を666(-rw-rw-rw-) に変更。コレ忘れるとハマります。かなり。

最後は、各ページにphp スクリプトを仕込むわけですが、MovableType だとテンプレートに仕込んでおけばいい感じに使えます。参考までに、ウチでの設定。


<?php
define("_BBC_PAGE_NAME", "「ページタイトル」");
define("_BBCLONE_DIR", "「BBClone をインストールしたパス」");
define("COUNTER", _BBCLONE_DIR."mark_page.php");
if (is_readable(COUNTER)) include_once(COUNTER);
?>

「ページタイトル」 を各テンプレートで変えてます。

Main Index"home"
Category Archive"<MTArchivelist><$MTCategoryDescription$></MTArchivelist>"
Date-Based Archive"<$MTArchiveDate format="%Y/%m"$>"
Individual Entry Archive"<$MTEntryTitle$>"

ページタイトルは日本語が一部文字化けしてしまっていますが、検索文字列は文字化けないようです、今のところ。日本語ファイルもはじめから入っているので、最初の設定さえ超えればあとはベンリに使えそうです。

(2005/04/09 12:23 追記)
アップグレード時の注意まとめ。これを怠るとこれまで溜めたデータが全部飛んじゃいます。これを書いている時点では"BBClone 0.4.8" が最新版です。オフィシャルページ からbbclone-0.4.8-utf8.zip を貰ってきます。

適当に解凍し、ここからが本番。

"conf/config.php" をこれまでのと見比べながら書き換え。あとはFTP なりでvar フォルダ以外全て をアップロード。うっかりこのフォルダも上書きしちゃうとこれまでのが全部消えますので要注意。

RHL9 にFirefox 1.0 日本語版をRPM でインストール

Firefox 1.0 日本語版をRPM で入れてしまおうというお話。やり方はとても簡単、公式サイトからコンパイル済みのバイナリパッケージを拾ってきて、あともろもろも拾ってそれぞれ"/usr/src/redhat/SOURCES/" "/usr/src/redhat/SPECS/" 以下に放り込み、


# rpmbuild -ba /usr/src/redhat/SPECS/firefox.spec

でサクっとできあがります。 以下そのときのログ。


Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.26252
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ rm -rf /var/tmp/firefox-1.0-buildroot
+ cd /usr/src/redhat/BUILD
+ rm -rf firefox-1.0
+ /bin/mkdir -p firefox-1.0
+ cd firefox-1.0
+ /usr/bin/gzip -dc /usr/src/redhat/SOURCES/firefox-1.0.tar.gz
+ tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
++ /usr/bin/id -u
+ '[' 0 = 0 ']'
+ /bin/chown -Rhf root .
++ /usr/bin/id -u
+ '[' 0 = 0 ']'
+ /bin/chgrp -Rhf root .
+ /bin/chmod -Rf a+rX,g-w,o-w .
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.65061
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd firefox-1.0
+ LANG=C
+ export LANG
+ /usr/bin/install -d -m 755 /var/tmp/firefox-1.0-buildroot/usr/lib
+ cp -a firefox /var/tmp/firefox-1.0-buildroot/usr/lib
+ /usr/bin/install -D -m 644 /usr/src/redhat/SOURCES/firefox.desktop /var/tmp/firefox-1.0-buildroot/usr/share/applications/firefox.desktop
+ /usr/bin/install -D -m 644 /usr/src/redhat/SOURCES/firefox.png /var/tmp/firefox-1.0-buildroot/usr/share/pixmaps/firefox.png
+ /usr/bin/install -d -m 755 /var/tmp/firefox-1.0-buildroot/usr/bin
+ ln -s /usr/lib/firefox/firefox /var/tmp/firefox-1.0-buildroot/usr/bin/firefox
+ ln -s /usr/lib/firefox/firefox-bin /var/tmp/firefox-1.0-buildroot/usr/bin/firefox-bin
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
Processing files: firefox-1.0-0.RH9
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/firefox-1.0-buildroot
書き込み中: /usr/src/redhat/SRPMS/firefox-1.0-0.RH9.src.rpm
書き込み中: /usr/src/redhat/RPMS/i386/firefox-1.0-0.RH9.i386.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.85100
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd firefox-1.0
+ rm -rf /var/tmp/firefox-1.0-buildroot
+ exit 0

出来上がったRPM ファイルのファイル名が気に食わない場合はfirefox.spec の3行目あたりを


Release         : 0.RH9

などに書き換えるとよいでしょう。後は特にいじらなくても通ると思います。
あとはそのままインストール


# rpm -Uvh /usr/src/redhat/RPMS/i386/firefox-1.0-0.RH9.i386.rpm

初回のみ、root でfirefox を起動させ、初期ファイルを作る必要があるようです。
うまく起動できたらMozilla は削除してしまいます。


# rpm -qa |grep mozilla
mozilla-1.4.2-0.9.0
mozilla-nss-1.4.2-0.9.0
mozilla-nspr-1.4.2-0.9.0
# rpm -e mozilla-1.4.2-0.9.0
# rpm -e mozilla-nss-1.4.2-0.9.0
# rpm -e mozilla-nspr-1.4.2-0.9.0

Windows 版とそう変わらない操作感のようです。これは良い。思ってたよりもあっさりできたので大満足。

(2005/05/18 09:46 追記)

(2005/06/02 21:43 追記)
Firefox 1.0.4 版のRPM を作りました。手順は全く変わらないので、ここにぶら下げておきます。バイナリ本体は、

から、"firefox-1.0.4.tar.gz" を落とします。"firefox-1.0.4.installer.tar.gz" ではないので注意!!

SPEC ファイルも新しくなっているので、以下のページから1.0.4 用を落としてきます。

"firefox.spec" をエディタで開いて、14行目を以下のように書き換えます。


Source0         : firefox-1.0.4.tar.gz

あとは上に書いたのと同じ手順でRPM パッケージをビルド、インストール。

WinSCP 3.7.1 に入れ替え

PuTTY のバージョンアップにあわせてWinSCP もバージョンアップ。「Download - WinSCP - Freeware SFTP and SCP client for Windows」 から「WinSCP 3.7.1 multilanguage installation package」 をダウンロード、インストールの上、「Translations - WinSCP - Freeware SFTP and SCP client for Windows」 にある日本語ファイルをダウンロード・解凍して同じフォルダに入れれば自動的に日本語化されます。ダウンロード数を見るに、日本人で使ってる人はまさしく「ケタが違う」 という状況になっていますね。

現在、WinSCP とFileZilla を併用しています。現在のPuTTY の弱点である、「EUC な日本語のファイルが扱えない」 というのは、FileZilla では「Filezilla ファイル名 EUC<->SJIS 変換パッチ」 で解決が図られ、かなり重宝していますが、逆にWindows サーバに繋いだときにサーバ上のSJIS な日本語が化けるのでパッチを当ててないのと併用しないといけなかったり、あとMT のテンプレートをいじっている時など、サーバ上にある小さなファイルを上書きしていくと勝手にファイル末尾にゴミをくっつけてくれたりして微妙に信用できないのでそういう時はPuTTY で転送してます。

PuTTY beta 0.56 リリース

PuTTY beta 0.56 が出たのにあわせて、「SSH はじめました」 で書いて以来愛用させていただいているYebisuya Hompo / 蛭子屋本舗(一応本店) のごった煮版も更新されたので入れ替え。最新の状況はゑBLOG で追いかけるとよいようです。

いくつかのセキュリティフィックスとバグフィックスがなされたようなので、お使いの方はお早めに更新を。

Linux 用のクラッシュダンプ作成ツール

Linux システムに障害発生時のクラッシュダンプ機能を提供するツールが無償提供されました。でもそれの解析ツールは別途、ということになっているような。私のような末端のLinux 使いにとってはあまり使うことのない(システム落とすほど危険なコトはたぶんあんまりしない) とは思うのですがメモをかねて。

(2004/10/14 21:36 追記)

Apache 2.0.52 に入れ替えついでにいくつか変更

あ、2.0.51 が出てる、入れ替えなきゃ…とか思ってるうちにまた新しいバージョンが出たのでこれを機に入れ替え(それでも微妙に遅いという話もある)。

基本的には、前に Apache 2.0.50 のRPM ファイルを作って入れ替え でやった方法をそのまま踏襲。

2.0.52 に含まれるhttpd.spec では、必要なパッケージの中でdb4-devel がデフォルトになってるので、ここの部分の書き換えが不要になりました。あと、PHP コンパイル対策として、httpd.spec の240行目あたりを以下のように、2行コメントアウトして後ろの方に移動(太字部分が変更点)。


# Remove unpackaged files
rm -rf $RPM_BUILD_ROOT%{_libdir}/libapr{,util}.{a,la} \
       $RPM_BUILD_ROOT%{_libdir}/APRVARS $RPM_BUILD_ROOT%{_libdir}/*.exp \
       $RPM_BUILD_ROOT%{_libdir}/httpd/modules/*.exp \
       $RPM_BUILD_ROOT%{contentdir}/htdocs/* \
       $RPM_BUILD_ROOT%{contentdir}/cgi-bin/*

# $RPM_BUILD_ROOT%{_bindir}/ap?-config \ # $RPM_BUILD_ROOT%{_sbindir}/{checkgid,dbmmanage,envvars*} \

お次は、325行目あたりに以下の2行を追加(太字部分が追加点)。


%{_libdir}/libapr-0.so.*
%{_libdir}/libaprutil-0.so.*

%{_bindir}/ap?-config %{_sbindir}/envvars

あと、オプションをかえたい場合はお好みで。編集が終わったらいつものごとくビルド開始。
今回は"--target i686" というオプションを追加してみた。劇的に性能が向上するわけでもないらしいですが、なんとなく。


# rpmbuild -bp --target i686 /usr/src/redhat/SPECS/httpd.spec # パッチをあてる
# rpmbuild -bc --target i686 /usr/src/redhat/SPECS/httpd.spec # コンパイルを行う
# rpmbuild -bi --target i686 /usr/src/redhat/SPECS/httpd.spec # インストールテスト
# rpmbuild -ba --target i686 /usr/src/redhat/SPECS/httpd.spec # パッケージを作成する

で、あとはお定まりのインストール。


/etc/rc.d/init.d/httpd stop

Apache 本体をインストール。


rpm -Uvh httpd-2.0.52-1.i686.rpm

もともとRPM でApache を入れていた場合、以下のようなメッセージが出るので適当に編集します。


/etc/httpd/conf/httpd.conf created as /etc/httpd/conf/httpd.conf.rpmnew

今回、mod_deflate を使って、いわゆるgzip 圧縮転送を仕込んでみました。転送量を気にするほどのアクセスもないわけですが、なんとなく。

httpd.conf とかの編集が終わったら、Apache を起動します。


/etc/rc.d/init.d/httpd start

無事入れ替え完了。お疲れ様でした。

Samba 3.0.6 + 日本語パッケージ集に入れ替え

今使ってるSamba は"samba-2.2.7a.ja-4" で、幾多ものセキュリティホールがあるにもかかわらず、どうせ自分だけしか使わないし、とかなりの間放置していたのですが、現在、Samba には2.2.x 系統と3.0.x 系統がありまして、2.2.x 系統は10/01 を以てアップデートが終了するとのことなので、なんとなく今のウチに3.0.x 系統の最新リリースである3.0.6 に入れ替えておくことにしました。

Samba 3.0 ではこれまでのような日本語版というのはなく、"glibc" あるいは"libiconv" にパッチをあてた上で、各パッチに対応したバージョンのSamba を使う必要があるとのこと。両方のメリット/デメリットを勘案した上で、glibc にパッチをあてることにしました。

Samba オリジナルのパッケージがそのまま使える、ってのが何よりのメリットです。libiconv の方だとSamba の新しいバージョンが出るたびに作業が増えてしまうので。RHL9 は既にオフィシャルなアップデートは終了しているので、全てを自分でなんとかしないといけなくて、まあなんとかできそうな感じなのでこっちでいいか、と。

リファラspam? 対策

httpd であるApache の標準の機能を使ってアクセスログを取っています。そのログはWebalizer が定期的に食べてくれて一覧にしてHTML ページにしてくれるので、普段はコレを見るだけで状況をチェックできます。リアルタイムで見てるわけではないですが、さほどアクセスのあるサイトでもないですし、この程度で充分。

さて、そんな風にしてチェックしてたら、なにやら見慣れぬリファラ(referrer) が。リファラってのはブラウザがサーバに送ってくる、一つ前に見ていたページのURL のことで、大抵はそのページにリンクしている元のページ(リンク元) のアドレスであることが多いです。で、これを見ることでどこからリンクされてるかが分かって、夜中に一人ほくそ笑んだりするわけですね。暗いですね。はい。

リファラは偽装することもできるので、Web アプリを作るときはリファラに頼ってはいけません。っと、話がそれた。で、なにやら同一のリファラからそこそこ(とはいえ、普段のウチからすれば相当数)のアクセスがあったので、すわ、どこぞで祭られたか!? と思って見に行くと…エロ同人誌をキャプチャした画像を貼り付けたページだったり。無修正エロ画像だったり…。………。えーと、とりあえずこれはこれでおいとくとして(おやくそく)、一体どこのどいつの仕業でぃ(ちょこっと江戸前風)、とばかりにApache のログ漁り。

2時間あまりの間に6つのIP アドレスを駆使し、合計118 アクセスありました。根拠は、ユーザエージェントが全て"HSlide/1.5" というものだったのと、サイト内の閲覧ルートが全て同じだったため。しかも1秒とおかずに次のページに飛んでいるため、どうみても読んでるようには見えないし、というか人の手による閲覧でないのは明かです。

この"HSlide/1.5" ってのはググってもあんまり情報が出てこないのですが、もう2度と来るな、ということでhttpd レベルで拒否しておきましょうそうしましょう。

ちなみに…アクセス元のIP アドレスのDNS レコードを引いてみたところ、案の定、lookup failed 。ついでに、whois も引いてみたところ、全て某国のアドレスでした…。なるほどね。

しかしエロサイトのトップページにアクセスを集めたいのなら分かるけど、このような形のspam 行為を行う意図が謎です。なんなんだろう?

Apache 2.0.50 のRPM ファイルを作って入れ替え

少し前の話題ですが、Apache 2.0.50 が出ています(日本語によるリリースノート (http://www.apache.org/dist/httpd/Announcement2.html.ja))。

前に、Apache はRPM による管理をあきらめ、ソースからインストールを行ったのですが、後に自分でRPM ファイルを作る目処が立ったので、この機会に再びRPM での管理に戻そうと思います。以下、なんとなくうまく行った様な気がする方法をメモ。実際に試すときは自己責任で。

あるいは、fumika.jp で公開されているApache RPM for Red Hat Linux 9 をありがたく使わせていただくのも良いかも。

Windows2000/XP 用インストーラ付きKNOPPIX 登場

これまでCD ブートさせることでHDD には一切何もインストールしなかったKNOPPIX が、Windows2000/XP 用インストーラがついて、インストールできるようにもなりました。説明文中のスクリーンショットを見るに、Windows NT 系のブートローダを利用するので2000/XP 用、ということになっているのでしょう。

インストール方法も、ISO イメージをダウンロードしてCD-R に焼いたものを利用する(or 仮想CD マウントツールでマウントする) か、ZIP ファイルをダウンロードして展開するかの2通りあります。イザというときのためのレスキューディスクとして使えたりもするので、CD-R を作っておいたほうが良いかも。

Web サーバの負荷テスト ツール

SecuLogIIS 用の負荷テストツール が挙げられていたので、Apache 用のはないのかなー、とちょこっと調べてみました。

"ab" というツールがApache には標準で付いているのでこれを使うのが一般的のようです。使い方は@IT の解説など参照。あとJmeter というのが色々できるツールのようですがあまりちゃんと見てないので分からないです。

業務で負荷テストをやる必要がある場合は「負荷テストツール」 などを参考に。

あと、探し物ついでに見つけたものをせっかくなのでリンク。

LindowsCD Smile もらった

とある方面よりLindowsCD Smile 頂きました。これはCD ブートでLinux 環境が手軽に使えますよー、というものです。同種の有名なモノとしてはKNOPPIX Japanese edition とかがあります。Linux のインストール時にありがちなあれこれ難しいことを考えなくてもCD 入れて電源を入れればあとは自動的に起動してくる、というのが大きな特徴です。そしてHDD に何もインストールをしないため、Windows 環境はそのままに、ちょこっとLinux、という使い方もできます。

というわけでドキドキしながらCD を入れて電源オン(正確には電源オンしてからCD を入れる)。なにやら起動シーケンスが始まって暫くするとよく見慣れた黒字に白文字のコンソールが、…ってコンソール!?

こりゃなにかの間違いかと思って"startx" してみるもデバイスが認識できないとかでエラー。もしやと思い収録デバイスドライバ を確認してみたところ…、ない、ない、Radeon9600(無印) はなかった…。9500 も9700 もあるってのに。…がっくり。そんなわけでいつか活用されるその日まで塩漬けです。

apachetop でApache の状態をチェック

これはまた便利なソフトがあるものですね。Apache のログを定期的に拾ってきて画面上に"top" コマンドの表示みたいに利用状況を表示してくれます。サーバがどうにも重い、というような時とかに使うと面白いかもです。ものすごく些細なことながら、表示時間を+9 時間できるオプションとかがないのが少し残念。C のソースもちらっと見たけどどこを修正すべきかの見当すら付かず。

ま、そもそも、こういうコマンドで確認しないといけないほどのリクエストなんてウチには来ないワケですが。は、は、は。

なにげにfedora.us 以下からRPM ファイルを拾える、というのが興味深い、かも。

NTP を利用してPC の時刻を同期させる

PC の時計ってのはわりとよくずれるものです。少々ずれたところでいいじゃないか、と思われるかも知れませんが、PC でTV 録画予約をしているとか、LAN で繋いだPC にファイルをコピーするとか、メールを送るとか、ずれているとかなり困るケースもあります。

そこで時刻あわせをしよう、ということになるのですが、何にあわせればいいのか。まさかNHK の時報で、ってなアナクロな方法なんかじゃとてもやってられません(BIOS でとりあえずの時刻あわせとかはやるかも)。

RPM パッケージを探す際の情報など

いつもあれはどこだっけ? となることが多いので、まとめておきます。わりと順不同。今後増えることもあるかも。ソースRPM のSPEC だけが欲しいんだ! というときに役立つかも。

    RHL9 のオフィシャルパッケージが欲しい場合は以下から。RedHatNetwork への登録(無料)が必要。
  • Red Hat Network

(2004/06/30 01:26 追記)

(2004/11/08 23:46 追記)

OpenSSH もソースファイルからRPM ファイルを作る

(2005/01/25 22:31 追記)
OpenSSH のRPM を作って入れ替え」 に追加記事を書きましたのでご参照ください。

OpenSSL の入れ替えが終わったので、次はOpenSSH。これもRPM で入れられるよう、あれこれしてみます。いったんはCheckInstall でRPM を作ってみたものの、tarball の中をよーく見てみたらredhat 用のSPEC ファイルを発見したのでこいつを使って入れ直すことにしました。

OpenSSL のソースファイルからRPM ファイルを作る

(2005/01/24 20:16 追記)
※ 以下の情報は既に古いです。「Fedora のSRPM からOpenSSL をリビルドしてRHL9 に」 をご覧ください。

RedHatLinux9 は既にRedHat によるサポートが終了していて、あとはFedora Legacy の最大限の努力に期待する、という状況ですので、頼り切りにせずに自分でパッケージを入れ替えていく努力もせねばなりません。というわけで今回はソースRPM もない、ただの "*.tar.gz" なソースファイルからRPM ファイルを作れるようにがんばってみることにします。ちなみに"*.tar.gz" なファイルのことを"tarball" とか言ったりします。tar玉 とか言ったりもするかも。

VNC 4.0 をxinetd 経由で起動させる

VNC 4.0 のRPM ファイルを作ってみる(RHL9 用)RHL9 にインストールしたVNC4 を使ってみる の続きです。

これまでのアレコレで、コマンドラインからVNC サーバを起動させれば、"VNC Viewer" で接続できることが確認できました。起動させたユーザで


$ vncserver -kill :1

とか実行しない限り、そのユーザでログオフしたとしてもVNC サーバのセッションは残ったままになるので、こういう使い方はベンリかも。

それはそれとして、ここまで出来たのだから、xinetd 経由でデーモンとして接続を待つ設定に出来れば更に手間いらずでラクが出来そうです。こういうちょっとのラクの為のたくさんの苦労がイイのです。

RHL9 にインストールしたVNC4 を使ってみる

さて、VNC 4.0 のRPM ファイルを作ってみる(RHL9 用) の続きです。

インストールは終わったものの、次はどうしたらいいのやら? というわけでいつものグーグル先生に教えを請うて導いて頂きました。まずはLinux 側での作業です。VNC 経由したいユーザで、"/usr/bin/vncserver" を実行、パスワードの設定を求められますので、適当な長さのものを設定します(foo は仮のユーザ名、hoge は仮のサーバ名です)。

VNC 4.0 のRPM ファイルを作ってみる(RHL9 用)

ちょうど新しいバージョンも出たことだしいい機会なのでLinux に入れてみることにしてみました。当然RedHat からのRHL9 用RPM ファイルのリリースはありませんし、いつまでもソースから手動でインストールするのも芸がないので、今回は「エンタープライズ:特集:第2回 RPM活用のステップアップ-SRPMリビルドとコンパイルマスター」 の記事を参考にして、自分でRPM ファイルを作ってみることにしました。

まずはファイル配布元であるRealVNC のサイトから必要なファイルをダウンロードします。名前やメールアドレスの登録が必要なように見えますが、必要なファイルの種類のチェックさえ入れればダウンロードページに進むことができます。でも一応本名とまともなメールアドレスで登録しておきました。

今回使用したのは、"x86 Linux Redhat 7.3 RPM" の"Source RPM (.nosrc.rpm) (473K)" です。同じRedHat とはいえ、バージョンが違うので、ドキドキですが、ダメならば完全にソースからインストールするまでです。出来る限りのことはやってみましょう。

さて、落としてきたファイルを


# rpm -ivh vnc-4.0-1.nosrc.rpm

でインストールすると"/usr/src/redhat/SPECS/vnc.spec" と"/usr/src/redhat/SOURCES/vnc-4.0-unixsrc.tar.gz" が展開されます。後は"/usr/src/redhat/SPECS/vnc.spec" をなんとか弄り回してパッケージ作成まで粘ってみます。

より安全なファイル転送の方法を模索

"SFTP" というのを使うと、アカウント名やパスワードだけでなく、ファイル転送部分も暗号化されるみたい。FileZilla やWinSCP でその機能が使えそうです。しかし、これらのソフトではEUC エンコードを考慮しておらず、結果として(EUC な)日本語でファイルに名前をつけているとファイル名が文字化け状態になります。

FileZilla の場合、本家SourceForge の要望に「SourceForge.net: Detail:844267 - Client:Support for filenames encoded in EUC」 としてポストされているものの、結果として放置状態になっているようです。また、ある時期に「FileZilla Kanji code convert version」 という、EUC-ShiftJIS 変換を行うパッチを公開されていた方がいたようなのですが現在そのサイトへはアクセスできず、行方不明状態。

というわけで、クライアント側ではなんともできそうにないので、「sftp-server SJISパッチ」 とか入れてみると幸せになれるのかも、と考え中。というか現状これしか解決法が見つからないっぽい。みんなどうしてるんだろう?

他には、SSH でポートフォワードを設定、FTP 用のトンネルを掘る、という方法がありそうですが、PuTTY+FFFTP でテストした限りでは、ログインは出来たものの、その後のディレクトリリスト取得の応答部分でタイムアウトになってしまいます。うまくポートフォワードが出来ていないっぽい。そもそもこの方法だと単にパスワードが暗号化されるだけでデータ通信は普通のFTP と同じくそのまま通してしまうので、微妙ではあるのですが。

PuTTY の代わりにPortForwarder も使ってみたところ、FFFTP で転送以前に、サーバへの接続の時点でどうもうまくいかず。もうサーバ側でパッチあてるしかないかな。いやもちろん日本語名なファイルを作らない、とかも検討の余地ありですね。

※気休め程度ですが、いくばくかのセキュリティを確保するために、あえてぼかしたりして書いたりしてます。

SSH はじめました

上記サイト等を参考にして、外部からSSH を使用してリモートログインが出来るように設定してみました。SSH2 が使いたかったので、TeraTerm+TTSSH はあきらめて、PuTTY+日本語パッチ版を使うことにしました。オリジナルのソースに手を加えた「TeraTerm 3.1.3」 だとSSH2 が使えるとの記述があるようですが、手元でテストした限りではうまくいきませんでした(多分設定の煮詰め不足)。今回の件には関係ないものの、使うこともあるかもなのでリンク。「UTF-8対応TeraTerm Pro」。

他にSSH2 で使えそうなクライアントでは、「Terminal Emulator VaraTerm」 高機能っぽい分シェアウェアとなっているので、とりあえずリンクのみで。

PuTTY は設定関係をレジストリに持っているようで、USB メモリに一式入れて持ち運びを前提とすると、この方式はちとイヤです。「PuTTY を INIファイル対応にするパッチ」 を使うとini ファイルに設定を保存してくれるようになるようです。しかし、サイトで公開されているパッチあて済みのバイナリは少しバージョンが古いみたいなので、自分でパッチをあててコンパイルする必要があります。また、INI ファイルに設定内容が保存されることについてのセキュリティリスクとかも考えないといけないかも。でもこれは欲しい機能なのでVC 入れるかな…。

とにもかくにも、SSH は通るようになったので、ここをトンネルさせてFTP とかもできるとかなり嬉しいです。まだまだ試行錯誤中なのでいったんこの辺で切ります。

Linux メモいくつか

convertlog バージョン上がりました

Google とかの検索文字列がWebalizer で文字化けするの対策 で書いて以降、ありがたく使わせて頂いているconvertlog、大変助かっています。しかし最近、1日1回くらいの頻度で変換処理が途中で止まってしまっていることに気づきました。

access_log とjaccess_log を付き合わせて検討してみたところ、どうやらGoogle とかからのリファラに含まれる検索文字列が原因ということが分かってきました。そのたびに該当ログを洗い出し、一瞬Apache を止めて該当ログを削除し、再び起動する、というようなことを繰り返してしのいでいましたが、何個かログがたまってきたので、作者の方に連絡を取ってみたところ、快くスクリプトを修正して頂けました。お忙しい中、誠にありがとうございます。

05/25 の深夜よりも前にダウンロードした方はもう一度ダウンロードし直すと吉です。

php を利用する

といってもとりあえずMovableType のテンプレート内でinclude が使いたいだけなんですが。

このサイトではファイルに拡張子を付けない設定にしているため、


AddType application/x-httpd-php .php

とかしただけではphp が有効にならないのです。そこで色々検索してみつけたのが以下の書き方。


ForceType application/x-httpd-php

何も考えずにその辺に書いてしまうととっても危険なので、Directory ディレクティブとか Files ディレクティブの中で使うようにした方がよさげ。むしろ絶対そうするべき。

で、「拡張子のないファイルを正規表現でどう表記するか」というところで躓いて今日は終わり。GIF とかPNG とかCSS とかを正規表現でマッチさせることは出来るので、ひたすら拡張子を列記して、それを否定する、でも良いのだけど。正規表現難しい。なんか本でも買うかな。オライリーのとか。

RHL9 のパッケージアップグレード先を"Fedora Legacy" に変更(準備)

RHL9 からの移行先選定 で、移行しましょう、とか言ってましたが、結局日々のあれこれにかまけて移行先を選定する時間が作れないままにRHL9 のパッケージサポートが終了してしまいました。

とはいえ、まったく何も用意をしていなかったわけではなくて、RedHat の公式サポートが終了した後、"The Fedora Legacy Project" にパッケージアップグレードは引き継がれる、ということが分かったので、それを使わせて頂こう、と。

既にApache とかPHP はソースインストールに切り替えてしまっているものの、rpm パッケージによる簡単インストールが使えるならば使うに超したことはありません。RedHat オフィシャル以外にも、rpm をパッケージして配布しているところはありますが、オフィシャル(に近い)ものがあればやっぱりそれを使いたいです。

The Fedora Legacy Project」 の「Download」、「Documentation」、を参考にしつつ、まずはそこから辿れる「Fedora Wiki - Legacy RPMUpgrade」 の手順でこれまで長らくお世話になった"up2date" をストップ。これで青いアイコンともお別れです。次にrpm そのもののバージョンが少し古かったようなので、アップグレード。

最終的にはどちらか一つに絞ることになるだろうけど、"up2date" に変わるアップデートツールとして、"apt" と"yum" をインストール。この辺りのやり方は「Linux Magazine June 2004」 の特集記事「最新アップデートツール事情」 が参考になりました。が、この記事は主にFedora Core を対象としていて、RHL9 とか向けの記事は少なめだったので少し拍子抜けでした。記述例もそのままでは流用できなかったので、色々試して、以下のような感じに落ち着きました。例によってあくまで参考としてご参照下さい。

Webalizer をソースからインストール

Apache 入れ替えました のつづき。

webalizerの設定 (Web Log アナライザ)」 のインストール方法を読み進めつつ、コンパイル+インストール、とはいかず。なにやら"GD" が見つからないとかなんとか。

仕方ないので、GD のソースを落としてきて、コンパイル+インストール。またもや失敗。泥沼につかりつつ、よーく考えてみた。Webalizer がグラフを描くにはGD が必須で、rpm のWebalizer を使っていたときは問題なくグラフが描かれていた、ということは…入ってるんじゃん、GD(何故か東京弁)。いやー、rpm で入ってたわけですねえ。そりゃそうか。ただ、"gd-devel" とか、"libpng-devel" とか、ソースからのコンパイルに必要なrpm ファイルが足りなかったのが敗因だったようです。というわけでそれらをRedHat から頂いてきてインストール。

というわけで、微妙にファイルパスが変わったりもしましたが、それにあわせて"webalizer.conf" も書き換えて、問題なく再インストールとテスト完了。よかった、よかった。

W32/Gaobot.worm.gen とやらのアクセスログの対処

昨晩Apache を復帰させたところ、"SEARCH /\x90\x02..." から始まる、見慣れぬアクセスログが。例によってGoogle で調べたところ、W32/Gaobot.worm.gen (NAI) という、古いウィルスでした、と思ったら、最近発生した亜種は厄介なことに "MS04-011" の脆弱性を利用するらしいです(W32/Gaobot.worm.ali)。

というわけで、「マンボウの雑文置き場: 撃滅!SEARCH /\x90\x02\xb1ほにゃらら」 を参考にしつつ、前に「Apache のアクセスログをちょっといじる」 で設定したように、こいつもworm_log に記録させるようにしましょう、と思ったら何故だか設定が上手くいかず、スルーされます。

で、更に色々調べてみました。

Apache 入れ替えました

かねてよりの懸案でありました、Apache の入れ替えを行いました。そのため、2004/05/09 21:30 から2004/05/10 01:30 過ぎまでalectrope.jp が落ちていました。現在は復帰している(はず)です。

httpd.conf の設定にかなり手間取り、かなり手間取っていたのですが、いつのまにかちゃんと動くようになってました。なんでだろう。

とりあえず今インストールした/しつつあるものは以下の通り

httpd-2.0.49
php-4.3.6
webalizer-2.01-10
freetype-2.1.8
libpng-1.2.5
gd-2.0.23

眠い。もう寝よう。

logrotate 周りのあれこれ

Apache とかのログはweekly でlogrotate させてまして、古いのは"access_log.1" "access_log.2" ... とかいうファイル名で4週間分、自動的に保存されているのですが、当然4週間よりも古いログは消えてしまうわけで、なんとかしたいなー、と。

というわけで今回は、logrotateの設定 (Kamo Land ~自宅サーバとゲームで遊ぶ~) の"mylogrotate" を頂いてきたのですが、これをこのまま"/etc/logrotate.d/" 以下に置いて以降、何故かlogrotate してくれなくなったりしまして、のろのろと原因を究明。

Google とかの検索文字列がWebalizer で文字化けするの対策

Google で何かを検索し、検索結果からそのページへ飛んだとき、Apache のログには検索文字列を含むreferrer が残ります。Webalizer はこのreferrer を解析してくれるのですが、そのままだと日本語が文字化けしてしまいます。

アクセスログ解析ソフトwebalizer日本語化(ahref.org) から"convertlog.pl" を頂いてきてある程度は効果があったのですが、先のGoogle 文字コード変更などの事もあり、UTF-8 も対応できた方が…と考えていました。

次に試したのがconvertlog(なんにもないおへや - katsuwo's WebPage)。Ruby が必要とのことで、この際なので1.8.1 をコンパイルしてインストール。気になる検索結果も、文字化けは殆ど解決。これはイイ感じです。

ただ、現在問題が一つあって、直接実行すると問題ないのに、cron 経由で実行させると何故か"jaccess_log" が"0バイト" になってしまいます。なんでだろう。時間が時間なので、今日はここまでかな。

IP アドレスが更新されたときだけDDNS の更新をする

ウチが使わせて頂いているDynamic DO!.jp は、更新作業がWeb ブラウザだけでできるため、例えばLinux サーバ上でwget をcron で定期的に動作させておけば、IP アドレスが変わってしまってもその情報を更新させることが可能です。

ただそのまま仕込むのも芸がないし、DDNS サーバ側に負荷をかけることになるナー、と思っていたところ、「240ねっと!」の「Linuxサーバの構築」でいい感じのスクリプトがあったのでありがたく頂いてきました。

30分ごとに自分自身のグローバルIP アドレスを確認し、更新されてたらDDNS の登録を更新する、というものです。更新されたらその結果をログに残してくれるので、後から確認もできてベンリです。先週辺りからテスト運用してたのですが、既に1回、無事に更新されたようだし、このまま使っていけそうです。

オライリー Apache クックブック

O'Reilly Japan -- Catalog -- Apacheクックブック

オライリーのメールニュースで発売を知り、そそくさと買ってきました。まさに今の私に必要っぽい内容。Linux/Windows だけでなく、Apache 1.3/2.0 両対応というのもこれ一冊でOK! 感があってよいです。目次とかは上記サイトから辿れるのでそのへん参照で。もっと詳しい内容はこれから順次読んでいきます。

ああ、はよApache いれかえてPHP いれなくちゃ…。

bookmark x の導入覚え書き(途中)

linuxwiki@ぱ研 - bookmark x

昨日はかなり煮詰まって変なテンションだったかも。1日たってアルコールも補給したので、現時点までのメモを冷静に残しておきたい。とはいえ、まだちゃんと動かせているわけではないので、間違いが混入してる可能性があります。

ちなみにこれ書いてる時点でのウチの環境はRHL9 +Apache2.0.40-21.9(rpm) +PHP4.3.4 +PostgreSQL7.3.4-3(rpm)です。PHP はもともとphp-4.2.2-17.2 (rpm) が入っていました。PHP4.3.4 でApache のDSO を入れるのにはApache2.0.44 以降が必要というエラーが出たので、PHP のインストールは現在不完全です。Apache もソースからインストールさせないとイケナイ模様。ま、それはさておき。

オンラインブックマークが必要なんです!!

ながらくSleipnir というタブブラウザを使っているのですが、こいつのブックマークがとうとう300KB 近くにまでふくれあがってしまいました…。

初めて触ったブラウザがNetscape だったこともあって、頑なにNetscape Communicator 4.x を使い続け、次第に時代に取り残され始め、やむなくIE も併用するようになり、ネットスケープのブックマークとIE のお気に入りの同期が最優先課題となったので、FaEdit を導入し同期は出来たモノのなんだかややこしくなり、そうしたところに現れたのがSleipnir だったわけです。独自形式のブックマークも高ポイントでした。

しかしそのころ既に膨大になっていたブックマークの整理は困難を極め、そうこうするうちにメンテがおろそかになり、おそらく相当数のデッドリンクを内包したブックマークとなってしまっているはずです。普段使うのはそんなに無いはずなのですけど、昔のといえども、なかなか消せないものですねえ。

また最近は、メールをその日毎のブックマーク代わりに使うようになり、微妙に重宝しているようでさらにややこしくさせているような、そんな気がする今日この頃です。というかこのままじゃダメです。

というわけでブックマークをオンライン化できないものかと、検討してたりします。

hddtemp でHDD の温度を取得する

hddtemp.linux@coredump

Linux サーバステータス可視化計画(今適当に命名)は遅々として進んでいません。ええ。そういえばHDD の温度って見られたっけ? と調べて辿り着いたのが上記のhddtemp(これを書いている時点ではphp エラーでページ見られず)。

解説は、ITmedia の「エンタープライズ: Linux Tips - ディスクのS.M.A.R.T.情報が知りたい」と、「けんども日記: Linux で HDD の温度を知るには」を参考にしました。

ITmedia の記事でのとはちょっとバージョンが違うようで、「けんども日記」 の方で書いてあるやりかたそのままなぞって、あっさりインストール完了。db ファイルを落としてきて


# /usr/local/sbin/hddtemp /dev/hda

で無事表示できました。

(2005/01/20 14:52 追記)
Web サイト移転してました。

  • guzu.net
    http://www.guzu.net/linux/hddtemp.php

ウチでインストールしたのは"hddtemp-0.3-beta11.tar.gz" ですが、現在は微妙にバージョンが上がった"hddtemp-0.3-beta12.tar.bz2" がリリースになっています。


(2005/06/25 16:06 追記)
HDD を新しいものに取り替えた後、hddtemp を実行すると以下のようなエラーが出ることがあります。



# /usr/local/sbin/hddtemp /dev/hda
WARNING: Drive /dev/hda doesn't appear in the database of supported drives
WARNING: But using a common value, it reports something.
WARNING: Note that the temperature shown could be wrong.
WARNING: See --help, --debug and --drivebase options.
WARNING: And don't forget you can add your drive to hddtemp.db

一応、温度取得は出来るようなのですが、このままではRRDTool 等で温度取得がうまくいかないようです。新しいHDD の場合、"hddtemp.db" にまだそのHDD の記述がないためにこのような現象が起きるようなので、必要に応じてこのファイルを更新しましょう。取得先は上記のguru.net から。ウチの場合、"/usr/share/misc/hddtemp.db" に保存しています。今回はこれで改善したのでここで終了。

もし更新しても状況が改善されない場合、がんばって自分で記述を追加するしかないかも。

RHL9 からの移行先選定

今このサーバで使用しているRed Hat Linux 9 は、2004/04/30 でパッケージの更新が終了するので、5月以降、お金を払ってサポートを継続するようにするか、自分でコンパイルなどしてメンテし続けるか、それとも別のLinux ディストリビューションに移行するか、の選択を迫られています。

個人レベルでやってるサーバで有償サポートなんてありえないし、Red Hat Professional Workstation 買ってもなあ…という感じですし、今後全部自分でコンパイルして…とか考えると別のディストリビューションに移行してみるのもよいかと思いました。(2004/03/22 14:40 追記)

これまでと変わらぬ操作感でいきたいならば、Red Hat の支援を受けて作られているFedora が多分一番なのでしょうけど、こいつは人柱仕様というか、数ヶ月で新しいバージョンが出てくるコトになっているのでサーバ用途には不向きかも知れない。あと、文字コードがEUC じゃなくてUTF 、ってのがちょっと不安要素。

今のところ一番の候補がVine Linux。Red Hat Linux 5.2 あたりがベースでそこからアップデートを重ね、日本語環境で快適に使えることを念頭に置いてるので、一番めんどうがなさそう。あとは、Debian もちょっと気になる。けどなんにせよ、とりあえず使ってみないことにはなんとも言えない。

snmp とMRTG

ウィルスの件では大変お騒がせしました。

送信元は意外と近くにおりまして、案の定「添付ファイルを実行した」らしいですよまったく。シマンテックの駆除ツールのURL を教えて駆除実行後、マカフィー ウィルススキャンエンタープライズの試用版でディスクのフルチェックをして貰って、「そう高いものではないから今後このようなことが起こらないようにウィルス対策ソフトを買ってくれ」と指示して状況終了。

というわけで、まずは基本とばかりにMRTG…で使うためにsnmp などをインストールしてみたり。snmp のパッケージはRedHat から"net-snmp-5.0.9-2.90.1" 一式を取得。インストールと初期設定らしきものは終えたのですが、それから先が…ね。やばい、設定方法が全然分からない…。落ち着け、落ち着くんだ、とかやってるうちに今日は時間切れですな。また明日。

ま、ロクにドキュメント読んでないから当然の結果ではあります。がく。

/etc/sensors.conf(lm_sensors の設定)

lm_sensors のインストール の続き。

やる気があって忘れないうちにやってしまおう、ということで"/etc/sensors.conf" をいじってみることにします。

と、ここで大ハマリ。なにをどう設定すればいいのやらサッパリ。電圧や温度等を取得しているチップの種類はマザーボード毎に異なるので、自分の使っているマザーボードのチップ種別を正しく把握してその箇所に設定を書かねばいけません。

ウチのLinux マシンのマザーボードはASUS のTUSL2-C。これにTualatin コアのCeleron 1.4GHz が乗っています。"/etc/sysconfig/lm_sensors" には"i2c-i801" と"w83781d" と記述があるので、この辺りが怪しいとにらんで色々設定してみるも、上手くいかず。

lm_sensors のインストール

Linux マシンは常時稼働していますので、温度監視などできるようにしておいた方が良いです。といいつつずっとほったらかしていたのですが、夏が来るまでには…、といわず、思いついたときにやってみましょう。

Linux だとlm_sensors というのを使うのが一般的なようです。ページをたどればrpm ファイルも見つかりますが種類が多すぎてよく分からなかったのと、RedHat 公式のrpm ファイルはバージョンが古いので、大人しくソースからコンパイルすることにします。

ダウンロードページから"i2c-2.8.4.tar.gz" と"lm_sensors-2.8.5.tar.gz" をダウンロード。以下、「稼動状況をモニタする MB温度からCPU使用率まで1」を元に作業を進めています。

といきなり、"i2c" のmake でエラー発生。エラー画面に表示された、RedHat とFedora ユーザ向けの情報を元に"/usr/src/linux-2.4.20-30.9/configs/kernel-2.4.20-i686.config" を"/usr/src/linux-2.4.20-30.9/.config" としてコピー、これで無事make が通りました。

あとは解説通りに全てデフォルトの設定で進めていって、"/usr/local/bin/sensors" で無事表示されることを確認。…なんかCPU とM/B の温度が逆のような気がするので、後で"/etc/sensors.conf" をいじってみることにします。

Apache のアクセスログをちょっといじる

Apache の生ログを見てると、いまだに"default.ida?XXXXXXXXXXX.......(以下略)"なんていう、おいおいいったいいつのCodeRed デスカ? と問いつめたくなるようなアクセスも結構あったりで、こういうホストに限ってLookup できない。常時起動しているサーバではないのかもしれない。

こんなののログをとってても仕方ないので、なんか良い方法ないかなー、と探していたら見つかったのが「Linux で自宅サーバ [ Home Server Technical. ]」の「Apache のカスタムログ設定」での設定。なるほど、ワームからのアクセスは別のファイルに記録する、というのがよさそうです。ついでに、プライベートアドレスからのアクセスも記録しないようにしてしまいます。

mt.cfg へのアクセスを制限する

httpd.conf を触ってて思い出した。初期状態だとmt.cfg が参照出来てしまうので、その対策。

といっても「はかいおうこうむてん: mt.cfgが丸見えでした」 の丸写し。ありがとう!!

ウチは一人サーバなので未設定ですが、レンタルサーバの場合、"httpd.conf" をいじるなんてことはできないので、ルートディレクトリあたりに ".httaccess"を置いてその中に同じように設定するとよいと思います。

Apache で簡単なアクセス制限

Apache でのアクセス制限というとまず思いつくのがID、パスワードを入力して、認証するというタイプ。でもこれだとパスワードがネットを平文で流れちゃうなあ、でもSSL とか設定するの面倒(いずれやりたいけど今はまだその時ではない)だしなあ、ダイジェスト認証? なにそれ? とか思ったりして。

しかし、よくよく考えてみれば自宅で自分だけが入れれば良いんじゃないか、と思い至ったので、クライアントのIP アドレスで制限をかけるだけという、とっても簡単な方法で今回はお茶を濁すことにしました。おかげで設定もシンプルです。

Webalizer

alectrope.jp ではRedHatLinux9(RHL9) を使用しています。何も考えずにインストールするとWebalizer というアクセス解析ツールがインストールされ、自動でApache のアクセスログを解析、グラフ入りのカラフルな解析結果を"/var/www/html/usage/" 以下に自動的に出力してくれます。

とまあベンリなのですが、そのままだと自分自身のアクセスとか、伏せておきたいファイルへのアクセスの痕跡とかが丸見えなので、なんとかしなければなりません。

Index of all entries

Home > Linux

Return to page top