トップ 最新 追記

ふたつの川うるおう日記

Seasar Conference 2008 Autumn - 9/6(SAT), Tokyo

2005-12-01 (Thu)

_ [Book] ネットワークセキュリティ Expert 3 (Amazon)

11月30日付けで技術評論社から発売されているようです。

「オープンソースで作る一元管理環境」という題で昨年Software Designに3回書かせていただいたものを最新の事情に合わせて書き直し + 1回にまとめてあります。

内容はディレクトリサービスを利用したシステムレベルのインテグレーションです。具体的には、次のものをLDAPで統合します。

本記事には書かれていませんが、これをベースにインテグレーションを進めると次のようなものも統合できます。

  • Samba (NT Domain)
  • Apache (mod_ldap)
    • BASIC, DIGEST, SVN, etc...
  • FTP
  • BIND
  • Groupware
  • WEBアプリケーション

これらがたった一つのユーザアカウントですべて利用できたら嬉しいですよね。そんなお話です。

大きな改定内容は次の通りです。

  • Fedora Core 1 -> CentOS 4.2 (= Red Hat Enterprise Linux 4.x)
    • 実際に仕事で使える環境で!
  • Courier-IMAP -> Binc IMAP
    • Courier-IMAPの最近のバージョンは、courier-authlibデーモンが動いていないとIMAPサーバとして使えなくなってしまいました。これではdaemon toolsと併用した時にせっかくIMAPサーバ本体が死活管理されていても、authlibデーモンが落ちたらIMAPサーバとして意味を成さなくなります。そこで、最近急速に開発されているBinc IMAPに乗り換えました。
  • OpenSSH-LDAP -> OpenSSH LDAP Public Key Patch
    • スキーマ定義が再定義された新しいバージョンに対応しました。
  • その他、各種サーバソフトのバージョンアップや細かな点の修正などを加えてあります。

ただし、本記事はすべてのサーバに当てはまるような一般的なものではないです(渇望されている所ももちろんある)。内容もモロ技術的な構築手順で、ノウハウ公開みたいなもんです。そんな事情も考慮して、LDAPに興味が無くても、サーバ管理者であれば1個1個単体でも興味を引けそうな話を入れてあります。もちろんLDAPに興味がある方向けにただ作るだけじゃない話題も入れてあります。次の話題に興味をそそられるものがあれば、是非お手元に1冊どうぞ。

  • 独自認証局と署名証明書の作成方法
  • メールサーバのプロトコルについて
    • SSLとTLSの違い
  • qmail周り
    • daemontoolsのinittab寄生をやめる方法
    • runファイルの自動生成方法
  • OpenLDAPサーバのSSL/TLS化
  • オブジェクトクラスのSUP、STRUCTURAL、AUXILIARYについて

本当はSambaとWEBアプリケーションまで統合し、分散・冗長性の話題まですると、WindowsやUNIX系のクライアントシステム構築されている方々向けに、もの凄いインパクトを与えられると思っているんですが、ページ数の都合などにより、ベースとなるディレクトリとメールサーバに焦点を当ててあります。

以上、興味をもたれましたら是非どうぞ。

| Bookmark:
本日のツッコミ(全3件) [ツッコミを入れる]

_ marry [Xii4Lf sd89Vy7fF7f7siDq0j]

_ darry [WoCs4F fvdf87y978sdct9bvd892hbsc]

_ jonn [grererret]


2005-12-02 (Fri)

_ [Server] Apache 2.2 もうすぐ

出るのかな? CHANGES_2.2

| Bookmark:

_ [Server] http://httpd.apache.org/

ということでリリースされたようです。

| Bookmark:

2005-12-03 (Sat)

_ [Server] Apache 2.2 モジュールいろいろ

まずは、標準状態のモジュールをチェック。

  • オプション
"./configure" \
"--prefix=/usr/local/httpd2.2" \
"--with-mpm=prefork" \
"--enable-mods-shared=all"
  • 結果
mod_actions.so mod_alias.so mod_asis.so mod_auth_basic.so mod_auth_digest.so mod_authn_anon.so mod_authn_dbd.so mod_authn_dbm.so mod_authn_default.so mod_authn_file.so mod_authz_dbm.so mod_authz_default.so mod_authz_groupfile.so mod_authz_host.so mod_authz_owner.so mod_authz_user.so mod_autoindex.so mod_cern_meta.so mod_cgi.so mod_dav.so mod_dav_fs.so mod_dbd.so mod_deflate.so mod_dir.so mod_dumpio.so mod_env.so mod_expires.so mod_ext_filter.so mod_filter.so mod_headers.so mod_ident.so mod_imagemap.so mod_include.so mod_info.so mod_log_config.so mod_log_forensic.so mod_logio.so mod_mime.so mod_mime_magic.so mod_negotiation.so mod_rewrite.so mod_setenvif.so mod_speling.so mod_status.so mod_unique_id.so mod_userdir.so mod_usertrack.so mod_version.so mod_vhost_alias.so

