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

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

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

[天気:晴れ](都内某所) 起床:9:00 就寝:27:00

#1 [*BSD][MacOSX] IPsec その参

ちょっと忙しくて 昨日 の続きは書けません。(汗)

ですが、今日はちょっと違った話をします。
FreeBSD にしろ MacOS X にしろ 先日紹介 した racoon を使うのが一番無難です。
というのも racoon は KAME Project により作られた isakmp の実装の1つであり、FreeBSDもMacOS Xも KAME スタックを使っているからです。

ですが setkey + racoon ではやりにくいケースがいくつか想定されます。
それは、IPsecでつなぐホストのIPアドレスが 動的な場合 です。
この racoon はあくまで IKE を交換する鍵交換プログラムであり、その鍵を使って どうやって通信するかという セキュリティポリシー は setkey を使って設定しました。
つまり鍵を交換する部分は別に動的IPでも問題はないのですが、 セキュリティポリシーは 事前に setkey コマンドを使って設定しておく必要があるので、動的IPの場合にはいろいろと小細工をする必要がある *1 のです。

ここで登場するのが OpenBSD により作られた isakmp の実装である isakmpd です。
これは setkey と racoon を合わせたようなデーモンで、鍵の交換だけでなくセキュリティポリシーを 必要に応じて更新する機能を持っています。
なので、IPsec peerからの接続があったらその時にセキュリティポリシーを作成し、IPsecセッションが なくなるとそのポリシーも破棄されるようになっているのです。

isakmpdのインストールは FreeBSD であれば ports が便利です。
MacOS X の場合ですが… 私家版DarwinPorts を作ってしまいました。 これを使って入れると便利です。
また、この私家版には +current variant があり、このvariantでは OpenBSD の -current からソースを持ってくるようになっています。
なので、最新と言えば最新ですが、パッチが当たらない可能性もあります。(ぉ

今回はインストールの話だけで、設定はまた今度。
*1: 例えば最初はIPsecなしで通信をして一度loginし、setkeyでセキュリティポリシーを更新するとか。

#2 [Home] 東京見物

今日、生まれて初めて皇居なるものを自分の目で見てきました。
とか言っても別に中に入った訳じゃなくて、お堀を散歩しただけです。
こんなに近いところに住んでいながら、恥ずかしいことに皇居の周辺へは一度も行ったことがなかったのです。

今日はまず東京で下りて、新しく出来た 丸の内オアゾ にある 丸善 へ。
マスタリングIPsec を購入。(笑)

マスタリングIPsec

続いて、 丸の内シャトル *2 に乗って丸の内から大手門、二重橋を経由して有楽町へ。
有楽町からは銀座まで歩き、まずは アップルストア銀座 へ。(笑)
先日破損してしまった PowerBook の ACアダプタ ですが、やっぱり直らないとのこと。残念。
次に、文具の 伊東屋 銀座本店へ行く。
もともとシステム手帳を買う予定だったのですが、おりしも新社会人向け手帳フェアを開催していて 品揃えが豊富だった。
いろいろ悩んだ末、結構いい値段のものを買ってしまう。長く使おう。
最後に ぎんざ磯むら で串揚げを堪能。

リッチに散財した休日でした。
*2: 大手町、丸の内、有楽町を結ぶ無料巡回バス。

#3 [Web] hns-2.19.5

なんとなく hns-2.19.5 に上げてみたり。

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

2003年03月21日(金) [n年日記]

[天気:晴れ](家) 起床:9:00 就寝:25:00

#1 [Home] からこうしん

特に何もありません。

家で勉強しかしてませんし。
テレビも連日戦争報道しかしていませんし。


最近の日記
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
以上、3 日分です。
先月 2019年08月 来月
1 2 3
4 5 6 7 8 9 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