S.C. MAGI-SYSTEM 日記
Diary
2009年になって、実に3年ぶりに更新再開。

hns - 日記自動生成システム - Version 2.19.9

2004年03月21日() [n年日記]

[天気:晴れ](家) 起床:10:30 就寝:24:00

#1 [Web] Openbot form TW

総統選挙で沸き立つどこかの国から DoS 攻撃を受けました。
受けたのは今日の 14:09:24 から 16:29:05 までの 140分間。
実に総計 785 リクエストです。単純に考えて10秒に1回のペース。
しかし、実際には等間隔で定期的に来るのではなくて、 あるタイミングで 100 近いリクエストを同時に、 しかも全て日記のある CGI に対して *1 投げてくる 激烈凶悪 な bot です。
この時のすさまじさは MRTG を見てもらうと分かるかもしれません。
ピーク時には load average が 30 を越え、sendmail がリクエストを拒否。 また squid は swap が足りなくなって core を吐く…と散々でした。
でもこれでサーバが止まることにならなかっただけ助かりましたね。
早速昨日のApacheモジュールダイエットが効いたのでしょうか?(笑)
ログにはこんな感じに残っています。
202.1.239.117 - - [21/Mar/2004:14:09:24 +0900] "GET /robots.txt HTTP/1.0" 200 43
"-" "Openbot/3.0+(robot-response@openfind.com.tw;+http://www.openfind.com.tw/robot.html)"
あまりに腹が立つので IP を晒します。
ところでこの IP アドレス、どこが保有しているのか whoisで調べてみましたが…
inetnum:      202.1.232.0 - 202.1.239.255
netname:      YAHOO-ASIA
descr:        streaming media, e-mail, instant messenger, www,  etc
country:      HK
とあるので、どうやら Yahoo! 香港の検索 bot らしい。
bot 自体は TW 製なんだけど、運用しているのは HK なのか。
ちなみに本家の方の Openbot は 66.237.60.96 (robot66.openfind.com) のように .openfind.com で逆引きされるので、ホスト名ベースで拒否すれば大丈夫。
いくらリンクを順にたどる bot だからって、CGIに対してのリクエストか そうでないかくらいは識別できるだろうに。
まあ、あっちの国の人に日本の「察する」なんて文化が理解できる はずがないので、アドレスブロックごと ipf でパケットを落とす。

…はぁ。
*1: 一度に30以上も perl が同時に起動する…悪夢を想像してみて下さい。

#2 [*BSD] sieve

Cyrus IMAP Server に付属してくる sieve を試してみました。
この sieve というのは imapd が lmtpd 経由でメールを受け取って、 ユーザのメールボックスに配信する際に仕分けやフィルタリングをすることのできるものです。
国内で紹介されているサイトは非常に少なく、調べた限りでは ここ[nekojita.org]ここ[dendai.ac.jp] くらいでしょうか。
書き方が結構特殊で、perlもどきみたいな感じです。

