インストールしてみての雑感.
無線 LAN を認識しないのは痛い.比較的交換が楽なので,Atheros チップの無線 LAN モジュールに交換してみる予定.
snd_hda で,音は多分出る.未確認だけど.
SD カードをマウントできた.
Web カメラもデバイスとしては認識してるみたい.
トラックパッドは当然動くだろうな.
S3, S4 は動作せず.画面を閉じても液晶は消えるけどサスペンドには移行しない.
VGA ポートはわからん.FreeBSD で外部ディスプレイを使おうとしたことが無いからなぁ.
こいつをベースに無線 LAN ブロードバンドルータ兼サーバを作成する予定.お楽しみに.
2009年10月29日木曜日
Windows XP と FreeBSD デュアルブートメモ
Windows XP インストール済み PC (DELL Inspiron Mini 12) に,FreeBSD をインストールしてデュアルブートする方法についてのメモ.
GParted Live CD でパーティションを縮小し,空き領域を作成する.
空き領域に FreeBSD をインストールする.ブートマネージャを None にすると FreeBSD だけが起動するようになる.
FreeBSD に付属しているブートマネージャをインストールするなら,インストール時に BootMgr を選択すること.インストール後にブートマネージャをインストールするなら,次のコマンドを実行すること.
Windows XP 付属のブートマネージャを使用する場合は,次の手順を踏むこと.
1. FreeBSD を起動し,USB メモリ (/dev/da0s1) に FreeBSD のネイティブルートパーティション (/dev/ad0s2) の最初のセクタをファイル化したものを保存する.
2. Windows XP インストールディスクから回復コンソールを起動し,MBR を修復する.(ここらへんがあやふや.ブートの話なんてほとんど忘れてしまったなぁ.)
3. FreeBSD の fdisk でアクティブパーティションを Windows XP の入ってるパーティションに変更する.
4. Windows XP が起動したら,コマンドプロンプトを起動し,先ほどの USB メモリ (F:) から bootsect.bsd を C ドライブにコピーする.
5. C:\boot.ini を開き,最終行に次の行を追加する.(なお,最終行のあとに空行が1行必要だった気がする.FreeBSD 7.1-RELEASE の部分は自由に命名できる.)
メモ書きなので,過信しないようにしてください.fixmbr と fixboot がよくわかっていないので,詳しい人教えてください.
追記(2009年10月31日):
fixmbr と fixboot はいらないらしい.アクティブパーティションが変更されているのが問題みたいだね.
GParted Live CD でパーティションを縮小し,空き領域を作成する.
空き領域に FreeBSD をインストールする.ブートマネージャを None にすると FreeBSD だけが起動するようになる.
FreeBSD に付属しているブートマネージャをインストールするなら,インストール時に BootMgr を選択すること.インストール後にブートマネージャをインストールするなら,次のコマンドを実行すること.
# boot0cfg -B /dev/da0
Windows XP 付属のブートマネージャを使用する場合は,次の手順を踏むこと.
1. FreeBSD を起動し,USB メモリ (/dev/da0s1) に FreeBSD のネイティブルートパーティション (/dev/ad0s2) の最初のセクタをファイル化したものを保存する.
# mount_msdosfs /dev/da0s1 /mnt
# cd /mnt
# dd if=/dev/ad0s2 of=/mnt/bootsect.bsd bs=512 count=1
2. Windows XP インストールディスクから回復コンソールを起動し,MBR を修復する.(ここらへんがあやふや.ブートの話なんてほとんど忘れてしまったなぁ.)
> fixmbr
> fixboot c:
> exit
3. FreeBSD の fdisk でアクティブパーティションを Windows XP の入ってるパーティションに変更する.
# fdisk -a
4. Windows XP が起動したら,コマンドプロンプトを起動し,先ほどの USB メモリ (F:) から bootsect.bsd を C ドライブにコピーする.
> copy F:\bootsect.bsd C:\
5. C:\boot.ini を開き,最終行に次の行を追加する.(なお,最終行のあとに空行が1行必要だった気がする.FreeBSD 7.1-RELEASE の部分は自由に命名できる.)
C:¥BOOTSECT.BSD="FreeBSD 7.1-RELEASE"
メモ書きなので,過信しないようにしてください.fixmbr と fixboot がよくわかっていないので,詳しい人教えてください.
追記(2009年10月31日):
fixmbr と fixboot はいらないらしい.アクティブパーティションが変更されているのが問題みたいだね.
2009年10月28日水曜日
LaCie 4big Quadra 修理
悪いことは重なるものだ.LaCie 4big Quadra のドライブがひとつお亡くなりになった.
そして,マウントできなくなった.RAID 5 + Spare 構成だから,自動的にリビルドがかかるから大丈夫なはずなんだが,リビルド中に電源を落としてしまったせいかも.(寝ぼけた頭で,認識しねぇなぁと思って,電源落としたんだよね.馬鹿でゴメンよ.)
まずいなってことで,Data Rescue II 体験版でサルベージできることを確認し,結局ダウンロード購入した.
重要なデータだけさくっとサルベージしたけど,全部取り出すには保存先がないってことで,あわてて外付けドライブを購入.これが届くのはだいぶ先になりそう…….
今後の運用計画.RAID5 について調べて,案外危ないらしいってことで,今度から RAID10 で使おうと考え中.そうすると Spare がなくなってしまうのだけど,RAID10 で壊れたら,今回購入予定の外付け HDD にディスクのクローンを作成してバックアップを取るという方法でいこうかなと.RAID10 で1台故障中でも使用はできるし,万が一もう1台壊れたとしても,外付け HDD へのバックアップがあるから,被害は最小限にとどめられると思ったから.それ以前に,外付け HDD へのバックアップも月1くらいで定期的に行った方が良さそうだなぁ.
バックアップ地獄だなwww
そして,マウントできなくなった.RAID 5 + Spare 構成だから,自動的にリビルドがかかるから大丈夫なはずなんだが,リビルド中に電源を落としてしまったせいかも.(寝ぼけた頭で,認識しねぇなぁと思って,電源落としたんだよね.馬鹿でゴメンよ.)
まずいなってことで,Data Rescue II 体験版でサルベージできることを確認し,結局ダウンロード購入した.
重要なデータだけさくっとサルベージしたけど,全部取り出すには保存先がないってことで,あわてて外付けドライブを購入.これが届くのはだいぶ先になりそう…….
今後の運用計画.RAID5 について調べて,案外危ないらしいってことで,今度から RAID10 で使おうと考え中.そうすると Spare がなくなってしまうのだけど,RAID10 で壊れたら,今回購入予定の外付け HDD にディスクのクローンを作成してバックアップを取るという方法でいこうかなと.RAID10 で1台故障中でも使用はできるし,万が一もう1台壊れたとしても,外付け HDD へのバックアップがあるから,被害は最小限にとどめられると思ったから.それ以前に,外付け HDD へのバックアップも月1くらいで定期的に行った方が良さそうだなぁ.
バックアップ地獄だなwww
2009年10月27日火曜日
Intel SSDSA2MH080G1C5 修理
MacBook に使ってた Intel の SSD が壊れた…….
あれ,Mail が落ちた?って思ったらフリーズして,再起動しても起動しなくなった.ディスク自体は認識していて,パーティション切り直したりもできたけど,結局 OS インストール時にファイルがコピーできなくてダメ.
いまは,MacBook に元々入っていた Fujitsu の HDD 環境に戻った.修理には2〜3週間くらいかかるらしい.新しい方の SSD で帰ってきたらいいのになぁ.
それにしても,Time Machine のお陰で復旧がめちゃくちゃ早い.Time Machine 様々だねぇ.
あれ,Mail が落ちた?って思ったらフリーズして,再起動しても起動しなくなった.ディスク自体は認識していて,パーティション切り直したりもできたけど,結局 OS インストール時にファイルがコピーできなくてダメ.
いまは,MacBook に元々入っていた Fujitsu の HDD 環境に戻った.修理には2〜3週間くらいかかるらしい.新しい方の SSD で帰ってきたらいいのになぁ.
それにしても,Time Machine のお陰で復旧がめちゃくちゃ早い.Time Machine 様々だねぇ.
2009年10月23日金曜日
FreeBSD でサーバ構築 #17 UW IMAP 編
林檎生活100: FreeBSD でサーバ構築 #16 SMTP over SSL: TLS による暗号化通信の続き.今回は,UW IMAP で IMAP サーバを構築する.
UW IMAP は,ワシントン大学で開発された IMAP サーバで,リファレンス実装的な立場のものである.伝統的な UNIX のメール環境(FreeBSD のメール環境も含む.)に親和性が高く,導入が容易であるので,今回の IMAP サーバに選択した.とりあえず,IMAP over SSL が使用でき,IMAP の基本的な機能を持っているので十分だろう.ただ,ほかの IMAP サーバよりもメールボックスへのアクセスに時間がかかる(どちらかというと,サーバではなくメールボックス形式の問題.)ので,大量のメールを捌く必要があるのであれば,次回以降に解説する Cyrus IMAP を使用した方がいいかもしれない.なお,UW IMAP の持つ機能の詳細は,Web サイトや参考文献を参照してほしい.
UW IMAP の動作はとてもシンプルだ.メールクライアントが IMAP サーバへのアクセスを試みると inetd (TCP/UDP ポートを監視し,そのポートにパケットが届くと対応づけられたサーバを起動するデーモン.)によって起動され,メールボックスを操作したり,情報を返したりするように動作する.また,サーバが起動された際に,ローカルのメールボックス (/var/mail) からユーザのメールボックス (~/mbox) にメールを移動させる動作をする.(ただし,~/mbox が存在しない場合は,ローカルのメールボックスを IMAP サーバのメールボックスと見なす.)これによって,サーバ上でメールを mail コマンドで読んでも,メールクライアントで UW IMAP を経由してメールを読んでも,ユーザのメールボックスにメールが保持される.ゆえに,自然に IMAP サーバを導入することができる.
インストール方法は,次のとおりである.
1. Ports からインストールする.
SSL を使用しない場合は,SSL_AND_PLAINTEXT にチェックを入れること.デフォルトで,SSL を使用しない認証をはじくようにコンパイルされるため.


