SPAM対策やらロボット対策やらの関係文書

目次

BASIC認証付きディレクトリのファイルをバイパスして認証なしで読み取らせる方法

佐々木真氏のBlog記事で衝撃を受けた。以下がそれ。

BASIC認証のかかったフォルダ配下のファイルを、BASIC認証を経由していない人に閲覧させる

要するに、以下のように設置すると、htmlからのリンクでは読めないけど、PHP(やPerl CGI)からアクセスさせればバイパスして読み込めちゃうらしい。

root/CanNotReadPDF.html
root/NonPassReadPDF.php
root/BasicAuthenticationDir/.htaccess
root/BasicAuthenticationDir/Secret.pdf

どえええ!!!

InnerHTMLというよりは、エイリアスとか、ファイルへのシンボリック・リンクのような位置づけですね。
技術的には、代替アドレスであるphpが内容を全部吸い取ってから表示するわけだから、「自分のサーバ内に、root以下へアクセス可能な匿名プロクシを置く感じ」とでも言えばいいでしょうか。

これで、wikiシステムで「会員だけ閲覧可のファイル」を、それ専用のフォルダを作って放り込んだ場合を想定してみる。

root/WikiTop.php
root/WikiForMembers.php
root/WikiForVisitors.php
root/LinkForMembers.html
root/BasicAuthenticationDir/.htaccess
root/BasicAuthenticationDir/Secret.pdf

ここで、LinkForMembers.html経由なら、認証がかかるのは確かだろうけど、もし、WikiForVisitors.php内に、当該PDFを(画像を入れるように)ページ内埋め込みした場合、どうなるんだろう?
まさか、「会員以外でも閲覧できるWikiForVisitorsページの、どこか一箇所からでも、そのファイルを埋め込んでいたらアウト。読まれちゃうよ。」ってこと? う~ん…どうなんだろう?

今忙しいから、ちょっと実験してみる気にはなれないけど、phpやPerl cgiからのアクセス制御には、ちょっとクセがあるかもしれない、というのは気にかけておく必要がありますね。

Apache Combined Log Format(拡張共通ログフォーマット)をLTSV形式に変換するvbs

どんどん、ものぐさになってゆく。

Apache Combined Log FormatをLTSV形式に変換するvbs
Ver. 1.0 2014/03/18 初版
Ver 1.1 2014/06/12 見出し行を追加するようにした。

ApacheLog2LTSV-VBS.zipを解凍すると「ApacheLog2LTSV-VBS.vbs」が出てくる。

そのvbsとlog.txt(ファイル名は固定)をデスクトップなどに設置し、ダブルクリックで実行。

入力元のlogファイルはASCIIを前提にしている。改行コードはなんでもよろしい。
出力はShift_JISで、改行コードはCR+LFに統一するようにしてある。

確認されているバグ:稀に正しく字句解析できない場合があるのを発見したが、面倒なので放置。

Apache Combined Log Format(拡張共通ログフォーマット)をLTSV形式に変換する秀丸用マクロ

Apache Combined Log Format(拡張共通ログフォーマット)をLTSV形式に変換する秀丸用マクロ Ver1.1(2014/03/20)

「LTSV形式」って呼び名はカッコイイですね。
でも、要するに、アクセスログをタブ区切りにするだけのことです。
無駄にカッコイイ呼び名だけど、その実態は単なるTSV。
Excelに貼り付けて読んだりするのに使えると思います。

ApacheAccessLog2LTSV-hidemaru.zipを解凍すると「ApacheAccessLog2LTSV-hidemaru.mac」が出てくる。

それを秀丸に登録して使います。

秀丸の制限により、2段階の置換作業を行うので、ちょっと時間とマシンパワーが必要です。
34MBの生ログで12秒くらいでした。
そういうわけで、置換の設定は[その他]→[動作環境]→[検索]にある「置換の動作」の所の「全置換は常に高速で行う」をONにした方が幸せになれると思います。

動作確認

秀丸64ビット版 FloatMacro統合版 Ver8.40Beta9+ 秀丸エディタに同梱されているHMJRE.DLL 2014/03/08 Ver.4.0.8.0
秀丸64ビット版 FloatMacro統合版 Ver8.40Beta9+鬼雲を用いた正規表現DLL hmonig.dll 2013/09/07 Ver.0.7.1.0(β1)

改訂履歴

Ver1.1 2014/03/20
*画面設定を自動で変更する方法が解ったので実装。これで、事前準備が不用になった。
*終了時にメッセージを出すようにした。

Ver1.0 2014/03/13
*初版リリース。
*このバージョンでは、必ず、画面を[表示]→[折り返し]→[最大]に設定してからマクロ実行する必要があった。

インジェクション攻撃

以下、生ログ。26/Feb/2014:10:03:37 +0900の出来事です。

171.215.155.25 - - [26/Feb/2014:10:03:37 +0900] "POST /cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1" 301 1182 "-" "Mozilla/5.0 (compatible; Zollard; Linux)" "-"
171.215.155.25 - - [26/Feb/2014:10:03:38 +0900] "POST /cgi-bin/php5?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1" 301 1183 "-" "Mozilla/5.0 (compatible; Zollard; Linux)" "-"
171.215.155.25 - - [26/Feb/2014:10:03:38 +0900] "POST /cgi-bin/php-cgi?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1" 301 1186 "-" "Mozilla/5.0 (compatible; Zollard; Linux)" "-"
171.215.155.25 - - [26/Feb/2014:10:03:38 +0900] "POST /cgi-bin/php.cgi?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1" 301 1186 "-" "Mozilla/5.0 (compatible; Zollard; Linux)" "-"
171.215.155.25 - - [26/Feb/2014:10:03:39 +0900] "POST /cgi-bin/php4?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1" 301 1183 "-" "Mozilla/5.0 (compatible; Zollard; Linux)" "-"

さて、こりゃ、何しているんでしょうね?

2回、デコードしてみます。インジェクションの分があるので、1回じゃ、本当のコマンドはわからないです。

デコードツールはここに置いてあります。無駄にサンホラ変換機能も付いています。

以下、結果。適宜、改行を入れておきました。

171.215.155.25 - - [26/Feb/2014:10:03:37 +0900] "POST
 /cgi-bin/php?-d+allow_url_include=on+-d+safe_mode=off
+-d+suhosin.simulation=on+-d+disable_functions=""
+-d+open_basedir=none+-d+auto_prepend_file=
php://input+-d+cgi.force_redirect=0
+-d+cgi.redirect_status_env=0+-n
 HTTP/1.1" 301 1182 "-" "Mozilla/5.0 (compatible; Zollard; Linux)" "-"
171.215.155.25 - - [26/Feb/2014:10:03:38 +0900] "POST
 /cgi-bin/php5?-d+allow_url_include=on+-d+safe_mode=off
+-d+suhosin.simulation=on+-d+disable_functions=""
+-d+open_basedir=none+-d+auto_prepend_file=
php://input+-d+cgi.force_redirect=0
+-d+cgi.redirect_status_env=0+-n
 HTTP/1.1" 301 1183 "-" "Mozilla/5.0 (compatible; Zollard; Linux)" "-"
171.215.155.25 - - [26/Feb/2014:10:03:38 +0900] "POST
 /cgi-bin/php-cgi?-d+allow_url_include=on+-d+safe_mode=off
+-d+suhosin.simulation=on+-d+disable_functions=""
+-d+open_basedir=none+-d+auto_prepend_file=
php://input+-d+cgi.force_redirect=0
+-d+cgi.redirect_status_env=0+-n
 HTTP/1.1" 301 1186 "-" "Mozilla/5.0 (compatible; Zollard; Linux)" "-"
171.215.155.25 - - [26/Feb/2014:10:03:38 +0900] "POST
 /cgi-bin/php.cgi?-d+allow_url_include=on+-d+safe_mode=off
+-d+suhosin.simulation=on+-d+disable_functions=""
+-d+open_basedir=none+-d+auto_prepend_file=
php://input+-d+cgi.force_redirect=0
+-d+cgi.redirect_status_env=0+-n
 HTTP/1.1" 301 1186 "-" "Mozilla/5.0 (compatible; Zollard; Linux)" "-"
171.215.155.25 - - [26/Feb/2014:10:03:39 +0900] "POST
 /cgi-bin/php4?-d+allow_url_include=on+-d+safe_mode=off
+-d+suhosin.simulation=on+-d+disable_functions=""
+-d+open_basedir=none+-d+auto_prepend_file=
php://input+-d+cgi.force_redirect=0
+-d+cgi.redirect_status_env=0+-n
 HTTP/1.1"301 1183 "-" "Mozilla/5.0 (compatible; Zollard; Linux)" "-"

まぁ、全部、301エラー(恒久的移動、Moved Permanently)で外部サイトに跳ね返しているんですけどね。
(やり方は、このページの目次をご覧下さい。)

このIPアドレスの所有者は

inetnum: 171.208.0.0 - 171.223.255.255
netname: CHINANET-SC
descr: CHINANET Sichuan province network
descr: Data Communication Division
descr: China Telecom
country: CN
admin-c: XS16-AP
tech-c: XS16-AP
status: ALLOCATED PORTABLE
notify: zhangys@sctel.com.cn
remarks: service provider
(以下略)

なのでした。

まぁ、どんな国であれ、いいい奴ばかりじゃないけど 悪い奴ばかりでもないのはよく知っていますけれど。

でも、このエージェントには言っておきましょう。

You! 逝っチャイナよ!

目次へ戻る

キャッシュ制御のレスポンスヘッダの設定

今更だけどメモ。

metaタグでキャッシュ禁止する場合。

  1. HTTP/1.0用:<meta http-equiv="Pragma" content="no-cache">
    HTTP/1.0用では「キャッシュさせない」の指示はこれしかできない。
  2. HTTP/1.1用:<meta http-equiv="Cache-Control" content="no-cache">
    こっちは、「実は、キャッシュされる」。
  3. HTTP/1.1用:<meta http-equiv="Cache-Control" content="no-store">
    こっちの記述だと、「キャッシュされない」。

従って、1と2に併記ではなく、1と3の併記でないと、だめなのである。

なお、これらの記述はHTMLのヘッダ中に書くわけだから、埋め込んだ画像、リンクしたPDFなどの文書、リンクした外部CSSファイル、リンクした外部jsファイルなどのキャッシュは禁止できない

で、Apacheサーバの場合は、mod_headersやmod_expiresをいじれば、そのサイトの「全てのコンテンツ」を画像、文書ファイル、CSS、jsや、動的に生成しているコンテンツも含めて、キャッシュ不可などの設定ができるようだ。

目次へ戻る

2013年3月下旬の異常事態

ここのところ、.ru(ロシア)と.ua(ウクライナ)のReferrer spam(リファラスパム)がかなりタチが悪いんですが。

明らかな異変に気づいたのが2013年3月27日分Logくらいかなぁ。ベネルクス三国、ドイツ、フランスのサーバ経由で変なアクセスが来るんだもん。あと、時々だけどインドも。どうも解せなかったんだけど、以下の記事でびっくり。

ネットを崩壊の瀬戸際に追い込んだ「史上最大のサイバー攻撃」が明るみに

