Mar 262006
 

Red Hat 9で運用しているサーバがあります。
いまどきmajordomoでメーリングリストを運営していたりするのですが、先ごろ発表されたsendmailの脆弱性対応でパッケージをアップデートしたら、majordomoが動かなくなってしまいました。
sendmailはFedoraLegacyプロジェクト提供のパッケージで、sendmail-8.12.8-9.90からsendmail-8.12.11-4.24.1.legacyへの更新になります。

原因は/usr/lib/sendmailがなくなったことでした。/usr/lib/sendmail.sendmailにシンボリックリンクして対応完了。

ところでSunからのパッチ提供はいつ頃になるでしょう 😕

Mar 162006
 

これを設置しているXREA.COMはFTP over SSLに対応しています。
セキュリティ確保のためにも積極的に利用したいのですが、著名なFFFTPはSSL非対応なので、対応クライアントを探すのに一苦労です。

FileZilla

GPLです。
しかしXREA.COMはFileZillaがファイルリスティングに使用するLISTコマンドを受け付けてくれないようで、使用することができません(NLSTはOK)。
FFFTPにように、クライアント側でリスティングに使うコマンドを設定できたらいいんですけどね。
詳しくはXREA SUPPORT BOARDの FTPS(FTP over SSL)についてをどうぞ。

Core FTP LE

GPLではありませんが、Freeで利用できます。
コントロール、データコネクションともにSSL対応で、XREAでも使えます。
より高機能なPro版も同サイトで配布されています。

gFTP

GPLで、GTKベースのグラフィカルなftpクライアントです。GNOMEデスクトップ環境には標準的に入っているのではないかと思います。
しかし残念ながらコントロールコネクションのみのSSL対応となります。

LFTP

キャラクタベースになりますが、結局これを使ってます。~/.lftp/rcに以下のような記述をしておけば、強制的にSSL接続にすることができます。

set ftp:ssl-force/site.example.com on
set ftp:ssl-protect-data/site.example.com on

個人的にはXREA.COMがLISTを受け付けて、FileZillaが使えるようになることを期待しています。

PGP memo

 article  Comments Off on PGP memo
Feb 262006
 

WanderlustでのPGPメールの取り扱い

メッセージに署名する リージョン指定してC-cC-mC-s
メッセージの暗号化 リージョン指定してC-cC-mC-e
メッセージの複合化 application/pgp-encryptedのパートで v
non-MIME PGP メッセージの検証 メッセージバッファでC-c:v
non-MIME PGP メッセージの複合 メッセージバッファでC-c:d

参考サイト

GnuPGの使い方

SpamFilter

 article  Comments Off on SpamFilter
Feb 262006
 

maildrop設定

bogofilterbsfiltermaildropと組み合わせて使う場合の設定内容です。

bogofilterの場合

bogofilterをmaildropと使う方法については、maildrop 利用メモ or tips?に詳しい情報があります。
bogofilterは日本語が通らないので、kakasiなどでわかち書きしてから判定させます。

~/.mailfilter設定

BOGORESULT=`nkf -ZSme | kakasi -w | bogofilter -epu \
  | reformail -X'X-Bogosity:'`

xfilter "reformail -i'${BOGORESULT}'"

if (/^X-Bogosity: Yes/:h)
  to "$MAILDIR/.Spam/"

ややこしいですが、最初にkakasiでわかち書きしたメールをbogofilterに判定させて結果のヘッダ値のみを取り出し、それをxfilterでインサートしていることになります。
xfilterでnkf、kakasi、bogofilterを指定すると、わかち書きされたメールが届いて悲しい思いをしますのでご注意ください。

bsfilterの場合

bogofilterと違ってbsfilterはそのままで日本語が通りますので、xfilterに直接指定できます。

~/.mailfilter設定

MAILDIR=".maildir"
DEFAULT="$MAILDIR/"

xfilter "bsfilter --auto-update --pipe --insert-flag --insert-probability"