2. inetd の設定ファイル /etc/inetd.conf の該当行を次のように有効化する.
3. /etc/rc.conf に次の行を追加し, inetd を有効化する.
4. inetd を起動する.
5. 証明書を配置する.
鍵と証明書を同じファイルに記述して,/usr/local/certs に imapd.pem というファイル名で配置するだけ.(場所とファイル名は固定みたい.)
6. メールボックスのスケルトンを作っておく.
これは,新規ユーザを追加したときに自動的に mbox がホームディレクトリに作成されるようにするためだ.UW IMAP は,ホームディレクトリに mbox があると /var/mail からメールを取得してくるという仕様になっていて,mbox が無い場合は /var/mail のメールボックスを直接参照する.デフォルトのままユーザが使用すると,/var/mail 以下にメールが蓄積され,論理パーティションを切っている /var を圧迫することになりかねないので,このようなスケルトンを作成する.(まぁ,ssh や ftp でログインされて,mbox を消されたら,結局 /var/mail にメールがたまるわけだけどね.)
これで設定完了♪
外部から接続する場合は,TCP の143番に対してのポートマッピングを設定しよう.また,認証については,PAM を使用しているのだが,/etc/pam.d/imap の内容のままで問題ないので省略した.
次回は,Cyrus IMAP の設定について説明する.Cyrus IMAP には,振り回されたからなぁ.(自分のミスでwww)
参考文献:
University of Washington: IMAP Information Center
IMAP
UW IMAP は,ワシントン大学で開発された IMAP サーバで,リファレンス実装的な立場のものである.伝統的な UNIX のメール環境(FreeBSD のメール環境も含む.)に親和性が高く,導入が容易であるので,今回の IMAP サーバに選択した.とりあえず,IMAP over SSL が使用でき,IMAP の基本的な機能を持っているので十分だろう.ただ,ほかの IMAP サーバよりもメールボックスへのアクセスに時間がかかる(どちらかというと,サーバではなくメールボックス形式の問題.)ので,大量のメールを捌く必要があるのであれば,次回以降に解説する Cyrus IMAP を使用した方がいいかもしれない.なお,UW IMAP の持つ機能の詳細は,Web サイトや参考文献を参照してほしい.
UW IMAP の動作はとてもシンプルだ.メールクライアントが IMAP サーバへのアクセスを試みると inetd (TCP/UDP ポートを監視し,そのポートにパケットが届くと対応づけられたサーバを起動するデーモン.)によって起動され,メールボックスを操作したり,情報を返したりするように動作する.また,サーバが起動された際に,ローカルのメールボックス (/var/mail) からユーザのメールボックス (~/mbox) にメールを移動させる動作をする.(ただし,~/mbox が存在しない場合は,ローカルのメールボックスを IMAP サーバのメールボックスと見なす.)これによって,サーバ上でメールを mail コマンドで読んでも,メールクライアントで UW IMAP を経由してメールを読んでも,ユーザのメールボックスにメールが保持される.ゆえに,自然に IMAP サーバを導入することができる.
インストール方法は,次のとおりである.
1. Ports からインストールする.
SSL を使用しない場合は,SSL_AND_PLAINTEXT にチェックを入れること.デフォルトで,SSL を使用しない認証をはじくようにコンパイルされるため.
# cd /usr/ports/mail/imap-uw
# make install clean