Spamhausをダウンさせたものの、Cloudflareが耐えたことを見て取るや、攻撃者たちは攻撃手法を変える。Cloudflareの発表によれば、新たな攻撃の大部分はDNSアンプ攻撃またはDNSリフレクション攻撃と呼ばれるものだ。これは世界各地の何千ものオープンDNSサーバーが、確認もせずにすべてのリクエストに応答してしまうという既知の問題だ。これで攻撃者は攻撃規模を増幅できる。

 なおもCloudflareに対抗できないことを察知した攻撃者たちは戦略を変え、今度はCloudflareが使用する帯域を提供しているプロバイダーに標的を合わせた。CloudflareはロンドンIX、アムステルダムIX、フランクフルトIXなど、欧州で最も強力なIXと接続していた。Cloudflareは100GbpsのDDoS攻撃に耐えたが、その後はこれらの直接のピア接続相手が攻撃を受けた。これらもまた攻撃に耐えると、次はTire1プロバイダーが攻撃を受けた。Cloudflareによれば、「最大で300Gbpsを観測した」とTier1プロバイダー関係者が述べたという。

ということです。知らなかったよ。

DNSアンプ攻撃ってのは、こういう仕組みのようですが、どうやれば問い合わせ元のIPを偽装できるのでしょうね?そこが知りたい。
この書きぶりだと、クラックして中に入り込んでゾンビ化し、そこから送っているのではなさそうです。

ところで、この事件って、もしかして、ローマ法王退任→キプロス金融封鎖→「仮想通貨「Bitcoin」流通総価値が10億ドル超え」@INTERNET Watch…とも話が繋がっているのかなぁ? 欧州の天地は複雑怪奇なる新情勢を生じましたので云々とぞ本には侍りける。

仮想通貨を含めて、私鋳銭を禁止する法律があったような…。母国に送金するための地下銀行を久保塚早紀がどうのこうのとか。

だからこそ、「ナントカ特区」で「地域通貨」を特別に許可していたんだよね? 違うのかな…?
あ、そういえば地域振興券とかいうのをばらまいた時もあったような…。貰った記憶はないんだけど、なんだったんだ?あれは。

あ…よく考えると、マイルとか楽天ポイントとかポンタカードとかのポイント制なんて、円ペッグのバーチャル通貨だって言えるよね? 法的にはギリギリってこと? オンラインゲーム内でのバーチャル通貨はもちろん、アイテムそのものを物々交換的な位置づけで取引すると、事実上は通貨と同じ機能だ(刀3本で盾1枚と交換してもらうとか)。むぅ。考え出すとわからなくなる。

Tier1(ティア1)プロバイダ(2011年1月現在)

英語版Wikipedeliaによると以下のような感じ。

Name Headquarters AS number January 2011 degree
Level 3 Communications (formerly Level 3 and Global Crossing) USA 3356 / 3549 / 1 4402
XO Communications USA 2828 2904
AT&T Inc. USA 7018 2365
Verizon Business (formerly UUNET) USA 701 1946
CenturyLink (formerly Qwest and Savvis) USA 209 / 3561 1367
Sprint USA 1239 1183
Zayo Group formerly AboveNet USA 6461 1066
Inteliquent (formerly Tinet) USA 3257 886
NTT Communications (formerly Verio) Japan 2914 718
TeliaSonera International Carrier Sweden 1299 630
Tata Communications (formerly Teleglobe) India 6453 569
Deutsche Telekom AG (now known as International Carrier Sales & Solutions (ICSS)) Germany 3320 535
Telecom Italia Sparkle (Seabone) Italy 6762 344
Telefonica Spain 12956 150

その他のTier1に準ずる巨大ネットワーク(2012年8月現在)

Name Headquarters AS Number August 2012 degree
Cogent Communications USA 174 3537
Hurricane Electric USA 6939 2180
OpenTransit (France Telecom) France 5511 146

Gigabit IX(インターネット・エクスチェンジ・サーバ)の一覧

(英語版よりも)ドイツ語版Wikipedeliaの記事が充実していたので、そこから転載。

記事の疎密があるので、やっぱり、百科事典とは言い難い。

学生には、書籍の百科事典を使いこなせるようになってから使って欲しいなぁ。

ちなみに、ブダペストはハンガリーの首都なので、「Ungarn」はアドレスに.huとある通りハンガリーのことらしい。

以下のような感じ。

Abkürzung Ort Weblink HP
DE-CIX Frankfurt am Main (Deutschland) https://www.de-cix.net/
AMS-IX Amsterdam (Niederlande) https://www.ams-ix.net/
LINX London (England) https://www.linx.net
DataIX Sankt-Petersburg, Moskau, Novosibirsk, Kiew, Frankfurt am Main http://www.dataix.eu/
KIDC Seoul (Korea) http://idc.uplus.co.kr/eng/index.jsp
JPNAP Tokio und Ōsaka (Japan) http://www.jpnap.net/english/
Netnod-IX u. a. Stockholm (Schweden) http://www.netnod.se
JPIX Tokio (Japan) http://www.jpix.ad.jp
ESPANIX Madrid (Spanien) http://www.espanix.net
EQUINIX Washington, D.C. (USA) http://www.equinix.de
BIX Budapest (Ungarn) http://www.bix.hu
PLIX Warschau (Polen) http://www.plix.pl/
HKIX Hongkong (VR China) http://www.hkix.net
MSK-IX Moskau (Russland) http://www.msk-ix.ru
NYIIX New York (USA) http://www.nyiix.net
PARIX Paris (Frankreich) http://www.parix.net
NIX.CZ Prag (Tschechien) http://nix.cz/index.php?lg=en&z=&wid=0
SIX Seattle (USA) http://www.seattleix.net/
ECIX Düsseldorf, Berlin, Hamburg (Deutschland) http://www.ecix.net/
VIX Wien (Österreich) http://www.vix.at/
MIX Mailand (Italien) http://www.mix-it.net
Balcan-IX Bukarest, Cluj-Napoca, Constanța, Bacău, Iași, Galați, Oradea, Timișoara, (Rumänien) http://www.balcan-ix.net
InterLAN Bukarest, Cluj-Napoca, Constanța (Rumänien) http://interlan.ro/
NIX Oslo (Norwegen) http://www.uio.no/nix/
FICIX Helsinki (Finnland) http://www.ficix.fi/english/main.php
BNIX Brüssel (Belgien) http://www.bnix.be/
BCIX Berlin (Deutschland) http://www.bcix.de/
SIX Ljubljana (Slowenien) http://www.arnes.si/en/infrastructure/six-internet-exchange.html
GR-IX Athen (Griechenland) http://www.gr-ix.gr
Pacific Wave Seattle (USA) http://www.pacificwave.net/
TIX Zürich (Schweiz) http://www.tix.ch/
TWIX Taipeh (Taiwan) http://www.twix.net/
CIX Zagreb (Kroatien) http://www.cix.hr/
SwissIX Zürich (Schweiz) http://www.swissix.ch/
CIXP Genf (Schweiz) http://cixp.web.cern.ch/
RIX Reykjavík (Island) http://www.rix.is/
Rheintal IX Rheintal (Schweiz, Liechtenstein und Österreich) http://www.rheintal-ix.net/

2013/04/02

目次へ戻る

アクセスログをEXCELで読みたい

正規表現はここいら辺で細かく計測と考察がされていたのを拝借。

sedで

sed 's/^(.*?) .*? .*? \[(.*?)\] \"(\S+?)(?: +(.*?) +(\S*?))?\" (.*?) .*? "(.*?)\" \"(.*?)\"/$1\t$2\t$3\t$4\t$5\t$6\t$7\t$8\t$9\t$10\t$11/g' log.txt > out.txt

とやってもダメだった。バッククオートで試すと、以下のように文句言われる。

sed `s/(.*?) .*? .*? \[(.*?)\] \"(\S+?)(?: +(.*?) +(\S*?))?\" (.*?) .*? "(.*?)\" \"(.*?)\"/$1\t$2\t$3\t$4\t$5\t$6\t$7\t$8\t$9\t$10\t$11/g' log.txt > tsv.txt
sed: 1: "`s/(.*?)": invalid command code `

そこで、以下のようにスクリプトに書き出してやった。

sed -f a2t.sed log.txt > tsv.txt

でもダメ。\"を"にするとかは関係ないみたい。正規表現のサポート範囲が違うのでしょう。鬼車版でやってみたんだけどなぁ。

Perlはプラグマがどうのとかi18nの関係で、難しくなってから疎遠。元々苦手だし。なので入れていない。

Active Perlでかいし嫌だなぁと思ったんだけど、よく考えたらWindows7には「UNIX ベース アプリケーション用サブシステム;Subsystem for Unix Application (SUA)」を導入していたのであった。普段は全く使わないけど。

で、Bashから以下のワンライナーで解決できた(実は気のせいだった)。

perl -ple 's/^(.*?) .*? .*? \[(.*?)\] "(\S+?)(?: +(.*?) +(\S*?))?" (.*?) .*? "(.*?)" "(.*?)"/$1\t$2\t$3\t$4\t$5\t$6\t$7\t$8\t$9\t$10\t$11/g' log.txt > out.txt

ConvertApacheAccessLog2TSVwithPerl1LinerinBashShell

あ~、これ$4とか指定しちゃじゃダメじゃん。

CPU時間など、あんまり気にしないこととして、最初の方に挙げられていた記述例を使うことにした。

ついでに真緑の画面は目が痛いのでC Shellを使うことにする。

※そういえば、PC-8801は目に優しいということで緑色の文字だったよなぁ。
あの当時はあれが「普通」という間隔だったのは、一体、何だったんだろう…

ConvertApacheAccessLog2TSVwithPerl1LinerinCShell

perl -ple 's/^([^ ]*) ([^ ]*) ([^ ]*) \[([^]]*)\] "([^ ]*)(?: *([^ ]*) *([^ ]*))?" ([^ ]*) ([^ ]*) "(.*?)" "(.*?)"/$1\t$2\t$3\t$4\t$5\t$6\t$7\t$8\t$9\t$10\t$11/g' log.txt > out.txt

こんな感じ。今度こそ、思惑通りの結果を得られた。

※コピーして使うときはスペースの有無に注意。

1レコードは各11フィールド(ExcelだとK列まで)で出力。各フィールドの意味は以下の通り。

"逆引きした接続ホスト名(またはIPアドレス)","アイデンティファイ","ユーザ","[接続時間 +タイムゾーン]","処理","要求ファイル","プロトコル","ステータスコード","データサイズ(bytes)","リファラアドレス","ユーザーエージェント"

目次へ戻る

米軍からのアクセス

長年、気になっていたことが、以下に引用した記述で、腑に落ちました。

普段はほとんど気にもしていないのだが、稀に米軍からのアクセスがある。
本日、久しぶりにお越しいただいた。

米軍からのアクセスのある時は、ブログの内容がきまって、私的な世界経済予測と地震に関してや、若干陰謀論じみた怪しいテーマを綴った時のみである。

そうかそうか、なるほどね…。そういえば、思い当たる節があります。

