.Lastupdate: Wed Aug 2 12:37:20 2000.
(このページは書いてる途中)

モバのセキュリティについてちょっと考えてみた

なんて書いてみたけど, 初歩の初歩って内容です. 多分. こういう他人に影響を及ぼすようなことは本当は分かってからじゃないと 書いてはいけないのだけれど, 自分用のメモってことで. 参考になさる方がいらっしゃったとしても, 必ず各事項について御自分で 再調査なさって下さい.

1. はじめに

PocketBSD といえど, カーネル以外は基本的に FreeBSD なわけだから, FreeBSD で考えなければならないセキュリティが当然適用されるべきでしょう. まさか root でずっと作業している方はいないでしょう. 逆にいうと FreeBSD の堅牢なセキュリティ (ちゃんとセッティングすればだろうけど) の恩恵にさずかれるわけで, 電子手帳やパーソナルコンピュータの応用である他の PIM に比べると
格が違うぜ
と言ってもいいかと思います.
連続して使わないときは, 普通にログアウトしておけば, 画面には例の

 FreeBSD (localhost)(ttyv0)        
 login:        
てのが表示されるだけなので, 万が一誰かに触られることがあったとしても, 充分
不気味な雰囲気
が醸し出されるでしょう. それだけで退いてくれる人は充分たくさんいるでしょう. 逆に興奮する人も若干いるかもしれません.

256 本的な書き方はくどいな. ええ.

さて, PocketBSD 機は持ち歩くということで, ノート型の PC と同じ問題点が あるかと思います. たとえば, モバイルギア本体を盗まれてしまったらどうしましょう. PocketBSD を知らない人に盗まれたのなら, 「あ, モバイルギアだ. ラッキー」 てなことで, CF の中身なんか無視して UNISHELL で楽しんで貰えるかも しれません. 盗まれたのは情報ではなくて機械そのものということで, まぁ痛いが痒くはないでしょう (ほんまかいな?). PocketBSD を知ってる人だったら, 私がやるとすると, そのまま CF を 別の PCMCIA スロットの使えるマシンに突っ込んで,
mount ....
と, PocketBSD の入っているパーティションをまるごとマウントすれば root で見放題ということになります. 暗号化されているファイルを覗くのは, 次の作業になりますが. ということで, 悪意を持って本体を盗まれてしまったらあきらめるしか ないのではないでしょうか? そんなに人に見られて困るようなものもないしさ.

ところで, モバイルギア II の一部の機種にある「指紋認証ユニット」 てどういうのか知らんけど, 本気になっても クラック出来ないものなのでしょうかいな? パスワード認証するときの補助手段なんだったら, CF に入れてるデータは どっちみち駄目そうなんだけど. 私が阿呆なだけ? まぁ, ポケビには関係なさそうですね. .

2. やはりネットワークか

やはり問題はネットワークを使うときではないでしょうか. ということは, わざわざ「モバのセキュリティ」と書く必要はないか. 一般に UNIX を運用する上でのセキュリティを学べばいいかと.

あれ, このページ, 終っちゃった.

2.1. メール環境

じゃなくてぇ, このページは先に紹介しましたVMと, 有名な fetchmail との相性が悪いのでどうすればいいかと試行錯誤した 結果をメモっておくページにするつもりだったのですわ. 前のページで御紹介させていただいたのは,
nemacs + vm (メールを書いたり仕訳したり)
smpost + 偽sendmail (メールを出す)
popclient (メールを受け取る)
でメール環境を作るとコンパクトに作ることが出来るということでした.
[利点]
・ MH が必要ない (ディスク(?)を節約できる)
・ 腐っても emacs の MUA である
・ 処理を重く感じるとしたら, nemacs 自体の重さだけである(充分軽い)
[欠点]
・ マニアック?

マニアック, というのは, emacs lisp の知識をある程度前提としていたり, 手作業で設定しなければならないことが多かったり, といったことです. たとえばマルチパート MIME に対応させるのは不可能ではないが 面倒だったりするので, 私のように
・ 出張先でメールを読むくらいの用途
には良い方法かと思う次第です.

ところが, 重大な欠点が見つかって, それは
メールを受信するときに平文でパスワードが流れる
というセキュリティの問題です. これは受信に POP3 を使っていると必然的 なわけでして, ethereal などの簡単なソフトを使って TCP/IP のパケット を覗くと, ぞっとします. POP3 サーバがダイアルアップ先のホストと 同一であるような ISP の場合は, パケットは外部に流れないので, それほど問題にはならないでしょう. 問題は PPP 接続を確立した上で, 外部の POP3 サーバからメールを貰って来るときにパスワードが 途中経路全てに丸見えになっていることです. たとえば, 研究室の Linux BOX から研究室の POP3 サーバにメールを貰いにいくときは, 同じネットワークにぶらさがっている人にはパスワードを見られる 心配があるだけですが (だけ, なのか?), PocketBSD 機から携帯電話経由で ISP に PPP 接続して, その上で研究室の POP3 サーバにメールを 貰いにいくときは, ISP から研究室までの途中経路に一人でも悪意を 持つ人がいれば, パスワードを盗まれることになります. ここまでの問題は, PocketBSD 特有の問題ではなくて, 自宅からダイアルアップでメールを読むときなども同様です.

2.2. APOP にする