2. inetd の設定ファイル /etc/inetd.conf の該当行を次のように有効化する.
# example entry for the optional imap4 server
#
imap4 stream tcp nowait root /usr/local/libexec/imapd imapd(コメントを外す.)
3. /etc/rc.conf に次の行を追加し, inetd を有効化する.
inetd_enable="YES"
4. inetd を起動する.
# /etc/rc.d/inetd start
5. 証明書を配置する.
# cd /etc/mail/certs
# mkdir /usr/local/certs
# umask 066
# cat key.pem cert.pem > /usr/local/certs/imapd.pem
# umask 022
鍵と証明書を同じファイルに記述して,/usr/local/certs に imapd.pem というファイル名で配置するだけ.(場所とファイル名は固定みたい.)
6. メールボックスのスケルトンを作っておく.
# touch /usr/share/skel/mbox
これは,新規ユーザを追加したときに自動的に mbox がホームディレクトリに作成されるようにするためだ.UW IMAP は,ホームディレクトリに mbox があると /var/mail からメールを取得してくるという仕様になっていて,mbox が無い場合は /var/mail のメールボックスを直接参照する.デフォルトのままユーザが使用すると,/var/mail 以下にメールが蓄積され,論理パーティションを切っている /var を圧迫することになりかねないので,このようなスケルトンを作成する.(まぁ,ssh や ftp でログインされて,mbox を消されたら,結局 /var/mail にメールがたまるわけだけどね.)
これで設定完了♪
外部から接続する場合は,TCP の143番に対してのポートマッピングを設定しよう.また,認証については,PAM を使用しているのだが,/etc/pam.d/imap の内容のままで問題ないので省略した.
次回は,Cyrus IMAP の設定について説明する.Cyrus IMAP には,振り回されたからなぁ.(自分のミスでwww)
参考文献:
University of Washington: IMAP Information Center
IMAP
2009年10月15日木曜日
FreeBSD でサーバ構築 #16 SMTP over SSL: TLS による暗号化通信
林檎生活100: FreeBSD でサーバ構築 #15 SMTP Authentication (SMTP-AUTH)の続き.前回は,認証のための機能を Sendmail に導入した.今回は,その認証のための通信を暗号化するために SMTP over SSL を導入する.
SMTP over SSL とは,SMTP セッションを SSL によって暗号化するものだ.(SSL と TLS については参考文献を参照してほしい.)これによって,メールクライアントからメールサーバへの通信は暗号化される.認証を行い,メールを受け渡すプロセスまでだ.しかし,メールサーバから次のメールサーバに転送される場合の通信の暗号化は保証されない.つまり,メールが最終配送先に届くまでの経路すべてが暗号化されるわけではないことに注意しよう.ここで暗号化の対象としているのは,メールの内容ではなく,認証時のユーザ名とパスワードなのだ.(メール本体の暗号化の問題は,全然別になるってことだね.)
さて,さっそくその機能を導入しよう.幸運なことに,この機能はすでに FreeBSD の Sendmail に入っているので,SSL 証明書を配置し,設定を変更するだけでいい.(生成については,林檎生活100: OpenSSL で自己署名証明書を作成するか林檎生活100: Namecheap で格安 SSL 証明書を取得する方法を参考にしてほしい.)
1. /etc/mail/certs ディレクトリを作成する.
2. /etc/mail/certs ディレクトリに証明書を配置(もしくは生成)し,アクセス権を次のように変更する.(秘密鍵のアクセス権に注意.証明書へのシンボリックリンクととなるハッシュのファイル名は,対象の証明書によって異なる.ちょっとここらへんの用途がわかってない.)
・自己署名証明書の場合
lrwxr-xr-x 1 root wheel 8 Oct 15 05:06 807f5ca7.0 -> cert.pem
-rw-r--r-- 1 root wheel 1172 Oct 13 05:41 cert.pem
-rw------- 1 root wheel 887 Oct 13 05:41 key.pem
・ルート CA による署名済み SSL 証明書の場合
lrwxr-xr-x 1 root wheel 10 Oct 15 05:05 594f1775.0 -> cacert.pem
-rw-r--r-- 1 root wheel 1162 Oct 13 05:41 cacert.pem
-rw-r--r-- 1 root wheel 1172 Oct 13 05:41 cert.pem
-rw------- 1 root wheel 887 Oct 13 05:41 key.pem
3. /etc/mail/lucifer.legna.org.mc(自分の環境に合わせた設定ファイルを変更すること.)を変更する.
3.1. まず,非暗号化通信時に認証を行わないように設定する.これによって,暗号化されていない状態での認証を防ぎ,ユーザ名やパスワードの漏洩を防止する.
3.2. 使用する SSL 証明書など,SMTP over SSL に関わるオプションを設定する.(上から順に,証明書ディレクトリへのパス,CA 証明書へのパス,サーバ証明書へのパス,サーバ秘密鍵へのパスである,最後のオプションは,クライアント検証を行わないというオプションである.クライアント認証うんぬんの話は割愛する.)
・自己署名証明書の場合
・ルート CA による署名済み SSL 証明書の場合
4. 設定ファイルを更新し,Sendmail を再起動する.
これで,SMTP over SSL による通信ができるようになったはずである.メールクライアントの設定を変更して,TLS による接続を試みてみるといい.また,暗号化していない状態での認証が棄却されることを確かめよう.
また,telnet で 250-STARTTLS が表示されることで設定されているか確認できる.STARTTLS というのは,暗号化通信を開始するコマンド名である.
正常に動作しないときは,/var/log/maillog を確認してみよう.エラーメッセージがファイルの最後あたりに出ていると思う.
以上.こんな感じで Sendmail を設定して,メールクライアントから見た場合の送信用サーバが完成した♪
WAN 側から接続する際には,TCP 25 番に対してポートマッピングを設定しよう.
次回は,メールクライアントから見た受信用サーバを構築の段階に入る.いまや自分用サーバで POP サーバを使う必要性は感じないので,IMAP サーバを対象とする.メジャーな IMAP サーバはいくつかあるが,この Blog では UW IMAP と Cyrus IMAP を取り上げる.導入な簡単な UW IMAP を先にさっくり構築してみて,その後で Cyrus-IMAP の構築をやる.少ない人数で大量のメールをさばかないのであれば,前者の UW IMAP で十分だと思う.UNIX のメールシステムとの親和性も高いので,すごく自然に導入できる.しかし,人数が多かったり大量のメールをさばかなければならないのであれば,後者の Cyrus IMAP を使用した方がいいだろう.クウォータを利用したい場合もこっちになる.
とりあえず,それぞれのサーバの特徴などは次回以降説明する.お楽しみに〜.
参考文献:
Wikipedia: Secure Sockets Layer
RFC2487: SMTP Service Extension for Secure SMTP over TLS
sendmail 第3版〈VOLUME1〉運用編
sendmail 第3版〈VOLUME2〉設定編
sendmailクックブック―設定と運用のためのレシピ集
FreeBSD Handbook
追記(2009年10月15日):
クライアント検証・認証についての補足.
今回の設定で,メールクライアントがサーバを検証することが可能になり,接続先メールサーバが保証されることになる.(自己署名の場合はダメだけどねw)しかし,メールサーバはクライアントを認証を通った誰かとしか感知しない.よって,サーバがクライアントを検証したい場合に,クライアント検証が必要になる.しかしながら,証明書を持って接続してくるクライアントを検証するという設定が今回のサーバに必要ないと思ったので,自動的に検証しようとする動作を無効化するオプションを付加した.(また,僕の理解が浅いので説明したくなかったというのもあるw)
クライアント認証というのは,クライアントの証明書をもとに認証する方法.これも使い方によっては便利だと思うのだが,僕が必要としなかったのと,その説明をきちんとできなさそうだったので説明していない.
加えて,今回設定したサーバがメールを転送する際には,別のサーバから見てクライアントになる.その際に証明書を呈示する設定もできるのだが,省略してある.これについても必要性を感じなかったからである.
今回の設定は,あくまでユーザ名とパスワードによる認証を暗号化することが目的なので,ほかの観点について抜けていて申し訳ない.
SMTP over SSL とは,SMTP セッションを SSL によって暗号化するものだ.(SSL と TLS については参考文献を参照してほしい.)これによって,メールクライアントからメールサーバへの通信は暗号化される.認証を行い,メールを受け渡すプロセスまでだ.しかし,メールサーバから次のメールサーバに転送される場合の通信の暗号化は保証されない.つまり,メールが最終配送先に届くまでの経路すべてが暗号化されるわけではないことに注意しよう.ここで暗号化の対象としているのは,メールの内容ではなく,認証時のユーザ名とパスワードなのだ.(メール本体の暗号化の問題は,全然別になるってことだね.)
さて,さっそくその機能を導入しよう.幸運なことに,この機能はすでに FreeBSD の Sendmail に入っているので,SSL 証明書を配置し,設定を変更するだけでいい.(生成については,林檎生活100: OpenSSL で自己署名証明書を作成するか林檎生活100: Namecheap で格安 SSL 証明書を取得する方法を参考にしてほしい.)
1. /etc/mail/certs ディレクトリを作成する.
# mkdir /etc/mail/certs
2. /etc/mail/certs ディレクトリに証明書を配置(もしくは生成)し,アクセス権を次のように変更する.(秘密鍵のアクセス権に注意.証明書へのシンボリックリンクととなるハッシュのファイル名は,対象の証明書によって異なる.ちょっとここらへんの用途がわかってない.)
・自己署名証明書の場合
lrwxr-xr-x 1 root wheel 8 Oct 15 05:06 807f5ca7.0 -> cert.pem
-rw-r--r-- 1 root wheel 1172 Oct 13 05:41 cert.pem
-rw------- 1 root wheel 887 Oct 13 05:41 key.pem
・ルート CA による署名済み SSL 証明書の場合
lrwxr-xr-x 1 root wheel 10 Oct 15 05:05 594f1775.0 -> cacert.pem
-rw-r--r-- 1 root wheel 1162 Oct 13 05:41 cacert.pem
-rw-r--r-- 1 root wheel 1172 Oct 13 05:41 cert.pem
-rw------- 1 root wheel 887 Oct 13 05:41 key.pem
3. /etc/mail/lucifer.legna.org.mc(自分の環境に合わせた設定ファイルを変更すること.)を変更する.
3.1. まず,非暗号化通信時に認証を行わないように設定する.これによって,暗号化されていない状態での認証を防ぎ,ユーザ名やパスワードの漏洩を防止する.
dnl Set SASL options
TRUST_AUTH_MECH(`PLAIN')
define(`confAUTH_MECHANISMS', `PLAIN')
define(`confAUTH_OPTIONS', `p')(この行を追加する.)
3.2. 使用する SSL 証明書など,SMTP over SSL に関わるオプションを設定する.(上から順に,証明書ディレクトリへのパス,CA 証明書へのパス,サーバ証明書へのパス,サーバ秘密鍵へのパスである,最後のオプションは,クライアント検証を行わないというオプションである.クライアント認証うんぬんの話は割愛する.)
・自己署名証明書の場合
dnl SSL Options
define(`confCACERT_PATH',`/etc/mail/certs')
define(`confCACERT',`/etc/mail/certs/cert.pem')
define(`confSERVER_CERT',`/etc/mail/certs/cert.pem')
define(`confSERVER_KEY',`/etc/mail/certs/key.pem')
define(`confTLS_SRV_OPTIONS', `V')
・ルート CA による署名済み SSL 証明書の場合
dnl SSL Options
define(`confCACERT_PATH',`/etc/mail/certs')
define(`confCACERT',`/etc/mail/certs/cacert.pem')
define(`confSERVER_CERT',`/etc/mail/certs/cert.pem')
define(`confSERVER_KEY',`/etc/mail/certs/key.pem')
define(`confTLS_SRV_OPTIONS', `V')
4. 設定ファイルを更新し,Sendmail を再起動する.
# cd /etc/mail
# make install
# /etc/rc.d/sendmail restart
これで,SMTP over SSL による通信ができるようになったはずである.メールクライアントの設定を変更して,TLS による接続を試みてみるといい.また,暗号化していない状態での認証が棄却されることを確かめよう.
また,telnet で 250-STARTTLS が表示されることで設定されているか確認できる.STARTTLS というのは,暗号化通信を開始するコマンド名である.
正常に動作しないときは,/var/log/maillog を確認してみよう.エラーメッセージがファイルの最後あたりに出ていると思う.
以上.こんな感じで Sendmail を設定して,メールクライアントから見た場合の送信用サーバが完成した♪
WAN 側から接続する際には,TCP 25 番に対してポートマッピングを設定しよう.
次回は,メールクライアントから見た受信用サーバを構築の段階に入る.いまや自分用サーバで POP サーバを使う必要性は感じないので,IMAP サーバを対象とする.メジャーな IMAP サーバはいくつかあるが,この Blog では UW IMAP と Cyrus IMAP を取り上げる.導入な簡単な UW IMAP を先にさっくり構築してみて,その後で Cyrus-IMAP の構築をやる.少ない人数で大量のメールをさばかないのであれば,前者の UW IMAP で十分だと思う.UNIX のメールシステムとの親和性も高いので,すごく自然に導入できる.しかし,人数が多かったり大量のメールをさばかなければならないのであれば,後者の Cyrus IMAP を使用した方がいいだろう.クウォータを利用したい場合もこっちになる.
とりあえず,それぞれのサーバの特徴などは次回以降説明する.お楽しみに〜.
参考文献:
Wikipedia: Secure Sockets Layer
RFC2487: SMTP Service Extension for Secure SMTP over TLS
sendmail 第3版〈VOLUME1〉運用編
sendmail 第3版〈VOLUME2〉設定編
sendmailクックブック―設定と運用のためのレシピ集
FreeBSD Handbook
追記(2009年10月15日):
クライアント検証・認証についての補足.
今回の設定で,メールクライアントがサーバを検証することが可能になり,接続先メールサーバが保証されることになる.(自己署名の場合はダメだけどねw)しかし,メールサーバはクライアントを認証を通った誰かとしか感知しない.よって,サーバがクライアントを検証したい場合に,クライアント検証が必要になる.しかしながら,証明書を持って接続してくるクライアントを検証するという設定が今回のサーバに必要ないと思ったので,自動的に検証しようとする動作を無効化するオプションを付加した.(また,僕の理解が浅いので説明したくなかったというのもあるw)
クライアント認証というのは,クライアントの証明書をもとに認証する方法.これも使い方によっては便利だと思うのだが,僕が必要としなかったのと,その説明をきちんとできなさそうだったので説明していない.
加えて,今回設定したサーバがメールを転送する際には,別のサーバから見てクライアントになる.その際に証明書を呈示する設定もできるのだが,省略してある.これについても必要性を感じなかったからである.
今回の設定は,あくまでユーザ名とパスワードによる認証を暗号化することが目的なので,ほかの観点について抜けていて申し訳ない.
2009年10月12日月曜日
FreeBSD でサーバ構築 #A SSH と公開鍵認証
SSH の設定について,直接コンピュータを触れる環境であれば,特に SSH を使ってリモートからログインする必要はないわけだが,ファイルをコピーする必要があったり,外出先からログインする必要があったりするときには便利なので,その設定を解説する.
リモートからパスワードログインをするだけであれば,次のように設定するだけで,好きな SSH クライアントからアクセスできるようになる.
1. /etc/rc.conf に次の行を追加する.
2. 再起動するか,次のコマンドを実行する.
これだけだ.たとえば,Mac OS X のターミナルからログインしたい場合は,次のようなコマンドを打ち,プロンプトに従ってパスワードを入力するだけでいい.
はじめての接続のときに,yes/no のプロンプトがでるが,yes と答えておこう.これは,接続先ホストを known_hosts に加えるかという質問で,known_hosts に記述されているホストに再度接続しようとした場合に,そのホストが前回接続したホストと同一かということをチェックするための仕組みになっている.(同じホスト名で接続しても,実際のコンピュータが同一でなく,ログインパスワードを盗まれるようなダミーサーバに接続しているということが考えられるので,このような仕組みでチェックしている.)
しかしながら,このような方法だとパスワードが暗号化されているとはいえ,パスワードを入力するという作業が伴うため,ヒューマンエラーによってパスワードを露呈してしまう可能性がある.(たとえば,ログイン名としてパスワードを入力してしまうようなミス.)したがって,極力パスワードを入力せずにログインするようにしたい.
SSH には,そのためのログイン方法のひとつとして,公開鍵認証が含まれている.公開鍵認証についての説明はこのエントリ内で解説できる内容ではないので割愛する.また,SSH が公開鍵認証をどのように使っているかについても割愛する.詳細が知りたい方は,参考文献を読んでほしい.
ひとつ言えることは,公開鍵認証によって安全性が高まるということだ.公開鍵認証時に必要なのは,鍵となるファイルとその鍵を手元で複合するパスフレーズ(まあ,パスワードみたいなものだ.)となる.パスワードひとつだけよりも安全そうな気がすると思うw鍵もパスフレーズもネットワーク上を流れない認証方式なのでより安全ということだ.鍵を誰かに奪われても,パスフレーズがないと使えないしね.
では,公開鍵認証をできるように設定してみよう.前述の設定を行って,パスワード認証ができる状態であるとする.公開鍵認証の設定は,Mac OS X のターミナルから行う.
1. 鍵を生成する.
2. 鍵を配置する.鍵の保存用ディレクトリ(ssh の known_hosts なども入る.)を接続先ホストに作成し,そこに authorized_keys というファイルを作成し,公開鍵の情報を追記している.
これで完了♪公開鍵認証で接続するときもコマンドは同じで,公開鍵認証が自動的に使用されるようになる.
WAN からのアクセスも許容する場合は,公開鍵認証のみを使用するように設定しよう./etc/ssh/sshd_config の次の行を変更する.
なんで,PasswordAuthentication no の追記でないのかということが気になると思う.不勉強なので正確性に欠けるかもしれないが,簡単に説明しよう.まず PasswordAuthentication は FreeBSD 7.1-RELEASE の SSH のデフォルト設定は no になっているので,パスワード認証はされない.しかし,ChallengeResponseAuthentication のデフォルト設定は yes になっている.さらに,チャレンジレスポンス認証は,UsePAM が yes になっているため PAM を使用するようになっているので,PAM のデフォルト設定上パスワード認証になるということだ.
あと,WAN からのアクセスを行う際に,間にルータがある場合は TCP 22番のポートマッピングを設定することを忘れないようにしよう.
以上,ざっと簡単に SSH の解説を行った.ちょっと適当に流してしまったので,ちゃんと勉強したい人はもっときちんと説明している Web サイトを参照したり,参考文献にあげた本を参照してね.
あー,そういえば,Leopard からキーチェーンと連動する ssh-agent っぽい機能が付いたみたいで,かなり便利♪裏側がどーなってるか知らないから,ちょっとわからない部分があってとまどうけどね…….
参考文献:
実用SSH 第2版―セキュアシェル徹底活用ガイド
ARAKI notes: ssh-copy-idがmacにないの不便だなあ,と一瞬おもったのでcopyしてくる
リモートからパスワードログインをするだけであれば,次のように設定するだけで,好きな SSH クライアントからアクセスできるようになる.
1. /etc/rc.conf に次の行を追加する.
sshd_enable="YES"
2. 再起動するか,次のコマンドを実行する.
# /etc/rc.d/sshd start
これだけだ.たとえば,Mac OS X のターミナルからログインしたい場合は,次のようなコマンドを打ち,プロンプトに従ってパスワードを入力するだけでいい.
$ ssh takuya@192.168.1.254(ユーザ名@ホスト名の形になる.)
はじめての接続のときに,yes/no のプロンプトがでるが,yes と答えておこう.これは,接続先ホストを known_hosts に加えるかという質問で,known_hosts に記述されているホストに再度接続しようとした場合に,そのホストが前回接続したホストと同一かということをチェックするための仕組みになっている.(同じホスト名で接続しても,実際のコンピュータが同一でなく,ログインパスワードを盗まれるようなダミーサーバに接続しているということが考えられるので,このような仕組みでチェックしている.)
しかしながら,このような方法だとパスワードが暗号化されているとはいえ,パスワードを入力するという作業が伴うため,ヒューマンエラーによってパスワードを露呈してしまう可能性がある.(たとえば,ログイン名としてパスワードを入力してしまうようなミス.)したがって,極力パスワードを入力せずにログインするようにしたい.
SSH には,そのためのログイン方法のひとつとして,公開鍵認証が含まれている.公開鍵認証についての説明はこのエントリ内で解説できる内容ではないので割愛する.また,SSH が公開鍵認証をどのように使っているかについても割愛する.詳細が知りたい方は,参考文献を読んでほしい.
ひとつ言えることは,公開鍵認証によって安全性が高まるということだ.公開鍵認証時に必要なのは,鍵となるファイルとその鍵を手元で複合するパスフレーズ(まあ,パスワードみたいなものだ.)となる.パスワードひとつだけよりも安全そうな気がすると思うw鍵もパスフレーズもネットワーク上を流れない認証方式なのでより安全ということだ.鍵を誰かに奪われても,パスフレーズがないと使えないしね.
では,公開鍵認証をできるように設定してみよう.前述の設定を行って,パスワード認証ができる状態であるとする.公開鍵認証の設定は,Mac OS X のターミナルから行う.
1. 鍵を生成する.
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/takuya/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
2. 鍵を配置する.鍵の保存用ディレクトリ(ssh の known_hosts なども入る.)を接続先ホストに作成し,そこに authorized_keys というファイルを作成し,公開鍵の情報を追記している.
$ ssh takuya@192.168.1.254 'mkdir .ssh'
$ cat .ssh/id_rsa.pub | ssh takuya@192.168.1.254 'cat >> .ssh/authorized_keys'
これで完了♪公開鍵認証で接続するときもコマンドは同じで,公開鍵認証が自動的に使用されるようになる.
$ ssh takuya@192.168.1.254
WAN からのアクセスも許容する場合は,公開鍵認証のみを使用するように設定しよう./etc/ssh/sshd_config の次の行を変更する.
# Change to no to disable PAM authentication
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no(この行を追記する.)
なんで,PasswordAuthentication no の追記でないのかということが気になると思う.不勉強なので正確性に欠けるかもしれないが,簡単に説明しよう.まず PasswordAuthentication は FreeBSD 7.1-RELEASE の SSH のデフォルト設定は no になっているので,パスワード認証はされない.しかし,ChallengeResponseAuthentication のデフォルト設定は yes になっている.さらに,チャレンジレスポンス認証は,UsePAM が yes になっているため PAM を使用するようになっているので,PAM のデフォルト設定上パスワード認証になるということだ.
あと,WAN からのアクセスを行う際に,間にルータがある場合は TCP 22番のポートマッピングを設定することを忘れないようにしよう.
以上,ざっと簡単に SSH の解説を行った.ちょっと適当に流してしまったので,ちゃんと勉強したい人はもっときちんと説明している Web サイトを参照したり,参考文献にあげた本を参照してね.
あー,そういえば,Leopard からキーチェーンと連動する ssh-agent っぽい機能が付いたみたいで,かなり便利♪裏側がどーなってるか知らないから,ちょっとわからない部分があってとまどうけどね…….
参考文献:
実用SSH 第2版―セキュアシェル徹底活用ガイド
ARAKI notes: ssh-copy-idがmacにないの不便だなあ,と一瞬おもったのでcopyしてくる
登録:
投稿 (Atom)