で、Blogではたぶん気づきにくいと思うけど、静的コンテンツ中心で運営しているので、私は以下の点にも気づきました。

米軍がアクセスしてくるのは、「私的な世界経済予測と地震に関してや、若干陰謀論じみた怪しいテーマを綴った」そのページそのものに対するアクセスじゃない点です。

敢えて、読み込むページを違うページにずらしてアクセスして来る。面白いですね。

しかも、「書いた後」でアクセスしてくるってことは、その前の段階で、

  1. 他の身元を隠しているIPでアクセスして、自ら情報収集する。

  2. 他人がアクセスしたパケットを横取りして情報収集する。

  3. 他人が検索したパケットを横取りして情報収集する。

これらの組み合わせで大量の文書を集めているのでしょうが、それを全部、人間が読むわけはないですね。

ということは、何らかのNGワード集みたいなものでフィルタリングして「好ましからざる人物」(かも?)という判定をしているのでしょう。

だって、アフリカに展開している米軍が「Yahoo! JAPAN」を使って「校正」というキーワードで検索してアクセスしてくるんだよ?

これって、明らかにおかしいでしょ?

で、わざわざIPから軍のアドレスだって逆引きできる状態でアクセスしてくるってのは、ま、「見ているぞ。」というデモンストレーション効果を狙ったものなのでしょう。本当に必要な諜報活動だったら、自分の身元をさらすわけがないもんね。

しかし、米軍って、アフリカにも常時展開しているのね…。いや~アクセスログ見るまで知らなかったよ。

国家予算に占める軍事費は、やはり相当な負担でしょう。

日本も、せめて、自国の海域くらいは自衛できないとだめよね。

世界第6位の海洋国家なんだから、F-35Aじゃなくて、F-35Bを導入すべきだと思う。

目次へ戻る

Becky!でYahoo!メールのPOP over SSLとSMTP over SSLの設定と副作用

以下は、Becky! Internet Mail Ver.2 (2.55.00)での「私の場合の」設定画面例。

マシンの設定やルータの設定、或いは接続環境によって異なるでしょうから、あくまでも参考例です。

以下の例では受信サーバーはIMAP4でなくPOP3を使う前提での設定。

OP25B(Outbound Port 25 blocking)のチェックを外してある点に注意!

ちなみに「基本設定」画面の方の認証方式をAPOPやCRAM-MD5などにしたら、動きませんでした。標準のままが良いようです。

Becky!での設定画面その1

下の画面のように、POP3のポート番号は25ではなくSSL/TLSサーバーの993とする。
先ほど注意したように、POP3サーバの設定について、今まで、OP25Bを使うためにポート番号を587としていた人は、ポート番号を25でも587でもなく993だよ、と意識する必要があります。

送信サーバー(SMTP)はポート番号は110ではなく995とする。

POP before SMTPのチェックは外してある点に注意!

なお、「詳細」画面の方のSMTP認証方式はCRAM-MD5で通りました。
というか、LOGINやPLAINは非推奨なんだそうですな…。

Becky!での設定画面その1

ついでですが、IMAP4でのくSSL/TLSサーバーの標準ポート番号は465のようです。

うまくいかない場合は…

言うまでもないことでしょうけど、「ESMTPを使用」がONになっていないとお話になりません。

それでもダメな場合はBecky!の掲示板に質問を書く前に自分でマニュアルを参照

次にBecky!の掲示板で過去LOGを検索。

それでもダメな場合には一晩寝てから試す。

それでもダメな場合に至った場合だけ、Becky!の掲示板に質問を書き込めば良いでしょう。

さて、副作用について。

「アバスト!」の出すメッセージ画面

「アバスト!」の出すメッセージ画面

POP over SSLとSMTP over SSLで接続すると、セキュアな接続になるんだから、当然、少なくともメモリ上に内容がDL完了するまではウィルスかどうかを検知できない…。ああ、言われてみれば、そりゃそうですね…。

まぁ、Webメールと同じだと受け止めれば、そんなに深刻に心配する必要もないんでしょうけれども。

ところが…。

大変な副作用が…!

上記の設定だと、受信はできるけど、送信ができない。orz

色々いじったけど、どうも上手く行かない。

結局、設定を元に戻した。残念である。

目次へ戻る

MSが、論文検索を準備しているらしい件

MSが、論文検索を準備しているらしい。新しいロボットを稼働開始した模様。当該サイトは現状では英文PDFだけ、検索可能だった。

219.142.53.8 - - [14/Apr/2010:14:08:19 +0900] "GET /robots.txt HTTP/1.0" 200 488 "-" "librabot/2.0 (+http://academic.research.microsoft.com/)" "-"
219.142.53.6 - - [14/Apr/2010:14:08:19 +0900] "GET /aaa/bbb/ccc.pdf HTTP/1.0" 401 685 "-" "librabot/2.0 (+http://academic.research.microsoft.com/)" "-"

目次へ戻る

日本版Internet Archiveシステム「WARP」の現状

以下、WebPageのWARP - 本事業の紹介より。

[WARPのコレクション]

現在、WARP で収集対象としているものは以下の通りです。

NDL資源タイプ コレクション 内容
サイト 国の機関 立法、行政(中央省庁)、司法各機関のホームページ
都道府県 都道府県のホームページ
政令指定都市 政令指定都市のホームページ
市町村合併 法定合併協議会のホームページ
法定合併協議会を構成する市町村のホームページ
法人・機構 法人・機構のホームページ
大学 大学のホームページ
イベント 国際的・文化的イベントのホームページ
その他 上記以外のホームページ
電子雑誌 インターネット上で無料で公開され、同一のタイトルのもとに、終期を予定せず、巻次・年月次等の表示を伴って、継続的に発行される電子雑誌。

本格事業化に伴い、各コレクションの収集対象を徐々に拡大しています。平成19 年度は以下を予定しています。

法人・機構:独立行政法人、特殊法人、認可法人、特別の法律により設立される民間法人

電子雑誌:当館に納本される逐次刊行物のうち冊子体から電子版に移行されたもの

以下、WARPにおける収集の仕組みについて(PDF,155KB)(平成19 年11 月21 日 国立国会図書館)PDFより。

wget…う~ん。予算の無駄遣いはせず、機能は必要十分なもので…という方針なのでしょう。
しかし、ロボットの巡回間隔は、ちょっと
遠慮しすぎでは?

目次へ戻る

一生絶交。一生勉強。

「オマエなんかとは、もう、一生口利かないからなっ!」とプンプン怒りながら叫んで、翌朝忘れて「おはよっ!」って言った後にシマッタ、と思った経験が数百回あります。どうしても忘れちゃうんだよね。
怒りのパワーって、瞬発力はあっても、意識的に継続させるのは難しいようです。却って体力が必要な気もします。

そんな風だから、「お人好し」と揶揄されるのかもしれません。

高校生の頃は、「こんなコトじゃイカン。オレはもっとイヤなヤツになるんだっ!」って肩肘張っていたような記憶が・・・。今から考えると、随分バカな思考回路だったようです。

「若者とは、限りなく馬鹿者と同義である。」とは、谷沢永一氏の言でしたっけ。

さて、hostsファイルを用いて、限りなく馬鹿者と同義な連中御用達のサイトと一生絶交させる、というネタです。

hostsファイルと言えば、「スパイウェアにhostsファイルが改竄されると、行くつもりのない所に連れて行かれちゃうよっ!危険!」という注意喚起のネタが普通です。

しかし、ここでは「自分でhostsファイルを書き替えて、自己(組織)の防衛をしようっ!」というお話なのであります。

千丈の堤も螻蟻の穴を以て潰ゆ。敵は内側にいるんです。組織の社会的防衛も大切なんですね。

例えば、学校や職場のPC。

情報システム課とかの部署が対応してくれれば良いんですが、そういうキメ細かな対応の対象から漏れている端末もあるわけです。

でも、例えば

はい、そういうわけで、女子大生御用達のミ○シ○とY○h○○!オークションと、ヲタ男子御用達の某チャンネル、更に、財布に300円しか入っていない学生愛用のY○utubeとニ○動とかの動画系に絶対アクセスできないようにしてしまいましょう。

そういう風にするには、これ(hosts_sample.zip)をダウンロード→解凍して、hosts_sample.txthosts(拡張子ナシにすること!)にリネームし、hostsが置かれるべき位置(※)に設置して再起動すればよろし。

※Windows XPの場合は「C:\WINDOWS\system32\drivers\etc」です。

あ!そうそう。ウィルスバスター2008使っている人は、[メイン画面]→[ウィルス・スパイウェア対策]→[不正変更の監視]を一時的に[無効]にするか、[設定]で[hostsファイルの変更]の所のチェックをOFFにしてから作業しないとダメです。作業している自分自身がウィルス扱いされてしまいます。

その上で、http://jp.youtube.comにアクセスしてみて、何も表示されなければ設定成功。

ちなみに、左端の0.0.0.0という数字を168.143.172.70にすると、ミ○シ○やら某チャンネルやらにアクセスしたはずなのに、青空文庫に強制連行できます。どうでも良いヨタ話ばかり読んでないで、古典的名著も読まないとダメよね。

目次へ戻る

チョロ漏れ注意

[CTRL]+[ALT]+[DEL]で、タスクマネージャを出して見ると、何だか分からないものが、とにかくいっぱい。

外敵を防御しても、自分から情報出していたらマズイわけで…。

ということで、一晩掛けて一斉点検を実施。

WindowsXP SP2の場合、タスクマネージャに出ている常駐ソフト類を停止して、次回から起動しないようにするには、二つの方法の両方を知っておき、相手によって使い分けねばならない。

方法その1

マイコンピュータを右クリック→管理(G)→サービスとアプリケーション→サービス→止めるヤツを選択して「停止」。更に「自動」や「手動」になっている場合は、それを「無効」にすれば絶対に起動しなくなる。

方法その2

「方法その1」のリストにない場合は、スタート→[ファイル名を指定して実行]→[msconfig]と入力して[OK]をクリック→[システム構成ユーティリティ]→[スタートアップ]タブにある該当ソフトのチェックを外して再起動する。

再起動すると、以下のような画面が出るので、「システム構成ユーティリティを起動しない」をONにしてOK。

システム構成ユーティリティ


さて、昨晩起動していたプロセスは以下の通り。

その内、停止し、無効化した物は★、停止し、手動化した物は☆、スタートアップから無効化したものは▲を付けた。コメント欄に記述する際、ここここを参照した。便利である。

Nero7のInCD関係のヤツは、システム トレイから INCD 機能にアクセスできるだけであり、普段は全然使わないんだよね。デカイから、必ずしも無くても良いような…。

イメージ名 ユーザー名 CPU メモリ
使用量
コメント

★iPodService.exe

SYSTEM

00

4,156 K

iPod使わないからイラネ

☆aawservice.exe

SYSTEM

00

1,392 K

Adaware起動時のみ起動を許す

Acrobat.exe

admin

00

40,960 K

Acrobatだよ

AcroTray.exe

admin

00

6,132 K

Acrobatだよ

Adobelm_Cleanup.0001

admin

00

5,324 K