ということで, 研究室の POP3 サーバを APOP 対応にしました. qpopper で 簡単に行えます.
% gtar zxvf qpopper3.0.2.tar.gz
% cd qpopper3.0.2
% ./configure --enable-apop=/etc/pop.auth --enable-scram=/etc/pop.auth --enable-log-login --enable-debugging --prefix=/usr
% make
# cp popper /usr/sbin
# cp popauth /usr/sbin
# chmod 4755 /usr/sbin/popauth
# /usr/sbin/popauth -init
てな感じです. /etc/inetd.conf は
pop3 stream tcp nowait root /usr/sbin/popper popper
のままで良いようですが, pop というユーザーがいなければ, それを /etc/passwd に加える必要があり, さらに APOP を使うときはパスワードを APOP 独自に管理するので,
# popauth -user USER-NAME
とやって, /etc/pop.auth にユーザーごとのパスワードを登録する必要があります. パスワードを登録しなければ, もとの POP3 プロトコルが使われます. 実際にメールの受信に APOP が使われているかどうかは, デスクトップの 普段の環境で使っている Mew + IM などの APOP 対応のメーラで確認できます.

2.3. モバを APOP にする

さて, デスクトップなどの普通の PC-UNIX 環境で APOP 対応の MUA を 使うのは簡単です. が, PocketBSD ではこの作業もちょっとばかり スリリングになります. 何故なら, 先ほどの
nemacs + vm + smpost + popclient + 偽sendmail
という構成の中で popclient が POP サーバからメールを貰ってくるわけですが, この popclient は APOP に対応していないからです. それならば, と STONE を 挟んで popclient を使い続けるのも手です. stone は, popclient の パケットを奪って, APOP に変換しちゃうみたいです. でも, この処理は stone をバックグラウンドで走らせるわけなので, メモリがただでさえ足りない PocketBSD には向いてないでしょう. もちろん, Mew + IM などの通常の方法も, IM が Perl スクリプトだということを考えても採用したくない. ということで, popclient をやめて, その後継者である fetchmail を 使うことにしました.

2.4. fetchmail でどうだ?

fetchmail は, かの有名な ESR 氏の作品で, えらい有名ですが, どうして popclient を使い続ける BSD ユーザーが多いんでしょう? 手元の Debian (potato) では, fetchmail*.deb のバイナリを突っ込んで
% man popclient
とやると, fetchmail の man が出て来たぞい !? どういうこっちゃ. fetchmail は確かに多機能です. 「デーモンモード」てのがあって, biff のように新着メールがあると教えてくれます. でも, その教えてくれ方が, デフォルトで 「ビープ音つきで, 開いている全部の端末に届いたメールの冒頭部分を表示する」 というおちゃめなもので,
■ kterm

  わっしー元気?
  阿呆阿呆メールだよよ〜ん     
みたいなのが, 全部の kterm に出て来た日には, ボスの目を盗むどころ じゃありませんがな. ということで, 最初の出会いは良くなかったのですが, 次の出会い (最近使おうと思ったこと) も良くなかった.

popclient は,
popclient -3 -k -u USER-NAME -p PASS-WORD -o $HOME/Mail/INBOX POPサーバ
で, INBOX に取り込んだメールをそのままファイルとして置いてくれます. が, fetchmail はデフォルトで 25 番の sendmail のポートに取り込んだメールを 渡すのですわ. PocketBSD に sendmail なんてない (偽sendmail ならあるけど). そこで, -m オプションで渡す MTA を指定できるということで, こんなスクリプト /usr/local/bin/getmail
#!/bin/sh
cat >> $HOME/Mail/INBOX
を書いて, それに渡せばいいか, と思いました. そのときの, ~/.fetchmailrc はこんな感じかと.
poll POP-SERVER protocol apop
      username USER-NAME password PASS-WORD
      keep
      no rewrite
      mda "/usr/local/bin/getmail"
実際に, これを試してみると, VM ではメールボックス内の一つ一つの メールの区切りをうまく処理できないようで, メールの先頭に 「From ほにゃらら」という行が 必要でした. (popclient では 「From POPmail Thu Jun 8 20:26:29 2000」 などと 書いてくれる). popclient の方が親切やんけ! でも, 確かに fetchmail は 多機能だ. どちらにしても, popclient と fetchmail は大部違うソフトだと 考えておいた方が良いかもしれません. ともかく, ということで, 実際の /usr/local/bin/getmail は
#!/bin/sh -e 

mailqueue=$HOME/Mail/INBOX
mailheader='From getmail'  

if [ -f $mailqueue ] ;then
   echo -e '\n'$mailheader >> $mailqueue
   exec cat >> $mailqueue
else
   echo $mailheader > $mailqueue         
   exec cat >> $mailqueue
fi
という感じになります. 偽sendmail のぱくりです, はい. お使いになる場合は, これを切り取って, /usr/local/bin/getmail に保存して,
# chmod uog+x /usr/local/bin/getmail
して下さい. それから ~/.fetchmailrc には (APOP の)パスワードを 書きますので
% chmod 0600 ~/.fetchmailrc
をお忘れなく.

2.5. メール環境のまとめ

これで, PPP 接続を確立したあと,
% fetchmail
で, メールを ~/Mail/INBOX に取り込みます. ~/Mail/INBOX には 以前に読んだメールが蓄積されていても構いません. で,
% nemacs -f vm
あるいは, nemacs が起動している状態で M-x vm で, 新着メールとして取り込んだメールが読める筈です. メールをフォルダに仕訳したり, 書いたメールを偽sendmail 経由で 出す方法は以前の方法と一緒です.

APOP は, パスワードは暗号化しますが, メールの本文は暗号化しません. そのため, PGP などでメールの中身を暗号化すると, より安心かもしれません. そこまでする必要がある場合は, ですが. .

まとめますと,
nemacs + vm (基盤)
smpost + 偽sendmail (メールを出す)
fetchmail + getmail (メールを受け取る)
という方法だということになります. 準備するものの数は多いように見えますが, ファイルの容量は相変わらず小さいですし, 処理も軽快です.

3. ssh

メールはめでたく解決, ということで, 次は telnet でしょうか. いや, 別に順番はなんでもいいんだけど.