if (/^X-Spam-Flag: Yes/:h)
  to "$MAILDIR/.Spam/"

WanderlustからのSpamFilter利用

Wanderlustではwl-spamという外部spamフィルタプログラムへのフロントエンドを提供されています。
Meadow上のWanderlustでもssh経由(PuTTYのplinkコマンド)で利用することができます。

以下は~/.wlでの指定です。

bogofilterの場合

bogofilterを使うときは以下のようなwrapperスクリプトを用意しておいて、プログラムに指定しています。
/usr/local/bin/bogowrapper

#!/bin/sh
nkf -ZSme | kakasi -w | bogofilter $@

~/.wl設定

(require 'wl-spam)
(setq elmo-spam-scheme 'bogofilter)
(setq elmo-spam-bogofilter-program "C:/PuTTY/PLINK.EXE")
(setq elmo-spam-bogofilter-args '("server.example.com"
                                  "/usr/local/bin/bogowrapper")
(add-to-list 'elmo-spam-header-good-alist '("X-Bogosity" . "No"))
(add-to-list 'elmo-spam-header-spam-alist '("X-Bogosity" . "Yes"))

elmo-spam-header-{good,spam}-alistは、初期値がX-Spam-FlagになっているのでbogofilterにあわせてX-Bogosityを追加しています。

bsfilterの場合

~/.wl

(require 'wl-spam)
(setq elmo-spam-scheme 'bsfilter)
(setq elmo-spam-bsfilter-shell-program "C:/PuTTY/PLINK.EXE")
(setq elmo-spam-bsfilter-shell-switch "server.example.com")
(setq elmo-spam-bsfilter-program "bsfilter")

参考

Wanderlust 日本語マニュアル – 12. Spam フィルタ
Wanderlust FAQ 日本語版 – 設定編 – SpamAssassin をリモートで使いたい

学習方法

bogofilter

Bogofilter FAQHow do I start my bogofilter training?にいくつか方法が紹介されています。

そのうちMethod 2のbogominitrain.plを使う方法についてはLinux とりわけ Debian GNU/Linuxが参考になります。

Bogofilter FAQの通りに実行してみます。

$ /usr/share/bogofilter/contrib/bogominitrain.pl \
> -fnv ~/.bogofilter mbox.good mbox.spam '-o 0.9,0,3'

Starting with this database:
                                 spam   good
.MSG_COUNT                       5535 108403

H -- Training spam message 8.
H -- Training spam message 10.
H -- Training spam message 27.

End of run #1 (in 2782s):
Read 204 ham mails and 53 spam mails.
Added 0 ham mails and 3 spam mails to the database.
                                 spam   good
.MSG_COUNT                       5538 108420

False negatives: 0
Feb 112006
 

OpenSSH LDAP Public key patch
SSHの公開鍵をOpenLDAPのディレクトリに格納するためのパッチ。
OpenSSHにはこのパッチを適用してビルド、OpenLDAP側にはスキーマ定義を追加することで、objectclass=ldapPublicKey、attribute=sshPublicKeyに公開鍵を入れておけるようになります。
結構前から存在しているパッチだと思うのですが、本家には取り込まれないんでしょうか 😕

自前CAの証明書がおかしい?

 article  Comments Off on 自前CAの証明書がおかしい?
Feb 022006
 

自前CAの証明書が期限切れだったので、Solaris上で作り直しました。
ところがFirefoxにインポートしても"Could not verify this certificate for unknown reasons."になってしまいます 😕
何が原因かわかってませんが、CSWパッケージのopensslで作成するとNG、Solaris標準(といっても/usr/sfw配下)だとOKになるようです。
それぞれのバージョンを見比べると

$ /usr/sfw/bin/openssl version
OpenSSL 0.9.7d 17 Mar 2004
$ /opt/csw/bin/openssl version
OpenSSL 0.9.8a 11 Oct 2005

実際のキー生成や署名は、opensslコマンドの直接実行ではなくCA.plを使っているのですが、それぞれのバージョンに付属するCA.plではCA作成の方法が少々異なっていました。

0.9.8aでは

print "Making CA certificate ...\n";
system ("$REQ -new -keyout " .
    "${CATOP}/private/$CAKEY -out ${CATOP}/$CAREQ");
system ("$CA -create_serial " .
    "-out ${CATOP}/$CACERT $CADAYS -batch " .
    "-keyfile ${CATOP}/private/$CAKEY -selfsign " .
    "-infiles ${CATOP}/$CAREQ ");
$RET=$?;

0.9.7aでは

print "Making CA certificate ...\n";
system ("$REQ -new -x509 -keyout " .
    "${CATOP}/private/$CAKEY -out ${CATOP}/$CACERT $DAYS");
$RET=$?;

この違いが何を意味するのか、もう少し勉強が必要です 😥

Firefox - could not verify this certificate for unknown reasons

Feb 012006
 

Linuxなんかですとpam_wheelでsuできるグループを制限したりできます。BSD系は最初からwheelグループに属してないとsuできなかったと思います。
Solarisはそんな仕組みがない(と思う)ので、古典的ですがコマンドファイルのパーミッションで特定グループに制限するようにしました。
suコマンドをみてみると

# ls -l /usr/bin/su
-r-sr-xr-x   1 root     sys        25748 Jun 17  2005 /usr/bin/su

となってますので、Otherのパーミッションを落として、sysグループ所属者のみ可、とするのが手取り早そうです。

# usermod -G sys hogehoge
# chmod o-rwx /usr/bin/su
bash-3.00# ls -l /usr/bin/su
-r-sr-x---   1 root     sys        25748 Jun 17  2005 /usr/bin/su

これでsysグループに所属しないユーザがsuしても、

$ su -
su: execute permission denied

として拒否されるようになります。

Oct 272005
 

以前も書いたと思いますが、Solaris 10からパケットフィルタリング用のソフトウェアはSunScreenではなくIP Filterになりました。
BSD系で経験済みなのでフィルタリングやNATの設定は簡単にできますが、Solarisでは「どのNICで有効化するか」する設定を忘れがちです(私だけ?)
具体的には/etc/ipf/pfil.apで、該当NICの行を有効にする必要があります。

:
#qe	-1	0	pfil
hme	-1	0	pfil
#qfe	-1	0	pfil
:

これをおこなっていないと、ipfilter起動時に

pfil not configured for firewall/NAT operation

と警告されます。

しかし、BSD系は軒並みIP FilterからPFに切り替わりつつあるというのに、なぜIP Filterになったのでしょうか。
Solaris 9ではそれまでLite版だったSunScreenが正式版になったんので、せっかく覚えたというのに 😥
なんて言ってるうちにSolaris 11ではPFになったりして 😐

Oct 132005
 

OpenSSLのSSL 2.0実装に関する脆弱性が公表されました。
Potential SSL 2.0 Rollback (CAN-2005-2969)

影響等については発見者である大岩氏のコメントで説明されています。

FirefoxやIEは既にSSLv2を無効にしていたのですが、Apacheは気にかけてなかったので、これを機会に無効にしてみました。

SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:!SSLv2:+EXP
SSLProtocol ALL -SSLv2

SSLCipherSuiteはSSLv2前の!で、SSLProtocolはSSLv2前のの部分で無効にすることになるはずなのですが、どっちが優先なのでしょう…

この状態でopensslコマンドを使いSSLv2で接続してもhandshakeで失敗するようになります。

$ openssl s_client -connect localhost:443 -ssl2
CONNECTED(00000003)
23355:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:s2_pkt.c:428:

$

SSLCipherSuiteで!SSLv2しただけだと

2580:error:1406D0B8:SSL routines:GET_SERVER_HELLO:no cipher list:s2_clnt.c:468:

となりましたので、両方書いた場合はSSLProtocol指定の方が優先されるようです。