アドビのライセンス確認用。殺すとCS2が起動しなくなるよ。

Adobelm_Cleanup.0001

admin

00

5,348 K

アドビのライセンス確認用。殺すとCS2が起動しなくなるよ。

☆Adobelmsvc.exe

SYSTEM

00

1,584 K

Adobe LM Service。2007年3月9日よりAdobeAcrobatからALMを中止したらしい。ホントか?

alg.exe

LOCAL SERVICE

00

3,724 K

MS謹製Application Layer Gateway Service

★AppleMobileDeviceService.exe

SYSTEM

00

2,372 K

iPhon使わないし。

ArcNameService.exe

SYSTEM

00

2,316 K

これはStuffitで使うらしい。

ATOK20MN.EXE

admin

00

5,436 K

ATOKだよ。

csrss.exe

SYSTEM

00

8,548 K

MS謹製 Client Server Runtime Process

ctfmon.exe

admin

00

5,052 K

MS謹製 Winのテキストサービス

cvpnd.exe

SYSTEM

00

5,628 K

シスコのVPNクライアント

DOKOWHEL.EXE

admin

00

6,076 K

arakenさんのどこでもホイール

dpupdchk.exe

admin

00

2,632 K

MS謹製 インテリマウス

eEBSvc.exe

SYSTEM

00

4,216 K

EPSONのプリンタウィンドウ

emedtray.exe

admin

00

7,048 K

EmEditorのタスクトレイ常駐

explorer.exe

admin

13

39,712 K

言わずもがな。

System Idle Process SYSTEM 83 28 K 言わずもがな。
System SYSTEM 00 304 K 言わずもがな。

FV6.exe

admin

00

5,488 K

FileVisor6

InCD.exe

admin

00

19,576 K

Nero7のInCD関係

InCDsrv.exe

SYSTEM

00

5,616 K

Nero7のInCD関係

ipoint.exe

admin

00

13,320 K

MSのインテリマウス

▲iTunesHelper.exe

admin

00

11,724 K

iPod使わないからイラネ

JSQSF32.EXE

admin

00

5,212 K

JSクイックサーチファイル

▲jusched.exe

admin

00

2,568 K

Javaの自動アップデート

JustOnlineUpdate.exe

admin

00

5,676 K

ジャストシステムの自動アップデート

lsass.exe

SYSTEM

00

1,656 K

MS製。セキュリティ関係を管理するらしい。

mdm.exe

SYSTEM

00

3,676 K

Microsoft Script Editorで入るDebug Manager。

NBHGui.exe

admin

00

9,436 K

Nero7のInCD関係

▲NMBgMonitor.exe

admin

00

12,768 K

Nero7関係

★NMIndexingService.exe

SYSTEM

00

9,388 K

Nero7関係

★NMIndexStoreSvr.exe

admin

00

19,468 K

Nero7関係

nvsvc32.exe

SYSTEM

00

5,412 K

NVIDIA Driver Helper Service

pdfquickview.exe

admin

00

7,576 K

PFU謹製ScanSnapのPDFサムネイルビューワ

rundll32.exe

admin

00

6,784 K

子供がいるのか不明

rundll32.exe

admin

00

7,964 K

子供がいるのか不明

services.exe

SYSTEM

00

4,528 K

MS謹製Services and Controller app。親はwinlogon.exe

SfCtlCom.exe

SYSTEM

00

30,696 K

ウィルスバスターの親玉

smss.exe

SYSTEM

00

408 K

MS謹製Windows NT Session Manager

soundman.exe

admin

00

5,576 K

Realtekのオーディオ。タスク常駐。

spoolsv.exe

SYSTEM

00

5,344 K

MS謹製プリンタスプール

sqlbrowser.exe

NETWORK SERVICE

00

2,412 K

MS謹製SQL Browser Service

sqlservr.exe

NETWORK SERVICE

00

1,248 K

MS謹製SQL Server Windows NT

sqlwriter.exe

SYSTEM

00

3,680 K

MS謹製SQL Server VSS Writer

taskmgr.exe

admin

02

8,628 K

そりゃ、開いてみてますから…。

TaskSwitch.exe

admin

00

8,164 K

MS謹製Power Toys for Windows XPのタスク切り替え

TMBMSRV.exe

SYSTEM

00

9,136 K

ウィルスバスターManages the Trend Micro unauthorized change prevention feature

TmPfw.exe

SYSTEM

00

7,864 K

ウィルスバスターManages the Trend Micro Personal Firewall.

TmProxy.exe

SYSTEM

00

8,064 K

ウィルスバスターManages the Trend Micro proxy.

UfSeAgnt.exe

admin

00

54,196 K

ウィルスバスターTrend Micro Server Agent

wdfmgr.exe

LOCAL SERVICE

00

1,980 K

MS謹製Windows User Mode Driver Manager

winlogon.exe

SYSTEM

00

544 K

MS謹製Windows NT Logon Application

このほかに、本体不詳のsvchost.exeが、
 

svchost.exe

LOCAL SERVICE

00

7,140 K

svchost.exe

NETWORK SERVICE

00

3,492 K

svchost.exe

NETWORK SERVICE

00

4,476 K

svchost.exe

SYSTEM

00

26,608 K

svchost.exe

SYSTEM

00

3,648 K

svchost.exe

SYSTEM

00

4,332 K

svchost.exe

SYSTEM

00

5,344 K

と、7個ある。これらの子供をProcess Explorer(2007/02/01時点での最新版はVer11.04)で調べてみると、

●1個目
 

DcomLaunch

DCOM Server Process Launcher

C:\WINDOWS\system32\rpcss.dll

DCOM サービスを起動する機能を提供します。

TermService

Terminal Services

C:\WINDOWS\System32

ermsrv.dll

複数のユーザーが会話型で、リモート コンピュータのデスクトップとアプリケーションの画面とコンピュータに接続できます。Administrators の RD を含むリモート デスクトップ、素早いユーザー切り替え、リモート アシスタンス、および ターミナル サーバーを支援します。

●2個目

RpcSs

Remote Procedure Call (RPC)

C:\WINDOWS\system32\rpcss.dll

エンド ポイント マッパーや各種の RPC サービスを提供します。

●3個目 一々説明は書き出さない。なんだか重要っぽいものばかりがまとめてぶら下がっている。
このsvchost.exeを殺すと、大変なことになりそう。

udioSrv

Windows Audio

C:\WINDOWS\System32\audiosrv.dll

Browser

Computer Browser

C:\WINDOWS\System32\browser.dll

CryptSvc

Cryptographic Services

C:\WINDOWS\System32\cryptsvc.dll

Dhcp

DHCP Client

C:\WINDOWS\System32\dhcpcsvc.dll

dmserver

Logical Disk Manager

C:\WINDOWS\System32\dmserver.dll

ERSvc

Error Reporting Service

C:\WINDOWS\System32\ersvc.dll

EventSystem

COM+ Event System

C:\WINDOWS\system32\es.dll

FastUserSwitchingCompatibility

Fast User Switching Compatibility

C:\WINDOWS\System32\shsvcs.dll

helpsvc

Help and Support

C:\WINDOWS\PCHealth\HelpCtr\Binaries\pchsvc.dll

lanmanserver

Server

C:\WINDOWS\System32\srvsvc.dll

lanmanworkstation

Workstation

C:\WINDOWS\System32\wkssvc.dll

Netman

Network Connections

C:\WINDOWS\System32\netman.dll

Nla

Network Location Awareness (NLA)

C:\WINDOWS\System32\mswsock.dll

RasMan

Remote Access Connection Manager

C:\WINDOWS\System32\rasmans.dll

Schedule

Task Scheduler

C:\WINDOWS\system32\schedsvc.dll

seclogon

Secondary Logon

C:\WINDOWS\System32\seclogon.dll

SENS

System Event Notification

C:\WINDOWS\system32\sens.dll

SharedAccess

Windows Firewall/Internet Connection Sharing (ICS)

C:\WINDOWS\System32\ipnathlp.dll

ShellHWDetection

Shell Hardware Detection

C:\WINDOWS\System32\shsvcs.dll

srservice

System Restore Service

C:\WINDOWS\system32\srsvc.dll

TapiSrv

Telephony

C:\WINDOWS\System32\apisrv.dll

Themes

Themes

C:\WINDOWS\System32\shsvcs.dll

TrkWks

Distributed Link Tracking Client

C:\WINDOWS\system32\rkwks.dll

W32Time

Windows Time

C:\WINDOWS\system32\w32time.dll

winmgmt

Windows Management Instrumentation

C:\WINDOWS\system32\wbem\WMIsvc.dll

wscsvc

Security Center

C:\WINDOWS\system32\wscsvc.dll

wuauserv

自動更新

C:\WINDOWS\system32\wuauserv.dll

WZCSVC

Wireless Zero Configuration

C:\WINDOWS\System32\wzcsvc.dll


●4個目

Dnscache

DNS Client

C:\WINDOWS\System32\dnsrslvr.dll


このコンピュータのドメイン ネーム システム (DNS) 名を解決およびキャッシュします。このサービスが停止した場合、このコンピュータは DNS 名を解決できず、Active Directory ドメイン コントローラーを見つけることができなくなります。このサービスが使用不可にされた場合、このサービスに明示的に依存するサービスはすべて起動できなくなります。

●5個目 ネットワーク関係がぶら下がっている。特にリモートコンピュータ関係?

LmHosts

TCP/IP NetBIOS Helper

C:\WINDOWS\System32\lmhsvc.dll

RemoteRegistry

Remote Registry

C:\WINDOWS\system32\regsvc.dll

SSDPSRV

SSDP Discovery Service

C:\WINDOWS\System32\ssdpsrv.dll

WebClient

WebClient

C:\WINDOWS\System32\webclnt.dll


●6個目

stisvc

Windows Image Acquisition (WIA)

C:\WINDOWS\system32\wiaservc.dll

スキャナとカメラのためのイメージ取得のサービスを提供します。

●7個目

HTTPFilter

HTTP SSL

C:\WINDOWS\System32\w3ssl.dll

このサービスは、Secure Socket Layer (SSL) を使って HTTP サービスのために secure hypertext transfer protocol (HTTPS) を実装します。このサービスが無効な場合は、明示的にこれに依存しているサービスを開始できません。

・・・ふぅ。大変だった。

目次へ戻る

.htaccessの色んな書き方(Rewrite*を使う)

基本的なことはミケネコ研究所の遺稿でお勉強して下さい。

その上で、mod_rewrite的な書き方を.htaccessにする方法の実例。
以下は、本サイトで使用しているものの一部です。

# wwwなしでのアクセスをwww付きのアドレスへ301エラー指定で永久リダイレクト
RewriteCond %{HTTP_HOST} ^(tanimoto\.to)(:80)? [NC]
RewriteRule ^(.*) http://www.tanimoto.to/$1 [R=301,L]

以下の記述でもそうですが、NCは大文字小文字同一視です。
ORで繋げて行かないと、ANDと解釈されます。

# 信頼するロボットのリモートホストを明示
RewriteCond %{REMOTE_HOST} !\.googlebot\.com$ [NC,OR]
RewriteCond %{REMOTE_HOST} !\.inktomisearch\.com$ [NC,OR]