いろいろ足りないな。

結局2.0で使ってたもののうちから、変更点は一点だけっぽい。

"--enable-auth-ldap" \
↓
"--enable-authnz-ldap" \

そして、mod_jkの代わりとなるmod_proxy_ajpを追加かな。

"--enable-proxy" \

 (mod_proxy_ajpもこれで一緒に入る)

| Bookmark:

2005-12-04 (Sun)

_ [Server] Apache 2.2 dav_svnがエラー (解決)

2.0で動いていたリポジトリが2.2にすると次のエラーで動かなくなりました。

[error] [client ***.***.***.***] Could not fetch resource information.  [500, #0]
[error] [client ***.***.***.***] Could not open the root of the repository  [500, #22]
[error] [client ***.***.***.***] Can't set position pointer in file '/home/groups/example/svn/db/revs/1': Invalid argument  [500, #22]

解決方法を見つけられませんでした。このエラーはパーミッションが無い場合に出るみたいだけど、2.0だと動くのでそれとは別のとこが原因のようです。バージョンはSubversion 1.2.3。

PHP 5.1.1とmod_proxy_ajpは問題なさそう。

追記: 解決

原因は、SubversionのAPRのバージョンの問題でした。

"./configure" \
"--with-ssl" \
"--with-apxs=/usr/local/httpd/bin/apxs" \
"$@"

今まではこれでコンパイルしていたけど、これだとSubversionに付属しているaprとapr-utilを使うようで、それが0.9.x系なためにApache 2.2で標準となった1.xと互換性が無いためでした。

"./configure" \
"--with-ssl" \
"--with-apr=/usr/local/httpd" \
"--with-apr-util=/usr/local/httpd" \
"--with-apxs=/usr/local/httpd/bin/apxs" \
"$@"

でコンパイルし直して解決。/usr/local/httpdはApacheのインストール先(通常: /usr/local/apache2)。ここにApache 2.2に付属する1.xのaprとapr-utilがあるのでそれを使わせればOK。

| Bookmark:

_ [Server] Apache 2.2 mod_proxy_ajp

mod_proxy_ajpは超簡単。ロードバランサー使わない場合は1行でOK。

<IfModule proxy_ajp_module>
    ProxyPass /example ajp://localhost:8009/example

    # Load Balancer
    ProxyPass /balancer-example balancer://ajp-balancer
    <Proxy balancer://ajp-example>
        BalancerMember ajp://192.168.1.2:8009/example/
        BalancerMember ajp://192.168.1.3:8009/example/
    </Proxy>
</IfModule>
| Bookmark:

_ [Server] Apache 2.2 mod_authz_ldap

グループに所属するユーザ認証する場合のApache 2.0までのmod_auth_ldapとの違いは次の通り。

...
require group cn=group1,ou=Groups,dc=example,dc=org

AuthBasicProvider ldap
...
require ldap-group cn=group1,ou=Groups,dc=example,dc=org

これで全部検証完了かな。

| Bookmark:

_ [Server] Apache 2.2化

というわけで、ここもApache 2.2化。

Server: Apache/2.2.0 (Unix) mod_ssl/2.2.0 OpenSSL/0.9.7a DAV/2 PHP/5.1.1 SVN/1.2.3

あれ、SSLが古いのとリンクしとる。。。_| ̄|○

| Bookmark:
本日のツッコミ(全1件) [ツッコミを入れる]

_ ksafzqm bipqvme [nfjiv oqrxuvgdi vlarwicy jtzrpdkw agomld pvcgqorz nemovzu]


2005-12-07 (Wed)

_ [Server] Apache 2.2 -lssl -lcrypto

古いSSLライブラリにリンクされる件、解決しました。というか、A氏のお力、ありがとうm(_ _)m。

問題の箇所は、configureして生成されるhttpd-2.2.0/build/config_vars.mk内のEXTRA_LIBSとSSL_LIBSでした。Apache 2.0.xでは、SSL_LIBSというのが無くて、EXTRA_LIBSに-lssl -lcryptoも入っていたのが、2.2.xからSSL_LIBSに-lssl -lcryptoが入るようになっていて、このSSL_LIBSはmod_sslをコンパイルする時のみに使われるものの、それ以外の本体やモジュールでは参照されていませんでした。

なわけで、とりあえずの解決策としては、configureした後に下記のように修正してコンパイルすればOK。

vi build/config_vars.mk

EXTRA_LIBS = -lm
↓
EXTRA_LIBS = -lm $(SSL_LIBS)
  • 結果
Server: Apache/2.2.0 (Unix) mod_ssl/2.2.0 OpenSSL/0.9.8a DAV/2 PHP/5.1.1 SVN/1.2.3

ldd mod_ssl.soするとちゃんと新しいSSLモジュールをリンクしているのに、本体がリンクしている古いバージョンを返していたので、このServerTokenは、モジュールが情報取ってそれを本体に渡してるのではなくて、少なくともmod_sslの場合は、本体のリンクしているライブラリバージョンを返すんですね。

というわけで、trunkに修正が反映されていないようなので、Bugzillaに登録しようと思います。

ただ、今Apacheのサーバ落ちてるみたいだけどね・・・。

[追記]: 投げました。ASF Bugzilla Bug 37823: The openssl library linked is different between httpd and mod_ssl

| Bookmark:

2005-12-13 (Tue)

_ [大学] 修論

まずいー。

| Bookmark:

_ [大学] マインドマップで修論構想

一旦、sugaさんにお借りした(ありがとうございます)マインドマップ本を参考に修論の構想を描いてみたら、なんか出来た気になってきた!!電車の移動中とか暇を見つけて読んでて、実践的に使ったの初めてだけど、マインドマップかなり良いかもヽ(´ー`)ノ。

できたマインドマップを章立てにしていけばスムーズに書けそうです(日本語でなら)。英語にしながら頑張ろう。

| Bookmark:

2005-12-17 (Sat)

_ [Private] ありがとう。

すっきりした。今までいろいろありがとうm(_ _)m。

気持ちを切り替えていろいろ頑張ります! まずは修論をビシっと終わらせよー。

| Bookmark:

2005-12-18 (Sun)

_ [雑記] 同級生

すごい良いタイミングで中高の友人から電話キター(゜ー゜)。和んだ。

| Bookmark:

_ [Java] ikushipe面白い

修論始める前に初リリースということでとりあえず遊んでみました。実際ものを触ってみると楽さが良くわかりました。標準で無設定でいけるし、パッケージの構成を sample.page sample.logc sample.model とかにしてもちゃんと動くし(当たり前(汗)、URLも良い感じだし(Railsっぽい)、Seasarの現時点の管理アプリであれば、S2Strutsから置き換え可能です。標準で提供されるTaglibとValidatorが充実すれば現在Struts使ってる方も難なく乗り換え可能っぽいです。ただ、S2Strutsとシェアを取り合いそうですけど(;´ー`)。

| Bookmark:

_ [雑記] 料理

気分転換に夕食作りを手伝ってみた。本日の夕食は五目御飯と唐揚げ。味付けは任せて刻んだり、焼いたり、揚げたり。昔料理手伝うの好きでたまにやってたのが結構覚えてた。結構楽しかったのでまたやろう。 そのうちお昼用に本格的なパスタ作りたいなー。

| Bookmark:
本日のツッコミ(全1件) [ツッコミを入れる]

_ masataka_k [web.xmlのフィルタのマッピングを、同梱サンプルでは「/*」としてますが、これを「/*.html」とするとさらに..]


2005-12-22 (Thu)

_ [Java] IkushipeのURL

ちょこっと触っただけですが、細かな要望を。標準の<url-pattern>/*</url-pattern>時に、

で表示(処理)されるものが、

でも同じようにアクセスできると嬉しいです。

Apacheのmod_rewriteで小細工しても出来るんですが、フレームワーク自身でできると嬉しいなーって感じです。

| Bookmark:
本日のツッコミ(全4件) [ツッコミを入れる]

_ masataka_k [了解。]

_ jfut [ありがとうございます。]

_ masataka_k [でも、login/とloginが同じでいいのでしょうか?login/とは、login/indexとかのほうな気もしま..]

_ jfut [そうですね、無駄が多くなってしまうかもしれませんが、login/index でもアクセスできて、その省略系として、l..]


2005-12-24 (Sat)

_ [Server] 双方向MySQLレプリケーション

MySQLだとお手軽にレプリケーションが出来るわけですが、2台で双方向でも出来るんだね。ただし、非同期式なので、双方に更新できるようにする場合は使うクエリに注意が必要だけど、ロードバランサー使ってホットスタンバイで用意しておいて切り替えるとかする場合には有用っぽい。

んで、構築するのはそんなに問題無いんだけど、片方のHDDがクラッシュしたと想定してデータコピーからやり直すのにハマりました。マスタとする方も復旧する方のスレイブになっているので、そのデータを復旧するサーバにコピーした後、起動するとスレイブ用のログを探しに行ってしまうのでした。

解決方法は、スナップショット取る時にスレイブ設定を一旦、停止・リセットしてからやればOK。

  • Server1 - terminal 1
SLAVE STOP;                               -- スレイブ設定停止
RESET SLAVE;                              -- スレイブ設定リセット
FLUSH TABLES WITH READ LOCK;              -- スナップショット取るためにテーブルロック
SHOW MASTER STATUS;                       -- ログファイル名とポジション記録
  • Server1 - terminal 2
tar czf mysql.`date -I`.tar mysql         # スナップショット化
scp mysql.`date -I`.tar.gz root@server2:  # Server2へコピー
  • Server1 - terminal 1
UNLOCK TABLES;                            -- テーブルロック解除
  • Server2
    • 通常の手順でスレイブ化
CHANGE MASTER TO ... (省略)               -- Server1のスレイブに
  • Server1
    • 通常の手順でスレイブ化
CHANGE MASTER TO ... (省略)               -- Server2のスレイブに
| Bookmark:

2005-12-27 (Tue)

_ [大学] 速度計測

通常版で115.0ms、今回作ったので160.62ms(S2毎回初期化しなければ142.34ms)。1/7〜1/10にコード量減って、超微々遅くなるだけなので結構良い感じ。

| Bookmark:

2005-12-28 (Wed)

_ [大学] 速度計測 その2

更新系処理だと、通常版で54.7ms、今回作ったので218.7ms(S2毎回初期化しなければ184.4ms)。これはしょうがないかな。

| Bookmark:

_ [Java][Seasar] 久々S2Directory

久しぶりに見る(ダメすぎ。一応DTOによるSELECT・UPDATE・DELETEはできてたり。SQLの代わりになるものを作るかどうか考えて放置してたけどこのままでも良い気になってきました。CREATEはEntryから作成するのはまだないけど、属性追加ならUPDATEでできます。放置しすぎてるので、一旦alphaで出して、複数属性とかバイナリモードはその後作ろうかな。あと、パスワード変更機能(SSHA形式)は提供したいな。

とりあえず、ソースをPOJO生成器と本体に分離して整理してみたら、全然コード書いてないことがわかった(;´ー`)。

| Bookmark:

_ [Work] 年末

年末にやる仕事じゃない・・・。基本的になんでもかんでも手に負えなくなったのが回ってくるのでひどい激務に_| ̄|○。暇な時は暇なんだけどなー。

サーバ見るのはまぁいいとして、プログラム自体に問題がありすぎなので根本的な解決は僕には手におえないのが多いー(;´д⊂)。

| Bookmark:

2005-12-29 (Thu)

_ [Java][Seasar] S2Directory パスワード変更機能とバイナリ型サポート

書いたら作りたくなったので作りました。パスワードはとりあえずMD5とSHAだけで、SSHAは無いです。理由は、Commons Codecがサポートしてなかったから。Base64はJDK本体についてても良いのにな。

追記: 暗号形式追加

MD5、SMD5、SHA、SSHAを追加しました。CRYPTは実装依存らしいので放置。UNIXの場合の実装例

| Bookmark:

2005-12-30 (Fri)

_ [Java][Seasar] S2Directory 0.1 Released

S2Directory 0.1とバージョン付けて出しました。ドキュメントは用意してないので、付属するexamplesのソースコードを参考にしてください。S2Daoを使ったことあれば同じように使えばOKです。

POJOを生成するユーティリティをリリースし忘れてました。S2DirectoryGeneratorって名前にして出したけど、これ単体で動くからS2つける必要無かったりw。

| Bookmark:

_ [Java][Seasar] S2Directory バイナリ型について

バイナリ型は、java.naming.ldap.attributes.binary で定義されたものがあった場合にStringに変換して格納します。基本的にバイナリ型であっても、他のテキスト型と同じようにStringに入れれば良いです。

| Bookmark:

_ [Java][Seasar] S2Directory パスワード変更について

パスワードとは、userPassword;binary属性に保存された暗号化ハッシュのことを指します。バイナリ型同様、特別なことはしないで良いです。単純にString型のuserPasswordフィールドを持ったPOJOクラスを用意すれば、既に格納されている暗号方式で新しいパスワードを検証し、異なっている場合は、directory.diconで設定した暗号方式(無設定時SSHA)で暗号化して保存します。尚、CRYPTによる暗号方式は環境依存のようなのでサポートしていません。

パスワード変更というか、更新・削除も読み出し時同様ユーザモードで実行できます。

| Bookmark:

2005-12-31 (Sat)

_ [雑記] 風邪

昨日起きたら激しく体調不良で放送禁止状態でした。午後になって熱が39度超えたので病院行って注射打って、今朝まで寝てたらだいぶ良くなりました。

一昨日の時点で前触れ無かったのでビックリでした。とんだ年末だー。

| Bookmark:

| Return to page top | Vicuna CMS - WordPress Theme - Vicuna Ninja Style for tDiary |