【製品情報】Mobile
Beholder:簡易ネットワーク管理/調査支援ツール公開(2008/05/28)
【技術メモ】DDoS 攻撃的な
SMTP 接続の分析を掲載(2007/08/13)
【技術メモ】Beholder
を利用したサイトへのアクセス動向の分析を掲載(2007/08/08)
【お知らせ】ウェブサイトを刷新(2007/08/02)
ManticoreTM は、 SMTP 接続元のサーバの国毎にアクセス制御を行うための Postfix メールサーバ用の milter ソフトウェアです。 接続元の国の判定には、 弊社製の Kobold ライブラリを利用しています。 また、アクセス制御の管理には、 SQLite データベースを利用しています。
本 milter は、標準設定では、日本国に割り当てられた IP アドレス以外からの SMTP 接続は拒否します。 ただし、この仕様では不便ですので、 mailbox(受信メールアドレス)毎に自由にアクセス制御の規則を 設定できる設計となっています。 また、ヘッダに独自の拡張ヘッダを付与しますので、 これらの情報を元に procmail でユーザ毎に処理することも可能です。 現在、FreeBSD/i386 6.2-RELEASE 用のパッケージとしてダウンロードできます。
ダウンロードページから Manticore のパッケージを入手します。 ここでは、パッケージのファイル名を manticore-x.y.z.tbz として説明します。 x.y.z には、バージョン番号を表す数字が入ります。 Manticore の動作には、 SQLite と Postfix を必要としますので、 FreeBSD の ports などを利用して予め導入してください。 次のコマンドを実行すると Manticore が FreeBSD システムに導入されます。
# pkg_add manticore-x.y.z.tbz
Manticore を利用するための設定を /etc/rc.conf あるいは /etc/rc.conf.local ファイルに記述します。vi などのエディタを使って以下の内容を記述してください。
manticore_enable="YES"
Manticore のアクセス制御の規則を記述したデータベースは、 /usr/local/share/manticore/manticore.db として導入されます。 これを /usr/local/etc/postfix/manticore.db としてコピーしてください。 また、一緒に manticore.sql ファイルが /usr/local/share/manticore に導入されていますので、 必要であれば manticore.sql の内容を編集して manticore.db ファイルを作成しなおして、上記の場所にコピーしてください。 データベースは、次のコマンドで作成できます。
% sqlite3 manticore.db < manticore.sql
最後に、postfix の設定ファイル main.cf に次に示す一文を追加します。 main.cf は、FreeBSD の ports を利用した場合は、 /usr/local/etc/postfix ディレクトリに存在します。
smtpd_milters = unix:/tmp/.s.manticore
postfix と manticore を連動させて起動させます。 今回は、手動で実行しますが、次回からはシステムの起動時に自動的に行われます。
# /usr/local/etc/rc.d/postfix stop # /usr/local/etc/rc.d/manticore start # /usr/local/etc/rc.d/postfix start
Manticore は、SQLite データベースでアクセス制御の規則 "access_list" と mailbox(受信メールアドレス) "recipient" を管理しています。 設定は、手動による SQL 文の実行となりますが、必要であれば PHP などを用いて独自のインタフェースを実装してください。 各テーブルは次の通りです。
CREATE TABLE access_list (
no INTEGER, -- rule number (default rule = 0)
field TEXT NOT NULL, -- "cc" |"network" |"ipaddr" |"helo" |"mailfrom"
name TEXT NOT NULL, -- Country Code | Client IP | hostname | mailbox
action TEXT NOT NULL, -- "reject" | "discard" | "accept"
rcode TEXT, -- RFC 821/2821 reply code
xcode TEXT, -- RFC 1893/2034 reply code
message TEXT, -- reply message
mark TEXT, -- text for X-Manticore header field
PRIMARY KEY (no,field,name,action)
);
CREATE TABLE recipient (
email TEXT NOT NULL UNIQUE, -- E-Mail address
name TEXT, -- user name of recipient
rule_no REFERENCES access_list(no) NOT NULL,
PRIMARY KEY (email,rule_no)
);
システム標準のアクセス制御の規則は、 "access_list" の 0番(つまり、no = 0)で管理します。 標準では日本国以外の接続は、拒否する規則となっています。 実際の規則の一部を以下に示します。
INSERT INTO access_list
VALUES(0,'cc','CN','reject',554,'5.7.1','I guess your mail as spam.','spam');
また、mailbox 毎に規則を適用したい場合は、次のようにします。 ここでは、"manticore@example.com" 宛の規則を考えます。
INSERT INTO recipient
VALUES('manticore@example.com','Mail Admin',100);
INSERT INTO access_list
VALUES(100,'mailfrom','admin@example.net','accept',
NULL,NULL,NULL,'admin');
INSERT INTO access_list
VALUES(100,'cc','US','accept',NULL,NULL,NULL,'spam');
最初の行では、recipient テーブルに固有の規則番号 "100" 番を割り当てた "manticore@example.com" の mailbox を所有する "Mail Admin" を登録しています。 次の行では、Envelope-From が "admin@example.net" からのメールは受信可能であるとアクセス制御規則に登録しています。 最後の行は、US(米国)からのメールは受信するけど "spam" とみなす旨をアクセス制御規則に登録しています。 mailbox 毎の規則は、基本的に受信を許可する規則を記述します。 いわゆる、ホワイトリストとお考えください。
なお、Manticore は、次の順番でアクセス制御の規則を適用します。
また、access_list テーブルの "field" に基づく規則の評価は、以下の順番になります。
Manticore 経由のメールには必ず X-Connected-From 拡張ヘッダが付与されます。 また、アクセス制御の規則に適合してメールの受信が行われた場合は、 X-Manticore 拡張ヘッダも追加されます。
X-Connected-From: US [64.52.77.90] (ARIN) 64.52.32.0/18 X-Manticore: US [spam]
上記の例は、US(米国)をアクセス制御の規則から外していたために来た 迷惑メールに付与されたヘッダフィールドです。 X-Connected-From フィールドの内容は、 順に、国コード、接続元 IPアドレス、管理組織名、 割り当てネットワークアドレスです。 また、接続元 IPアドレスを含む Received フィールド行から解析すれば、 Received フィールドの偽造も見抜けます。 X-Manticore フィールドの情報は、先の例に示した規則を適用した場合の内容です。
たとえば、 X-Connected-From フィールドの情報を元に先の mailbox 毎への規則を追加する場合は、 次のようにします。
INSERT INTO access_list
VALUES(100,'network','64.52.32.0/18','reject',554,'5.7.1',
'I guess your mail as spam.','spam');
Manticore で規則を設定した場合は、必要なメールを拒否する可能性も考えられます。 この場合は、X-Manticore フィールドの情報を元にユーザ自身で、 procmail を用いた方法でフィルタリングの処理を行うようにするとよいでしょう。
ネットワーク用途向けコンパクトフラッシュ版 FreeBSD
IPv4アドレスから国名を検索するC言語用ライブラリ
出力モジュールを拡張可能なパケットキャプチャとネットワークツール
接続元の国毎にアクセス制御 を行うための Postfix用 milter