「!」で否定すれば、「不許可を否定」というわけだから、結果的に「許可」となる。

# リモートホストで弾く場合
RewriteCond %{REMOTE_HOST} anonymizer\.com [NC,OR]

# IPアドレスで弾く場合
RewriteCond %{REMOTE_ADDR} ^202\.188\.161\.66 [OR]
RewriteCond %{REMOTE_ADDR} ^202\.29\.20\. [OR]

数字に大文字/小文字の別はないので、NCは不要。
途中までの記述でも良い。例えば2行目は24ビット目までの指定。
これで、202.29.20.0/24を指定したのと同じ意味になる。

# リファラで弾く場合
RewriteCond %{HTTP_REFERER} ^(.*)sexsearchcom(.*)$ [NC,OR]

Blogで論争して炎上とか、逆恨みで晒し上げされてアクセス激増とか、なんか訳のわかんないリンク元とかを指定すると良いでしょう。

#  UAでロボット弾き。
RewriteCond %{HTTP_USER_AGENT} "^NPBot" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "\.exabot\.com" [NC,OR]

正規表現が使えます。
 エスケープが必要な文字の処理を忘れないように注意。

# コメントスパムやワーム、クラッキングのリダイレクト。
RedirectMatch permanent (.*Admin\.dll.*)$ http://127.0.0.1$1
RedirectMatch permanent (.*cmd\.exe.*)$ http://127.0.0.1$1

ここでは [OR]は書きません。
エラーベージ指定をしているなら、それより上に書かないとダメです。
127.0.0.1のIPアドレスは、接続してきているクライアントマシン自身です。
よその悪意のないうっかり設定サーバを経由して、こちらを攻撃したつもりでも、
コマンド送信をデスクトップから行っている場合には、うっかり設定サーバには迷惑を掛けず、
相手の端末機自身に鏡返しするわけです。 もっとイケズな方法はこちらを参照。

あとは必要に応じて、下の方にAllowとかDenyとかの普通の.htaccessの記述をすれば良いと思います。

なお、mod_rewriteのサンプル集を見かけました。便利な設定の例が色々挙げられています。

おまけのアイディア:

ブラウザの言語に日本語が設定されていないアクセスを規制するってのも、かなり有効かもしれません。
例えば、以下のような感じ。

# 先頭から「ja」以外の文字が連続して最後に至る場合の正規表現
SetEnvIfNoCase Accept-Language "^[^(ja)]+$" Dameyo

として、

deny from env=Dameyo

で、Dameyoをdenyに代入。これは効果絶大。

但し、この指定をすると検索エンジンのクローラのアクセスを全滅させる可能性があります。

SEO的観点を持ってサイト運営している方は、細心の注意を払って微調整する必要があるかもしれません。

考え方としては、要するに、自分が信用するクローラを特徴付ける要素(リモホ、IPアドレス、UAなど)が何かを良く考え、それを明示的に指定して許可すれば良いのです。

ところが、「.htaccessの記述内容がサーバに評価される順番」がわかりにくいんですよね。

単純に、「1行目から順番に適用され、その行を読み込んだ瞬間ごとに実行されます。」というわけではないですから…。
例えば、上位ディレクトリに.htaccessがあった場合の評価の順番とか調べ始めると、もう訳わかんない。

少なくとも、「Apacheのマニュアルだけで十分だろ?」と言われても、私の頭では無理。
mod_rewriteの公式マニュアルは、今のところ英語しかない。和訳解説ページもありますが、難しい。

もっとザックリかみ砕いて解説してくれているコンテンツがあれば、神なんですが。

目次へ戻る

最近考えたこと。公開PROXY経由のアクセスを動的に遮断するには?

詳細不明の北アフリカのIP…これって何?
たぶん、ヨーロッパ諸国の情報組織が旧植民地に持っている出先機関だと思うんだけど・・・。
ちなみに○ーナーとネ○ミーラ○ド関係はアメリカっぽい予感。

ところで表題の件。

色々気になるアクセスの多くを撃墜するには、公開PROXY経由のアクセスを動的に遮断するのが一番良いわけですよね。

DNSブラックリストを用いて、動的にプロクシ経由のアクセスを遮断する。

MTの場合はそういうプラグインが幾つかあるようですが、静的html主体のページに対する全アクセスを規制するのは、どうすれば良いんでしょうか?

以下、思考実験のみです。残念ながら、この記事で「ズバリ解決」には至りません。検索で来た人、ごめんなさいね。

全てのHTMLにcgiを組み込むという方法は、ある意味、なるほど、と関心。
アクセスカウンタみたいなものだと考えれば、違和感ないですよね。

でも、なんか面倒。
あと、閲覧者がローカルに保存したhtmlでも、絶対パスでそのcgiを参照しに来ちゃうわけですよね…。
それも、ちょっとどうかと思いました。

modファイルをいじれる権限があれば、mod_authz_iplistを使うのが良いのでしょうね。
これはすごい。作った人、頭良い。

ということは、root持っていなくてhttpd.confをいじれない場合は、アクセスがあるたびに、DSBL、BBQ、BBX辺りを引くとか、風呂敷確認君 3.00踏み台登録確認君 1.03を見に行くとかして、ブラックリストに一致した場合、即座に.htaccessに追記、とか?

いやいや、それもちょっとアレだよね。

その日だけは見逃してやることとして、例えば、

  1. accesslogからIPをUNIQする。

  2. それらをDNSブラックリストに順次問い合わせ。

  3. ヒットしたものを抽出してTMPファイルに保存。

  4. .htaccessをOpenし、6ヶ月以上前の登録(コメントを活用)になっているものを削除。

  5. TMPファイルの内容と.htaccessを比較。

  6. 既にあれば登録年月日をReplaceし、無ければ新規に登録。その時、登録年月日もコメントとして追記する。

というようなcronを書いて、毎日一回動かすとか?

クエリの発信そのものは、サンプルコードを見た感じだと、そんなに難しくなさそうですね。

でもなぁ、.htaccessを直接書き替えるのは、ちょっと怖いですね…。

となると、上のような挙動をするローカルで動くスクリプトを組むか、ガードプロクシ(GUARD PROXY)の利用(未試用だけど)ということになるのかなぁ…。

ウィルス作れるくらい優秀な院生(< 本気)なら、そういうツールも簡単に作れそう。
作ってって欲しいなぁ。

.htaccessに、特定テキストファイルをincludeできれば良いんですけどね…。
って、同じようなこと考えている人がいました。
「できねーよ、ふつーに書け」って返り討ちにあってますな。

目次へ戻る

CIDR Calculator ver1.0

WHOISでIPアドレス所有者と、その範囲を知ろうとして、例えば、「219.229.172.124」などを検索すると、

219.229.160.0 - 219.229.191.255」などと範囲が出るときがあります。

でも、.htaccessで指定したいときは

Deny from 219.229.160.0/255.255.255.224.0

Allow from 219.229.160.0/255.255.255.224.0

のようなネットマスクで書くか、

Deny from 219.229.160.0/19

Allow from 219.229.160.0/19

のようなCIDR形式での指定で書かないとダメですよね?

Deny from 219.229.160.0-219.229.191.255 って書ければ便利なのに…。

ということで、CIDR形式の表示を自動計算してくれるのが、このExcelファイルです。

ダウンロード(ZIPファイル)→CIDR_Calculator_ver1.zip(1.75MB)
※チャンと動かないときは、[ツール]→[アドイン]→[分析ツール](分析ツールVBAではない)をONにしてみてください。
それでもチャンと動かないときは、[ツール]→[オプション]でマクロセキュリティのレベルを下げてみてください。

まぁ、関数電卓とメモ用紙があれば、手計算でもできますし、もっと多種多様な計算ができるJavascriptが公開されていますけど、CIDR_Calculatorのウリは、2500個のIPアドレスの対を、まとめて計算できる、という点です。

計算のしかたは以下のようになっているらしいです。

先頭のIPアドレス

末尾のIPアドレス

219.229.160.0

219.229.191.255


「.」で区切った単位毎に2進数に変換して8桁揃えで表示

11011011.11100101.10100000.00000000

11011011.11100101.10111111.11111111


「.」を含まずに左から何文字目まで共通しているか?(赤字部分)

11011011111001011010000000000000
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef

11011011111001011011111111111111
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef

共通していたのは19文字目まででした。
ということで、答えは「219.229.160.0/19」です。

この範囲に収まるIPアドレスの個数は、たぶん、8192個です。


★巻き添え注意★

例えば、範囲が「219.229.160.0-219.229.176.255」だったとします。

本計算機で、この数値を使って計算しても、先ほど計算した「219.229.160.0 - 219.229.191.255」の範囲と同じ、「219.229.160.0/19」が答えとして出てきます()。

そうすると、「219.229.177.0-219.229.191.255」のIPアドレス範囲からのアクセスも、巻き添えを食って弾かれちゃいます。この場合、巻き添えを食うIPアドレスの個数は4096個です。

※なお、「219.229.160.0-219.229.175.255」で計算した場合は、「219.229.160.0/20」となって、巻き添えは出ません。
要するに、区切り単位が極端に小さくて、キリの悪いIPアドレスを割り当てられているユーザは、巻き添えを食らう機会が増える、ということですね。例えば、小さなプロバイダが複数固まっているIPアドレス範囲とか。
でも、大手プロバイダを総弾きする人もいるでしょうから、どっちが不利かはわかりません。

目次へ戻る

.htaccessでの、 コメントスパムやワーム、クラッキングのリダイレクト方法

例えば、

255.255.255.255 - - [31/Mar/2006:59:59:23 +0900] "GET /sumthin HTTP/1.0" 404 0 "-" "-"

なんてLOG(一部、書き換えてあります)ね。
これ、調べてみると、攻撃ツールセット"Analysis of the ATD OpenSSL Mass Exploiter"ってのに入っているスキャナで、httpd と OS の種類を確認した上で、ホストに対して opensslコマンドを試みるらしい。

ぐは。自宅サーバでなくて良かった・・・。んで、そんなときは、こうですよ。

書式:Redirect permanent /ディレクトリ ジャンプ先URI/ディレクトリ
記述例:Redirect permanent /sumthin http://www.interpol.int/sumthin
意味:(存在しないし、リンクも付けていない)sumthinディレクトリを、直接指定してアクセスを試みた無粋なヤツには、インターポール(ICPO:国際刑事警察機構)に瞬間連行し、そこで同じ挙動を実演して頂く。

「http://www.interpol.int」の部分は、「http://www.npa.go.jp/cyber」(警察庁サイバー犯罪対策のページ)とか「http://www.cia.gov」(アメリカ中央情報局)とか、任意に付ければ宜しい。

技としては、相手の力を利用しているだけだから、合気道のような感じです。
しかし、こういう輩は、あちこちのIPに対して、一気に同様の事をするようなプログラムを動かしているでしょう。
この手の自動通報手法が普及すれば、たぶん、銭形警部に追っかけられる羽目になるでしょうなぁ。