実際の設定の仕方ですが Cyrusのドキュメント が参考になります。
まず cyrus.confで sieve を有効にする必要があります。
(snip)
# UNIX sockets start with a slash and are put into /var/imap/socket
SERVICES {
  # add or remove based on preferences
  imap		cmd="imapd" listen="imap" prefork=0
  imaps		cmd="imapd -s" listen="imaps" prefork=0
  pop3		cmd="pop3d" listen="pop3" prefork=0
  pop3s		cmd="pop3d -s" listen="pop3s" prefork=0
  sieve		cmd="timsieved" listen="sieve" prefork=0	# これです
(snip)
ところで、この設定では cyrus の master daemon が "sieve" という名前の port で sieve のサービスを listen していることになっていますが、 実は /etc/servicesには "sieve" という名前のサービスは 存在しません 。(笑)
Cyrus のドキュメントによると "sieve" は port 2000 を想定しているそうですが、 FreeBSD の port 2000 は "callbook" となっていました。
まあ /etc/servicesの port 2000 を "sieve" に書き直すのもいいのですが、OSのファイルをあまり いじりたくないので、上記の cyrus.confの listen=" sieve " を listen=" callbook " に書き換え。
ここで
melchior% telnet localhost 2000
Trying ::1...
Connected to localhost.
Escape character is '^]'.
"IMPLEMENTATION" "Cyrus timsieved v2.2.3"
"SASL" "NTLM LOGIN PLAIN OTP DIGEST-MD5 CRAM-MD5"
"SIEVE" "fileinto reject envelope vacation imapflags notify subaddress relational regex"
OK
logout
OK "Logout Complete"
Connection closed by foreign host.
となれば大丈夫。
続いて sieve のスクリプトを書く。
今回はうちの CTM 用のアカウントで例を示します。
require ["fileinto", "regex", "reject"];

if allof (
	header :contains "to" [
		"ctm-cvs-cur@freebsd.org",
		"openbsd-cvs@openbsd.org",
		"openbsd-cvs-x11@openbsd.org",
		"openbsd-cvs-xf4@openbsd.org"
	],
	header :regex "Subject" "^ctm-mail"
) {
	keep;	# CTMのメールは保持
} elsif anyof (
	header :contains ["to","cc"] [
		"ctm-announce@freebsd.org",
		"ctm-users@freebsd.org",
		"mailman-owner@freebsd.org"
	]
) {
	redirect "xxx@yyy.zzz";	# CTM以外のメールで、ML経由のものは
				# 管理者アカウントへリダイレクト
} else {
	reject;	# それ以外は SPAM なので、リジェクト
}
この内容を sieve.scriptに書くとします。
そうしたら
melchior% sieveshell localhost
Please enter your password: ******
> put sieve.script
(文法エラーがある場合はここでエラーが出ますので修正)
> list
sieve
> activate sieve
> list
sieve  <- active script
> quit
これで完了です。
ちなみに sieve を無効にしたい場合は "deactivate" とします。

今回は CTM 用のアカウントでの SPAM 避け (というかCTM以外を無視する) の設定でしたが、 メーリングリストなどに複数入っていたりする場合、
if header :contains "List-Id" "DarwinPorts development" {
	fileinto "INBOX.ml.darwinports";	# ml/darwiportsボックスに移動
}
みたいな感じに仕分けできます。
また、ヘッダや Subject 、宛先に応じて
if header :is "X-MAGI-NOTICE" "IP change" {
	redirect "xxx@keitai.zzz";	# まず携帯のメアドに転送
	keep;				# 一応、ここにも残しておく
}
みたいに IP アドレスが変わったら携帯に通知する…なんてこともできます。(笑)

sieve はサーバ側で設定してしまえばクライアントを選ばないし、 ただの仕分けやフィルタリングだけでなく、状況に応じた転送ができるので 覚えるといろいろと便利かもしれませんね。

#3 [Home] 7days

実際には 7 どころかあと 5日 なんですけど…
ちょっと今週末は現実逃避しすぎました。(笑)
明日から国試が終わるまではネットワークから自分を切り離すことにします。
なので日記も更新しませんので、どうぞよろしく。

2004年03月22日(月) [n年日記]

[天気:雨](家) 起床:8:30 就寝:25:00

#1 [Home] 王の帰還

別にロード・オブ・ザ・リングを観てきたとかそういう訳ではありません。

2004/3/30に両親が帰国します
一時帰国とかではなく 本帰国 です。ドイツから完全に撤収するとのこと。
って、あなた国試の翌々日で薬学会の真っ最中ですよ?

別に片付けなきゃいけないこととか、そういうものはないんですが、 帰国後にサーバを移動させられる可能性はあります。
通信環境とか電源とか、心配することは山積みです。

考えてみれば受験生だった1998年からほぼ6年近くにわたったひとり暮しも、 これで幕を閉じることになります。
今さらねぇ…

2004年03月28日() [n年日記]

[天気:晴れ](家) 起床:3:00 就寝:20:00

#1 [Home][Univ] こくし

ようやく終わりました。
昨日、今日と長い一日だった。
何よりも試験会場の東京農業大 *1 が遠かった…

あとは結果を待つのみ。
*1: 最寄り駅経堂からでも徒歩30分。

#2 [Univ] がっかい

明日は大阪の薬学会でポスター発表します。
さすがに今日出発は無理なので、明日の早朝の新幹線で移動します。
…明日も3時起きかぁ。

おやすみなさい…

2004年03月29日(月) [n年日記]

[天気:晴れ](大阪ATC) 起床:0:00 就寝:20:30

#1 [Univ] 第124年会 日本薬学会

試験の翌日に学会でポスター発表と、いくら マゾ だからって今回の予定はちょっとやりすぎたと思う。
金曜日の夜から土曜日(試験1日目)にかけては完徹だった上に 日曜日は3時起き。
そして今日は3時どころか日付けが変わると同時に起きました。(ぉ
出掛ける仕度をしていますが、あまりに疲れていると予想されるので 学会の発表のある1日目だけ参加して、 日帰り にしてしまおうかと考えています。

でも、何か間違いがあったときに備えて一応泊まれる準備 *1 はするか。

そういえば薬学会の資料を見てて思ったのですが、何と私の手元に薬学会の 要旨集がありません 。(笑)
なんで届かなかったのかと探してみたら… 2/6締め切りの振り込み用紙があったー
…しまった…
これじゃ、何が発表されるのか分からないよ。
現地で貰えるのかどうか尋いてみるか。
*1: ただ発表者ということでスーツで行くのですが、私服を用意するかどうかは悩みどころ。

#2 [*BSD] New Mailing List Driver

うちのサーバで管理しているメーリングリストは閑古鳥が鳴いている状況なので おそらく気付いた人はいないと思いますが、秘かにメーリングリスト配信プログラム *2 を書き換えました。
入れ換えたのではなく、 書き 換えです。
今までの function/procedure ベースで書かれた Perl のコードを全面的に Object Oriented Style に書き直しました。
実際のコードは CVS に上がっていたりします。
今回全面的に直した HMail.pm は私の中では屈指の出来だと思っています。
興味があったら見てみて下さい。
ちなみに Perl で OOP するにあたっては こちら を参考にさせていただきました。
近いうちに amazon で本でも買ってしまうかも。
試験も終わったし、好きなだけコードが書けるしねっ!
*2: ML driver と言う

#3 [Home] 帰宅

結局、発表だけして帰ってきました。
帰りの新幹線の中では爆睡。
帰宅してもすぐに爆睡。
はやり疲労には勝てませんでした、とほほ。

2004年03月30日(火) [n年日記]

[天気:曇りのち雨](家) 起床:12:00 就寝:27:00

#1 [MacOSX] Camino Nightly Build

気紛れな Camino Nightly Build 。
今日は Mozilla 1.6 版の方です。
Camino の UI 周り(特にアイコン)に修正が入ったので、 それを反映させました。 [Camino-20040330.dmg.gz]

#2 [Home] 当社比3倍

人口密度が実に 3倍 になりました。(笑)
現在、洋間は親のスーツケースによって占領されております。
ちなみに引っ越し荷物が届くまでは父親に至っては掛け布団もないありさま。
洗面所や風呂場も取り合いになって大変です。
いやー、10年前は普通にこうやって生活できていたはずだったんですけどね。
何事も慣れるまでは大変ってことです。

#3 [*BSD] Sendmail with SASL and TLS

sendmail で SASL と TLS を有効にしてみました。
SASL の方は SMTP AUTH といって smtp でメールを送信する際に 認証を行うことでリレーを許可する仕組みで、 TLS (STARTTLS) は smtp の通信そのものを SSL の上で暗号化して 行えるようにしたものです。
どちらも最近の sendmail では普通にサポートしているようですが、 私は諸事情 *1 あって 8.11.x 系を使っているのでちょっとカスタマイズした port を使って入れました。
melchior% /usr/sbin/sendmail -bv -d0.1
Version 8.11.7+3.4W
 Compiled with: MAP_REGEX LOG MATCHGECOS MIME7TO8 MIME8TO7 NAMED_BIND
                NETINET NETINET6 NETUNIX NEWDB NIS QUEUE SASL SCANF SMTP
                STARTTLS TCPWRAPPERS USERDB XDEBUG QUICK_RESPONSE MULTI_MAILER
                DYNAMIC_TOBUF MAILER_PREF CLIENT_SMTP_CONFIG CTE8CHECK
                OO_NULLSENDER CF_ALIASING MF_SEPARATE MASKED_ADDR SPR_CON_CACHE
                FORWARDPROGCTL MAILER_TIMEOUTS CHECK_WARNING
んで実際に有効にする方法ですが、 sendmail.mc に次のものを加えます。
dnl SASL SMTP-AUTH setups
define(`confDONT_BLAME_SENDMAIL', `GroupReadableSASLFile')
define(`confRUN_AS_USER', `root:mail')
define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5')
TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5')

dnl STARTTLS setups
define(`confCACERT_PATH', `MAIL_SETTINGS_DIR`'certs')
define(`confCACERT', `confCACERT_PATH/cacert.pem')
define(`confSERVER_CERT', `confCACERT_PATH/tls.crt')
define(`confSERVER_KEY', `confCACERT_PATH/tls.key')
define(`confCLIENT_CERT', `confCACERT_PATH/tls.crt')
define(`confCLIENT_KEY', `confCACERT_PATH/tls.key')
前半が SMTP AUTH の設定。
TRUST_AUTH_MECH の部分で DIGEST-MD5 と CRAM-MD5 に成功した場合、 リレーを許可するようにしています。
メールクライアント *2 によっては LOGIN しか使えない場合もありますが、MacOS X の Mail.app は問題ないので、このままにしてあります。
続いて後半の STARTTLS の設定ですが、こちらはちょっと厄介で openssl で 認証証明書 (Certificate) を作る必要があります。 もちろん自己署名です。(笑)
まずは /etc/ssl に /usr/local/openssl/misc/CA.sh をコピー。
その CA.sh で
CATOP=./CA
と書き換えます。また、sendmail 起動のたびにパスワードを尋かれないように
-newreq) 
    # create a certificate request
    $REQ -new -nodes -keyout newreq.pem -out newreq.pem $DAYS
と -nodes を加えておきます。
そして
melchior# ./CA.sh -newcert	(新規認証局 Certificate Authority の作成)
(snip)
melchior# ./CA.sh -newreq	(新規sendmail用証明書 Certificate の作成)
(snip)
melchior# ./CA.sh -signreq	(sendmail用証明書を認証局が署名する)
(snip)
melchior# ls
CA newreq.pem  newreq.key  newcert.pem
ここで newcert.pem が 署名済み 証明書です。これを tls.crt として /etc/mail/certs にコピーします。
続いて newreq.key がその証明書の秘密鍵なので、これを tls.key にコピー。
melchior# mkdir /etc/mail/certs
melchior# chmod 700 /etc/mail/certs
melchior# cp newcert.pem /etc/mail/certs/tls.crt
melchior# cp newreq.key /etc/mail/certs/tls.key
melchior# chmod 500 /etc/mail/certs/tls.*
これで TLS の準備は完了です。
ローカルからメールを送り
melchior# mail root
Received: from melchior.magisystem.net ([unix socket]) (authenticated user=root@yyy.zzz bits=0)
        by melchior.magisystem.net (Cyrus v2.2.3) with LMTP; Wed, 31 Mar 2004 00:33:30 +0900
Received: (from root@localhost)
        by melchior.magisystem.net (8.11.7+3.4W/8.11.7) id i2UFXUI81211
        for root; Wed, 31 Mar 2004 00:33:30 +0900 (JST)
        (envelope-from root)
となり (authenticated user=root@yyy.zzz) が SSL で認証されたことを示しています。
あと、CA (自分が勝手に作った認証局)の証明書をクライアントに追加しなければなりません。
これは
melchior# cd /etc/ssl/CA
melchior# openssl x509 -in cacert.pem -inform PAM -out cacert.crt -outform DER
この cacert.crt をクライアントに持って行って、追加してあげます。
MacOS X の場合にはちょっとテクニックが必要で、 ここ とか ここ にあるように、持ってきた cacert.crt をクリックしたあとに Keychain Access の X509 Anchors (※注意: X509Anchors ではない! )に追加します。
あとは Mail.app でSMTP AUTH と SSL を有効にしてメールを送りましょう。
Received: from melchior.magisystem.net ([unix socket])
        by melchior.magisystem.net (Cyrus v2.2.3) with LMTP; Tue, 30 Mar 2004 15:49:03 +0900
Received: from [IPv6:2001:380:1c6:1:203:93ff:fee8:a88a]
	(rei.ipv6.magisystem.net [2001:380:1c6:1:203:93ff:fee8:a88a])
        (authenticated as hideishi with CRAM-MD5)
        by melchior.magisystem.net (8.11.7+3.4W/8.11.7) with ESMTP id i2U6n2875753
        (using TLSv1/SSLv3 with cipher RC4-SHA (128 bits) verified NO)
        for <hideishi@yyy.zzz>; Tue, 30 Mar 2004 15:49:03 +0900 (JST)
        (envelope-from hideishi@yyy.zzz)
見ての通り CRAM-MD5 で SMTP AUTH をして、TLS も用いてSSLの上で通信していることが分かります。
ただ verified NO となっているので、クライアント側からは Certificate による認証はできません。

駆け足ですが、だいたいこんな感じです。
TLS はともかく、SMTP AUTH は外から家のメールサーバを利用してメールを送りたいときに有用だと思います。
次は Cyrus IMAPd でも TLS を使えるようにしますか。
*1: submit.cf を使いたくない。
*2: MUA

#4 [Muzik] 火曜日TSUTAYAレンタルの日

松浦亜弥 風信子(ヒヤシンス):

Miz New Day:

New Day
2/14 にポップジャムの公開収録を観に行った時にも出演していて その時からちょっと気になっていたのですが、 ようやく CD を聴く機会を得ました。
女性ヴォーカルによるロックっていうところです。
結構好みかも。
シングル2曲目の What's It To You?! がなかなか出来がいい。
本人の声量もあるし、決して曲に負けてないし、売れて欲しいなぁ。

大塚愛 さくらんぼ:

大塚愛 甘えんぼ:


2004年03月31日(水) [n年日記]

[天気:晴れ](研究室) 起床:8:30 就寝:27:00

#1 [Univ] HDD交換 リターンズ

久し振りに研究室に出勤。

先月、散々苦労した研究室ファイルサーバのHDD交換ですが、 2台目のファイルサーバである yggdrasilのHDDを交換。
さすがに一度やった後なので手際もよくなり、今日は時間内に作業を終えられました。
バックアップサーバからデータを書き戻すように設定してから帰ってきたので、 明日にはレストアは完了していることでしょう。
…何もトラブルがなければね。


最近の日記
2019年06月24日
10年振り
2009年12月31日
定期アップデート
2009年04月03日
定期アップデート
2009年03月22日
定期アップデート
2009年01月26日
pomera
2009年01月23日
今日のBOT
2009年01月22日
BOT
2009年01月20日
Seagate HDD
PowerPCの備忘録
RSS feed
abuse
2009年01月19日
Windows 7 beta
2009年01月16日
perl-after-upgrade
2009年01月14日
アクセスカウンタ
2009年01月13日
ひとまず完了
2009年01月12日
7.1-RELEASE(適用)
2009年01月10日
hns 2.19.9
2009年01月09日
recursion no
以上、6 日分です。
先月 2004年03月 来月
01 02 03 04 05 06
07 08 09 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project