なお、「/_vti_bin」とか「/MSOffice」とかのディレクトリへのアクセスは、そこまでやるのは可哀想です。
これは、WEBディスカッション機能というものらしい。たぶん、ユーザ本人も気づいていないのでしょう。
詳しくはこのへん参照。

目次へ戻る

Spam Mail Killerの各国IP弾き用テンプレートを自分で作る方法

日々、14個のメールアドレスを巡回しております。

メールサーバによっては、SPAMブロック機能が無い所もあるわけです。

そんなわけで、困っておりましたが、この度、Spam Mail Killer を入れてみました。

Windows用ソフトである。詳しい紹介はこの辺この辺を参照。ダウンロードはここから。

パソコンに慣れていない人には難しいかもしれませんが、機能は大変優秀。

ところで、Spam Mail Killerの、本日現在の最新版Ver 2.23は2006/06/27である。

当然、これに同梱されているテンプレートファイル(PLS[3桁数字].TXT)も、その当時のものである。

ところが、各国のIPアドレス範囲は、日々、新規登録されるのである。

従って「インドネシア(.id)経由のメールを削除」など、あらかじめ用意されているテンプレートをONにしていても、テンプレートファイルにリストされていないIPアドレス範囲を経由したメールは、受信されてしまう。

つまり、自分でリストを更新しないとダメってわけ。

また、最近はロシアやキプロスを経由したSPAMが多いのだが、そういうテンプレートはあらかじめ登録されていないようだ。

つまり、自分でリストを作らないとダメってわけ。

ということで、Spam Mail Killerの各国IP弾き用テンプレートを自作する方法を紹介する。


※2007年3月追記

本文書の公表後、テンプレートの更新データが折々に別ファイルで配布されるようになったようです。

ですから、以下の説明は、ほとんどの人にとっては不要になりました。


なお、ヘッダのReceived: fromに .ruとか.cyとか、国名がハッキリ分かるようなアドレスがあるメールの場合は、Spam Mail Killerのヘルプ中の「ヒント&事例集」→「■外国語のメールを拒否する方法」にある ##/\.cy>?$/k とか ##/\.cy>?$/k などの指定を行う方が簡単で、動作速度も速いので、そちらをオススメします。


それと、以下の全部に当てはまる人でないと、この作業は(たぶん)無理。


作業の大まかな流れ

  1. SPAMを受信する。

  2. SPAMのヘッダを見て、送信に関わっているIPを特定する。

  3. IPアドレスの割り当て先を調査し、国を特定する。

  4. 「一網打尽」 を入手する。

  5. NICのftpサイトに行って、最新割り当てリストを入手する。

  6. 割り当てリストを「一網打尽」で開き、国で検索する。

  7. 更に連続したIP範囲をまとめる。

  8. クリップボードに転送。

  9. データをエディタ(またはWord)で整形する。

  10. 更にそれをExcelに貼り付けて整形する。

  11. 更にそれをエディタ(またはWord)に貼り付けて整形を仕上げる。

  12. ファイルに保存。

  13. Spam Mail Killerにセットする。


作業の細かな説明

  1. SPAMを受信しました。

  2. SPAMのヘッダ(の、特にReceived: fromの所)を見て、送信に関わっているIPを特定します。
    (ヘッダの読み方はこの辺参照。)

  3. この辺を使 うか、私がでっち上げたwhois_htaを設定するなどして、IPアドレスの割り当て先を調査し、国を特定する。例えばIPアドレス「82.114.48.64」だと、「キプロス (CY)」だとわかる。
    ここでこのCYをメモする。
    因みに、キプロスどこの国かを知らない場合は、それも調べておくこと。

  4. 「一網打尽」 をここから入手し、任意のディレクトリに解凍し、Ipv4v2.exeを起動する。

  5. 「一網打尽」の[ヘルプ]→[NICへ接続]画面を出す。
    キプロスはヨーロッパの国だから、RIPE-NCCFTPサイトを選んで接続する。

    ついでに言っておくと、APNICがアジア太平洋地域。日本のjpnicがIP割り当てを担当している。
    LACNICは南米とカリブ海RIPE NCCは欧州・中東・中央アジア・北アフリカARINは 北中米・赤道以南のアフリカAfriNIC もアフリカで、最近出来た組織だったはず。

#########

はい。接続しました。

#########

キプロスはヨーロッパの国だから、ripenccに入って、 delegated-ripencc-20060907 など、数字部分(=日付)が一番新しいファイルを選び、[右クリック]→[フォルダへコピー]で「一網打尽」の実行ファイルを同じディレクトリにダウンロードする。

delegated-ripencc-latest などのファイルが普通は最新なのだが、ファイルサイズをよく見ると、これは増加した分だけを書いた差分ファイルの場合があるので注意!

#########

  1. 割り当てリストを「一網打尽」で開き、[検索]→[国・地域を検索]でキプロスを検索します。

#########

  1. 見つかったら、[右クリック]→[連続するIPアドレス範囲を連結する]
    この連結を確実にやらないと、行数が減らない。
    行数が減らないと、Spam Mail Killerの巡回時間も無駄に増えてしまうので注意。

#########

  1. ABC順の国コード別でまとまるので、画面を上の方にスクロール行って、[右クリック]→[クリップボードにコピー]。

#########

  1. エディタに貼り付けます。
    Wordで行う場合は[ツール]→[オプション]の「表示」タブで「タブ」「スペース」「段落記号」をONにしておきましょう。

#########

見てのように、半角スペースが入っています。これは不要なので、置換機能を用いて削除します。
エディタによって、操作が違うので、説明しません。
Wordで置換する場合は[編集]→[置換]で行いますが、「オプション」を開いて「あいまい検索」をOFFにし、「半角と全角を区別する」はONにして置換を行います。
なお、メモ帳ではタブやスペースが見えないのでやりにくいでしょう。

  1. データはタブで区切られているので、クリップボードからExcelに貼り付けすれば、画像のようにセルに区切られます。

#########

B列は不要なので、B1セルに「00000000 <ip-address>」を貼り付けます。
半角で0が8個半角スペース1個半角小文字で<ip-address>です。
オートフィルでコピーしますが、数字は全て半角で0が8個でなければなりません。
数字が増えてしまった場合はフィルハンドルで「セルのコピー」を選びます。

#########

今度はC列とD列の間に1列挿入し、半角の「-」を入れます。
結果的に下図のようになればよろしい。

#########

  1. 差し当たり必要なのはB列~E列だけなので、そこだけ選んでエディタの新規文書に貼り付けます。
    Wordで作業する場合も新規文書で。

こんな風になっているはず。

#########

タブを半角スペースに置換する。
(なお、Wordで置換する場合はオプションの下の方にある「特殊文字」で「タブ文字」を指定できる。)
以下のようになる。

#########

今度は「半角スペース」+「半角-」+「半角スペース」「半角-」だけに置換する。以下のようになる。

#########

で、この先頭行に

2.23
キプロス(CY)経由のメールを削除 SN:20060907
0
1
H

と記述。一行目はバージョン。2行目はお好みでどうぞ。3行目から5行目は変更してはいけない。

出来上がりは以下のような感じになる。

#########

  1. ファイルをSpam Mail KillerのPLUSフォルダ(Spam Mail Killerを普通にインストールしていれば、C:\Program Files\smkiller\PLUS\です)に適切な名前で保存。
    ファイル名は、PLS999.TXTなど、PLSと半角数字3つでないと正しく認識されないようです。

  2. Spam Mail Killerで、テンプレートの指定の中に「キプロス云々」が出てくるので、ONにセットする。
    これのやり方はマニュアルを見ればわかるはずです。
    っていうか、マニュアルさえ読まない人や、マニュアルを読んでも理解できない人は設定すべきではないと思います。従って、本件についてメールで質問されても私は答えません。

おしまい。

IPアドレスによるフィルタリングのデメリット

以下、2007年8月追記:Spam Mail Killer Support BBSで、気になるやりとりがあったので、一応書いておきます。
(おそらく、本ページを参考にしてリストをUPしたのだろうと思うので…)

 「IPアドレスによるフィルタリング(註1)は、「たいして手間を掛けずに結構な効果があるのが利点です(註1)が、徹底するなら「継続的なメンテナンスが欠かせない(註1)というデメリットがあります。
 また、最大のデメリットとして、「IPアドレスの範囲指定で削除する=過去にスパムメールが発信されたという理由でスパムメール以外も含めて遮断する、という強行策だということ(註2)があります。
 更に、最近のIPアドレス枯渇により、新規の割り当て領域はIPの範囲指定が大変しにくい状況で、.chに割り当てた領域が、範囲指定では一部、.jpに割り当てられている領域とも重なる場合が増えています。
 結果的に、よほど注意深く設定しないと、.ch領域からの受信を排除したつもりで、実は.jp領域からのメールも削除してしまう場合が出てくるでしょう。
 「僕には、アフリカやアラブ、東欧には友達は一人もいないよ!」という場合には、IPアドレスによるフィルタリングは大変便利ですが、東アジア領域(と、それとIPアドレス範囲が密接に絡むオーストラリア)に割り当てられたIPアドレスが発信元のSPAMの排除については、運用上、相当の覚悟と細心の注意が必要だろうと思います。
Spam Mail Killer開発者のeimei氏が仰るように、「ヘッダーに削除条件に使えそうな特徴が含まれないスパムが届く方がむしろレアケース(註1)であるのは確かです。
(正規表現を少しでも使えるようになると、Subjectの指定もかなり楽にできるようになるはずです。)
 以上のことを充分に認識した上で、上記で紹介したIPアドレス範囲指定による方法をご利用になることをオススメします。
なお、Spam Mail Killer開発者のeimei氏によると、Support BBSへの「リストの投稿(紹介)は許可制ではありません。他の方にも参考になると思えば自由に投稿して下さい。もちろん、どんな状況を想定した削除条件か、あるいは参考にする上での注意点などはできるだけ詳細に記載していただきたいとは思います。(註1)ということだそうです。

目次へ戻る

ヘッダの特徴を賢く使って「Spam Mail Killerの「禁止リスト@複数要素指定」

では、ヘッダにある「 削除条件に使えそうな特徴」を賢く見つけ、それを指定するには、具体的にはどうすれば良いのか?

例えば、BBSに常駐しているパワーユーザである千秋さんが「禁止リスト@複数要素」を活用した「ヘッダに<Content-Type:>項目が存在しない」という条件にマッチするものを排除すればIPアドレス範囲の指定をするよりも楽だよね、という趣旨のこと(註3)をお書きです。

でも、「一般のメールでは存在する“はず”の条件が存在しない」という特徴は、届いたメール全体を見通した上で、spamメールを見ないと、気づきにくいものですから、結構、盲点になりがちかもしれません。

本ページの上の方で紹介している、IPアドレス範囲の指定をするファイルを自前で作る方法は、Spam Mail Killerのメニューからはいじれない部分を無理矢理にいじる方法の紹介でした。
あくまでも、イリーガルな方法なんです。

しかし、千秋さんが紹介なさっているのは、Spam Mail Killerのメニューからごく普通に行き着ける、標準的な機能です。
従って、こちらの方を先に使いこなしできるようになるのが宜しい。
ところが、Spam Mail KillerのHELPファイルでの紹介は、やや簡便に過ぎるように思います。
もっとハッキリ言えば、マニュアルと首っ引きで読んでも、ちと分かりづらい。

ということで、画像付きでそのやり方を紹介しましょう。

手順その1 [ツール]→[禁止リスト@複数要素の管理]

#########

手順その2 以下のような画面が出るので「要素の追加」ボタンを押す。

#########

手順その3 更に以下のような画面が出るので「指定フィールド」の右にある▼を押して「Content-Type:」を選択する。
更に「真偽の判定」の右にある▼を押して「フィールドが存在しないか空」を選択する。
「指定文字列」は今回は何も入れない。
以上を設定したら「登録」ボタンを押す。

#########

手順その4 OKを押す。

#########

手順その5

「コメント」欄に「ns ヘッダに<Content-Type:>項目が存在しない」と打ち込む。
nsは半角小文字。念のため、更にその直後にも半角スペースを入れておく。
それ以降のコメントの文言は任意でよろしい。

このnsは、挙動に大いに関係しますので、HELPファイルの[管理]ツール → 禁止リスト@複数要素の管理を読んで、どういう意味かを確認しておきましょう。

「対象アカウント」の右にある▼を押して、自分でどのアカウントに対して適用したいのかを選ぶ。

「成立要素数」は、今回は0のままで良いようです。

そして、「新規登録」ボタンを必ず押す。これを押さないと、登録されない。

#########

手順その6 OKを押す。

#########

手順その7 下のようになれば、登録成功です。

#########

手順その7 これは上級者向けの機能のようですが、「エディタで開く」ボタンを押すと、メモ帳やエディタで開かれ、直接編集できます。(初心者は、手順9へ進んで下さい。)

#########

手順その8 メモ帳やエディタで開くと、以下のような内容に見えるはずです。
このファイルはSpam Mail Killerをインストールしてあるフォルダの中にある、LISTフォルダの中に新規のファイル「FGL000.TXT」として登録されます。
ファイルは1000個まで作成できるそうです。

------------------------
2.27
ns ヘッダに<Content-Type:>項目が存在しない
0
0
H
30000000 Content-Type:

------------------------

手順その9 「終了」ボタンを押して「禁止リスト@複数要素の管理」画面を閉じます。

#########

以上で、禁止リスト@複数要素の管理への登録は完了です。

今やったのは、「ヘッダに<Content-Type:>項目が存在しないメールは問答無用で削除する」というものでした。つまり、1つの要素を用いた指定であって、複数要素でも何でもない。
それでも、ここで登録する必要があるわけです(1は複数の一部分ですから)。

なお、この禁止リスト@複数要素に登録されている諸条件は、標準画面の「禁止リスト@~」には表示されません。誤削除があって、「禁止リスト@~」を何度も見直したのに削除されてしまうような場合は、一応、禁止リスト@複数要素も確認した方が良いでしょう。
実は、禁止リスト@複数要素に数ヶ月前に指定したのをスッカリ忘れていた、ということもあるかもしれません。

#########

Spam Mail Killer の禁止リスト@複数要素の管理を、更に改造

上の設定で満足したのも、たった一晩。
自分が管理しているサイトで、アクセスログを取り、qmailを使って一日一回、メールで送ってくる設定をしているのですが、上記の指定だと、そのメールも削除されてしまいました(泣)。
これはマズイ。

そこで、「ヘッダに<Content-Type:>項目が存在しないメール」で、かつ、「Subject:がACCESS 2007/08/30 150のような形式ではない場合」は問答無用で削除するという風に変更したくなりました。

しかし、Spam Mail Killerが利用している正規表現ライブラリBREGEXP.DLLのマニュアルには否定演算子のサポート記述が見あたりません。
どうも、禁止リスト@~での正規表現では、“!”とか、否定としての“^”とかは、使えないような印象です。

ところが、禁止リスト@複数要素の管理の要素追加画面のプルダウンをよく見ると、「文字列が含まれない/メアド関連が一致しない/正規表現がマッチしない」がチャンとありました。
これを使えばいいようです。

ということで、改定結果は以下の通り。

------------------------
2.27
ns ヘッダにContent-Type:がなく、かつ、Subject:が"ACCESS 20XX/XX/XX X…"でない
0
1
H
30100000 Content-Type:
10100000 Subject: ##/ACCESS 20[0-9][0-9]\/[01][0-9]\/[0-3][0-9] [0-9]+/km
------------------------

JavaScriptのブラウザ依存の挙動を解消するのと同様に、どこまで行ってもバッドノウハウな所が、気持ちの萎える所ですな。

この条件指定を作り出すまで、個別ログ画面で、このルールで判定できるかどうかを見たいLOGを一つ選択し、「メールチェックの簡易テスト」ボタンを押して何度もテストしてチェックしてみて導き出しましたが、結構苦労しました。
「メールチェックの簡易テスト」ボタンで試せば、実際にメールサーバから受信せずとも、その複数要素が正しく設定されているかテストできます。

今のところ、意図通りに動いているようですが、

  1. 成立要素数を1としたが、ホントにこれで良いのかどうかよく分からない。

  2. 先頭の8桁数値の意味が不明。

  3. 指定フィールド名の直後に1バイトスペースを空けた後から正規表現を開始するのでホントに良いのか?とても違和感がある。

というワケで、なんだか色々不安です。

Spam Mail Killerは、私が15年近くパソコンと付き合ってきた中で出会ったソフトの中でも、かなり敷居が高い方のソフトだと思います。
「どうにかして易しくしようとUIを工夫している」のに「実は本質的な部分でかなり難しいことをやっている」という、このギャップが、「かなり敷居が高い」感を増加させているような印象です。

で、「どうにかして易しくしようとUIを工夫している」故に、本質的には同じ事のメニューがばらけてしまって、分かりづらくなってしまうのかもしれません。

「じゃぁ、どういうUIなら良いんだよ?」と問い詰められると、何とも答えようがないのも事実で(註)、その辺りは、MS AccessのUIの作りに通ずるものがありますね。開発者の苦悩が推察されます。

註:個人的には、往年のファイラ、FDやMIELや、Apacheサーバ、或いはアクセスログ解析ソフトのAnalogが持つようなコメントアウトを利用したYes/NoとかOn/Off形式とオプション番号付加のような感じのCFGファイルだと良いような気もしますが、指定が長大になると見通しが悪くなりそうだし・・・。

目次へ戻る

「Authentication-Results:」での検証結果を利用して一気にSPAM対策する

「Authentication-Results:」は、2013年1~4月頃に、日本のプロバイダで受信メールへのラベリングやフィルタリングの実装、送信メールサーバ側でのspfレコードの設定が一気に普及しました。(2006年頃には規格としては存在したけど、普及していなかったので画餅でした)。

たとえば、レジストリサービスの大手企業であるGMOから送信されたメールを見てみましょう。

2013年2月14日の時点での送信元「@gmoes.jp」は、spfレコードは追加済みでしたが、sender-idの検証は上手くいっていないようです。

Received: from ********.nifty.com (********.nifty.com [172.16.1**.***])
by **********.nifty.com (Postfix)
with ESMTP id ****************  for <****************@nifty.com>;
Thu, 14 Feb 2013 **:**:** +0900 (JST)
Authentication-Results: nifty.com; spf=pass smtp.mailfrom=**************************@gmoes.jp; sender-id=permerror header.From=*******@onamae.com; dkim=none

2013年5月15日の時点での送信元「@gmoes.jp」は、spfレコードに加えて、sender-idの検証結果も、少し向上しています。

Received: from ********.nifty.com (********.nifty.com [172.16.1**.***])
by **********.nifty.com (Postfix)
with ESMTP id **************** for <****************@nifty.com>;
Thu, 16 May 2013 **:**:** +0900 (JST)
Authentication-Results: nifty.com; spf=pass smtp.mailfrom=**************************@gmoes.jp; sender-id=softfail header.From=*******@onamae.com; dkim=none

2013年3月7日の時点で、送信元が異なる「@gmo.jp」は、両方とも対応済みでした。

Received: from ********.nifty.com (********.nifty.com [172.16.1**.***])
by **********.nifty.com (Postfix)
with ESMTP id **************** for <****************@nifty.com>;
Thu, 7 Mar 2013 **:**:** +0900 (JST)
Authentication-Results: nifty.com; spf=pass smtp.mailfrom==**************************@gmo.jp; sender-id=pass header.From==*******@@onamae.com; dkim=none

ということで、大手レジストリサービスの対応状況から見て、日本国内で「Authentication-Results:」をきちんと実装する方向性になったのは、2013年1~4月頃だと言えると思います。

では、このヘッダを利用して、@niftyメールの「迷惑メール拒否設定」をしてみましょう。

ヘッダ中での検証成功・失敗などのステータスの一覧はここにあります。

@niftyでの設定をする場合で言うと、「受信拒否条件編集画面」のヘッダーが「Received」などになっているところで「新規ヘッダー」を選択して、新規に「Authentication-Results」というヘッダー名を書き入れて設定してから、マッチ内容を以下のような感じで「拒否」指定する。

※上記は、いずれも先頭に半角スペースを1つ入れて指定している点に注意。
※実際にはdkimが指定されているケースは、ほとんどないので、ここは皆、noneになっていることが多い(2015年1月現在)。
従って、現実的には「spfレコードとsender-idの2つの組み合わせ結果」でバランスをとる処置になる。

niftyでの受信拒否条件編集画面

もっと詳細に指定したい場合、たとえば、以下のような組み合わせで、あれこれ思案する必要がある。

転送メールを多用している人、何らかのメーリングリストやメルマガを利用(投稿しないで、購読だけの場合も含む)している人は、気づかぬうちに副作用として拒否扱いになってしまうものも出てくる可能性が高いので、十分に効果を検証する必要がある。具体的には、(1)迷惑メールフォルダへの保存日数を30日に設定し、(2)迷惑メールフォルダを週に一度は見て、(3)必要なデータの取りこぼしがないかどうかを3ヶ月~半年は確認しつづけること。

目次へ戻る

NSLOOKUPでドメイン名からIPアドレス範囲を参照する

Windowsに元から入っているコマンドのうち、ネットワーク関係のコマンドには以下のようなものがあります。

これらはWindowsに入っているのでダウンロードしなくてもCMDから使えます。

では、やってみましょう。

オプションなしでドメインを指定した場合。

c:\>nslookup google.co.jp
サーバー: YourRouterName
Address: 192.168.X.X

権限のない回答:
名前: google.co.jp
Addresses: 2404:6800:4004:808::1017
74.125.235.183
74.125.235.191
74.125.235.184

c:\>

IPアドレスが一覧できました。

冒頭の「サーバー:」と「Address:」の所には、アクセス元である「あなた自身」の情報が表示されます。

「権限のない回答」ってのは、あなたには変更権限がありませんよ、ということです。そりゃそうだ。

-type=txtオプションでドメインを指定した場合

オプションはtextではなくtxtです。

c:\>nslookup -type=txt google.co.jp
サーバー: YourRouterName
Address: 192.168.X.X

権限のない回答:
google.co.jp text =

"v=spf1 -all"

google.co.jp nameserver = ns4.google.com
google.co.jp nameserver = ns2.google.com
google.co.jp nameserver = ns3.google.com
google.co.jp nameserver = ns1.google.com
ns1.google.com internet address = 216.239.32.10
ns2.google.com internet address = 216.239.34.10
ns3.google.com internet address = 216.239.36.10
ns4.google.com internet address = 216.239.38.10

c:\>

ネームサーバの一覧と、SPFレコードが表示されました。

-type=anyオプションでドメインを指定した場合

色々表示しろ、という命令ですね。MXレコードやAレコードも表示されました。

TTLはこのゾーン情報のキャッシュ有効期間を秒で指定した値です。細かいことはこの辺を見て下さい。

多くのサイトでは3600 (1 hour)と指定されていることが多いのですが、Googleの巨大なバックボーンではこんなに短く指定していても、トラフィックをさばけるのですね。

c:\>nslookup -type=any google.co.jp
サーバー: YourRouterName
Address: 192.168.X.X

権限のない回答:
google.co.jp text =

"v=spf1 -all"
google.co.jp
primary name server = ns4.google.com
responsible mail addr = dns-admin.google.com
serial = 1545801
refresh = 900 (15 mins)
retry = 900 (15 mins)
expire = 1800 (30 mins)
default TTL = 60 (1 min)
google.co.jp MX preference = 30, mail exchanger = alt2.aspmx.l.google.com
google.co.jp MX preference = 10, mail exchanger = aspmx.l.google.com
google.co.jp MX preference = 20, mail exchanger = alt1.aspmx.l.google.com
google.co.jp MX preference = 50, mail exchanger = alt4.aspmx.l.google.com
google.co.jp MX preference = 40, mail exchanger = alt3.aspmx.l.google.com
google.co.jp AAAA IPv6 address = 2404:6800:4004:807::101f
google.co.jp internet address = 173.194.126.191
google.co.jp internet address = 173.194.126.184
google.co.jp internet address = 173.194.126.183
google.co.jp nameserver = ns1.google.com
google.co.jp nameserver = ns3.google.com
google.co.jp nameserver = ns2.google.com
google.co.jp nameserver = ns4.google.com

google.co.jp nameserver = ns2.google.com
google.co.jp nameserver = ns4.google.com
google.co.jp nameserver = ns1.google.com
google.co.jp nameserver = ns3.google.com
ns1.google.com internet address = 216.239.32.10
ns2.google.com internet address = 216.239.34.10
ns3.google.com internet address = 216.239.36.10
ns4.google.com internet address = 216.239.38.10

c:\>

オプションなしでIPアドレスを指定した場合

c:\>nslookup 124.83.187.140
サーバー: YourRouterName
Address: 192.168.X.X

名前: yahoo.co.jp
Address: 124.83.187.140

NSLOOKUPのオプションとかの細かいことはこの辺を参照して下さい。

それと、nslookupはWindowsに標準で入っていますが、dighostnslookupBINDのWindows用バイナリでも入手できます。

BIND 9.10が2014年1月現在でのWindows用バイナリ最新版。BIND10は、まだソースコードしか入っていません。

BINDは、ISC(Internet Systems Consortium)からダウンロードできます。

解凍すると、インストーラが見えますが、exeファイルも丸見えで入っているので、イントラネットにDNSサーバを立てるのでなければ、敢えてインストール必要はありません。使いやすいパスが通った所に置くか、パスを通すのが面倒なら、自分がそのディレクトリ内に入って操作すれば、それで構いません。なお、BINDのNSLOOKUPの操作途中で抜けられなくなった時には、[Ctrl]+[C]で抜けられます。

目次へ戻る

自前でWHOISする仕組みをSpam Mail Killerの[ツール]に登録する

ネット上で、WHOIS検索ができるサービスってありますけど、時間帯によってはとっても重いんですよね…。

なかなか結果が返ってこないとイライラします。

で、自分のマシンからどうにかできませんかね?というお話。

まず、IPアドレス←→ネームサーバの相互変換について…

IPアドレス←→ネームサーバの相互変換は、DOSプロンプトの場合、nslookup.exe がある。
IPアドレス(202.248.236.210)からネームサーバを探す場合。

C:\>nslookup 202.248.236.210
Server: warpstar-xxxxxx
Address: 192.168.x.x

Name: dm.nifty.com
Address: 202.248.236.210


C:\>

ネームサーバ(dm.nifty.com)からIPアドレスを探す場合。

C:\>nslookup dm.nifty.com
Server: warpstar-xxxxxx
Address: 192.168.x.x

Non-authoritative answer:
Name: dm.nifty.com
Address: 202.248.236.210


D:\dos_whois>

WebサーバのIPアドレス範囲

C:\>nslookup www.nifty.com
Server: warpstar-xxxxxx
Address: 192.168.x.x

Non-authoritative answer:
Name: www.nifty.com
Addresses: 202.248.237.232, 202.248.239.42


C:\>

でも、これではカントリーコードはわかりません。

ところが、DOSにはデフォルトでwhoisコマンドやdigコマンドは無いようです。

そこで、DOSプロンプトで使えるwhoisが必要になります。

探してみますと、[ここ]にありました。(接続時間帯によっては反応がとても遅いので注意。)

2014/02/01追記→WHOISはmicrosoft.comのtechnetにあるWindows SysinternalsからWindows用バイナリを取得できます。これはUTF-8で出力してくれるナイスなWHOISなのですが、CMDでCHCP 65001とUTF-8に遷移しても、DOS窓のフォントがキチンと指定できないバグがWindowsにはあるようで、どうにもなりません。素直にCHCP 932でShift_JIS環境に戻って、リダイレクト出力で使用しましょう。

差し当たり必要なのはwhois.exe と cygwin1.dll だけですが、その他のツールも含めて「(1) Download:」にある「dig-files.zip」という一つのアーカイヴに纏められています。有り難く頂いて参りましょう。

パッケージの中にはdigもあったのですが、私の環境では ;; connection timed out; no servers could be reached と出て、上手く動きませんでした。残念。pingが通らないのと同じく、ファイヤウォールの関係かもしれませんな。

コマンドラインからの使い方は以下のような単純なもの。

C:\>whois nifty.com | more

とか、

C:\>whois 192.47.24.150 | more

 

などとすると、画面上でスクロールして読めます。

C:\>whois nifty.com > nifty.txt

とか、

C:\>whois 192.47.24.150 > whosip.txt

などとすると、結果をファイルに出力できます。

んで、これを呼び出すHTAを組んで、Spam Mail Killerの「ツール」メニューに登録しておくと便利かもしれません。

ということで、作ってみました。以下のような画面(Ver1.0)です。

#########

改訂版 Ver1.5ではASCII文字以外も表示できるようにしました。以下のような画面です。

#########

 

旧版 whois_hta Ver1.0 (2.1KB) ←リンクを右クリックしてダウンロードします。

新版 whois_hta_15.exe (101KB) ←自己解凍ファイルです。

この whois_hta だけでは動きません。

Ver1.0[ここ](2) Recommended download (a command line whois, version 4.7.11):って所にある whois.execygwin1.dll が必要です。whois_hta.htaと、先述のwhois.execygwin1.dll3つを、同一の任意のディレクトリに入れて使用します。

Ver1.5は、上記の他に、GNUソフトのDOS版jwhoisも使えるようになりました。[ここ]から "Complete package, except sources"のリンクで取得できるインストーラをダウンロードすれば入手できます。
whois_hta でDOS版jwhoisを使う設定については、同梱のReadmeファイルを読んでください。

ウィルス対策ソフトを入れている人は、最初に動かしたときだけ「接続しようとしているプログラムがあるよん。良いの かな?」というような注意が出ると思います。例えば、以下のようなヤツ。

#########

その時は「許可」しないとチャンと動きません。

whois_hta.htaをSpam Mail Killerの[ツール]に登録すると便利です。

なお、Spam Mail Killerの[ツール]→[ツールの登録]から登録するとき、最初はexeファイルしか見えないようになっているので、「全てのファイル」にしてから、whois_hta.htaを登録します。

2006/09/17追記 設計ミス?

Spam Mail Killerの[ツール]→[ツールの登録]から、直接、拡張子が「HTA」のファイルを登録すると、上手く動かない(=結果が全然返ってこない)場合もあるらしい(?)ことに気付きました。
以下の方法ならばチャンと動くようです。

  1. HTAファイルのショートカットを作る(場所はたぶん、どこでも良い)。

  2. Spam Mail Killerの[ツール]→[ツールの登録]から、(HTAファイル本体ではなく、)そのショートカットを登録指定する。

上手く動かなかった場合は、差し当たり、この方法で使用してください。

要するに、カレントディレクトリの移動をキッチリやった方が良いらしい…ということなんですが、Ver1.5の時点では、この処理を入れていません。今、ちょっと忙しいので、時間が取れたときに修正します。 し、なんだかやる気しないので放置します。

目次へ戻る

ローカルからWHOISするクライアントソフト

幾つか試してみた。

コンソール版のみ。cygwinのDLLが無くても単体で動く。
コマンドラインから whois OBJ で動作する。
Whoisサーバを指定する場合は whois OBJ -s whoisserve とする。

whois soltek.com.tw -s whois.twnic.net > output.txt
とすると、UnicodeのUTF8、BOMなしで結果が返ってきた。

whois gravity.co.kr -s whois.nic.or.kr > output.txt
とすると、韓国語EUCでの結果が返ってきた。

しかし、以下の指定は何れも通らない。
whois yahoo.co.jp -s whois.nic.ad.jp > output.txt
whois yahoo.co.jp -s whois.jprs.jp > output.txt
whois yahoo.co.jp -s whois.jp > output.txt

更に、
whois yahoo.co.jp > output.txt
も通らないのは、「.co.jp」から判別して、日本のccTLDに問い合わせる仕組みを持っているせいだろう。IPアドレスで指定すると、その範囲から判断してAPNICを引きに行くようだ。

GNUのもの。
BinariesのZIPにはlibiconv2.dll、gdbm3.dll、libintl3.dllが同梱されていないので、そのままでは動かない。
Complete package, except sourcesを入れるのが確実だが、このインストーラはC:\Program Files\GnuWin32\binなんて深いフォルダを掘るくせにパス設定はしないようだ。
C:\Program Files\GnuWin32\のbinディレクトリ丸ごとと、C:\Program Files\GnuWin32\etc\にあるjwhois.confを、同じフォルダに入れて適当な浅いディレクトリに移動して使うのが吉。

このjwhois.confのリストにはCIDRブロック範囲が書いてあって、入力を判別してどこのwhoisサーバを使うかを自動選択する仕組み。

jwhois -c jwhois.conf goo.co.kr > OUTPUT.TXT
正常な韓国語EUCで保存された。

jwhois -c jwhois.conf goo.cn > OUTPUT.TXT
正常なUTF8で保存された。

以上、とりあえずの検討結果

目次へ戻る


[Go to top page]

copyright 2006~ 谷本玲大
http://www.tanimoto.to/