目次 | CGIレスキュー | 免責・問合
  Cobalt RaQ4 のレスキュー的アレンジ

カレッヂ
カレッヂ


サン・コバルト社のコバルトラック4をroot権限付きで1台まるごとレンタルしました。 このコバルトラックは81番ポートを使ってブラウザ上でサーバ管理やサイト管理が可能で、 レンタルサーバ事業をしたい方などには、容易にバーチャルドメインやユーザ設定が可能で、 メーリングリスト、DNS設定、FTPやSSLの設定など、すべての操作がパネル上で行えるものです。 さらに、システムの稼動状況やサイト別の各種ログの表示など、管理上必要な画面が用意されています。 コバルトラックを使う意味はここにあるということです。

ところが私はこの意味を十分把握していませんでした。単に便利な機能としてしか理解していませんでした。 サンマイクロシステムズのウルトラサーバのように、高性能なサーバという印象だけで使おうとしていました。 もちろん性能的には十分なものはありますが、多少のサーバ構築の知識があると、ここをこうしたい、あれを入れたいなど、カスタマイズしたいわけで、 直接シェルを操作することで、パネルが実行する設定ファイルを手動で書きかえることになり、 パネルが使えなくなることになるのです。そうなると、わざわざコバルトラックを使う必要性はないということです。

通常のCGIやSSIを使う分には、何も中身をいじることなく問題なく使えるわけで、 個人でもホスティング事業が出来る十分な装備は備わっています。しかし、私が使う目的はホスティングではなく、 (数カ所のホスティングを担当しますが、あくまでもホスティングサービスの勉強・経験のため) 自分で使うため、詳しく言えば、CGIプログラムを入れてそれを動かしたサービスの提供を行うもので、 自分で使うための必要な設定を用意しなければなりません。 コバルトラックのOSはLinuxですが、コバルト用にカスタマイズされています。 そこで、コバルトラックの利点を活かしつつ、レスキュー流にカスタマイズして使いたいということで、 四苦八苦しましたが、実現することが出来ましたので、また、自分でもあとで参照したいので、 インストールメモという形でここに残しておきたいと思います。 ここに書かれている情報はあくまでも参考例ですので、何の保障も確証もありません。 ご自身の責任においてご利用ください。 なお、ここで説明している内容は、サーバ構築やシェル操作やソースからのコンパイルなどの知識がある方を前提にしています。 そうでないと決してお勧めするものではないからです。

まず行うこと

中身をカスタマイズする前に、とりあえず最初のバーチャルホストのDNSとWebの設定を行います。 電子メール、FTP、Telnetも起動しておきます。 デフォルトの管理パネルやWebにアクセスできるようになったら、まずSSLの設定をします。 最初は管理パネルの大切な設定内容は保護されていません。 コバルトラックにはSSLを設定する画面が用意されています。 サイトの設定で最初に自己署名証明書を発行することにより、サイトの秘密キーとCSR(証明書発行要求)と証明書が生成されます。 この証明書は自己発行なので、信頼されたCA(VeriSignなどの証明書発行機関)からのものとしての評価はされませんが、 自分で使うだけですので、自分で自分を信用すればいいことで、これでサーバとブラウザ間の通信が安全になりました。 秘密キーは削除してしまうと、そのキーで発行した証明書はもう使えません。 通常は秘密キーはそのサイトで1回だけ生成し、大切に保管しておくものです。 /home/sites/home/certs/key にあるので、フロッピなどの外部メディアにバックアップしておきます。 もし外部機関のCAで証明書(CERT)を取得する場合は、表示されたCSRを機関に提出して、 CAのキーで署名してもらったCERTをそこに手入力して設定すればOKです。 CSRもCERTも /home/sites/home/certs 内にあります。他のバーチャル設定すれば、それぞれの場所の certs 内に保存されます。 後述の作業で判明したのですが、コバルトラックの秘密キーは暗号化されておらず、 もし既にCERTを取得していてこのサーバに引越ししてきた場合など、通常暗号化されたキーを持ってくれば使えるわけですが、 残念ながらコバルトラックのパネル操作では、暗号キーには対応しておらず使えません。 通常安全なWebサーバ(Apache-SSL)では、起動毎にパスフレーズを入力しますので、自動起動はされません。 本来これが安全性を高めることになるのですが、コバルトラックの秘密キーにはパスフレーズが埋め込まれていて、 これでパネル操作で自動起動をしています。一応知っておくといいでしょう。 以上の設定で、パネル操作のSSL対応が出来ました。これであとはWebや電子メールの運用は可能で、 通常はこれでいいわけです。

SSHの準備

このサーバを借りた目的で、個人情報の記録を行う必要性があることから、Telnetポートをどうしても閉めたくなりました。 折角SSLでブラウザとWebサーバ間を安全にしても、TelnetやFTPで作業してしまうと何にもならないからです。 そこでSSHをインストールすることにしました。 SSHを設置するにはOpenSSLのインストールがされていることが前提だったかな? ちょっと忘れてしまいました。既にOpenSSLはあります。 しかし、既にあるopensslでは、後述するApacheSSLのインストールで失敗するため、/usr/local/ssl に別途インストールしました。 SSHの実際のインストール方法や設定や使い方は参考書や参考サイトを見てください。SSHは安全性を高める手段です。 従って、SSHが使うディレクトリやファイルに、オーナー以外に書き込みのパーミッションが与えられていると動きません。 実はコバルトラックではumaskが002になっていて、デフォルトで生成されるディレクトリは775で、ファイルは664になっています。 これを775や644に変更しないと接続が出来ませんので注意が必要です。 パーミッション変更したはずが1つ残っていて、なかなかSSH接続できなくて発見するまで1日費やしてしまいました。 SSH接続が成功したら、管理パネルからTelnetサービスを停止させればOKです。

環境整備

空いているポートを一覧するnmapをインストールしました。 この一覧ではまだFTPになっています。あとでtftpにする予定です。

$ nmap localhost

Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Interesting ports on localhost (127.0.0.1):
Port    State       Protocol  Service
21      open        tcp        ftp FTPサービス
22      open        tcp        ssh セキュアシェル
25      open        tcp        smtp SMTP(メール送信)
53      open        tcp        domain ネームサービス
80      open        tcp        http Webサービス
81      open        tcp        hosts2-ns コバルトラック管理パネル
110     open        tcp        pop-3 POPサービス(メール受信)
111     open        tcp        sunrpc
143     open        tcp        imap2 IMAPサービス(メール受信)
443     open        tcp        https ApacheSSL
444     open        tcp        snpp

Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds

他に、シェル上でファイルの編集をする必要が各所に出てきます。 既存でemacsは入っています。終了コマンド(CTRL-X CTRL-C)さえ覚えておけばいいでしょう。 私の場合は、neが好きなので、インストールしました。

私の場合はホスティングはしないし、このサーバをメールサーバに使う目的もありません。 sendmailを使ってサーバ内部からメールする機能は使いますし、ここに入ってきたメールを .foprward で転送させる機能は使います。 POP3ポートは使わないのなら閉めておくことをお勧めします。 このポートから侵入されることもあるからです。/etc/inetd.conf でpop3とimapをコメントアウトし、 # /etc/erc.d/init.d/inet restart すれば新設定が有効になりますが、 手動でこれをやってしまうと、コバルトラックの監視システムが、意図して閉めたサービスでも、 コバルトラック側は知らないため、サービスが死んでいるというレポートを送ってきてしまいます。 かといって、管理パネルから電子メールサービス(popとimap)を停止させてしまうと、SMTPも停止してしまい、 メールの転送もCGIなどで実行したsendmailのメールも送れなくなってしまいます。 そこで、tcpwrapperで事実上使えなくしてしまうことにしました。/etc/hosts.allow に次の設定をします。 inetd.conf を見れば、pop3がqpopperを使っていることが分かります。 注意することは、自分自身(localhost 127.0.0.1)を外しておくことです。そうしないと転送やsendmailが出来ません。

in.qpopper: 127.:allow
imapd: 127.:allow

Apache

さて、ここからが私が本当に欲しいソフトのインストールと設定です。 コバルトラック4(他の機種は知らない)には、Apache 1.3.12 cobalt版が入っています。 管理パネルで設定は操作されます。基本認証用のパスワードファイルをDBMで管理できるDBM_Auth用のモジュールも用意されていませんし、 このバージョンのApacheにはちょっと不都合があり、 設定ファイルやログやバイナリなどがバラバラの場所で構成されています。そこで、使い慣れているApache 1.3.9をインストールすることにしました。 こちらで動かすWWWではCAで発行してもらう証明書を入れたSSLを使いますので、パッチを充ててApache-SSLにします。 apache_1.3.9.tar.gz とパッチファイル apache_1.3.9+ssl_1.37.tar.gz を入手しました。 opensslは /usr/local/ssl にインストールしましたので、そこを指定しています。

$ tar zxvf apache_1.3.9.tar.gz
$ cd apache_1.3.9
$ tar zxvf apache_1.3.9+ssl_1.37.tar.gz
$ patch -1 < SSLpatch
$ ./configre
$ make
# make install

$ cd src
$ ne Configuration

(略)
#KEYNOTE_BASE=/home/ben/work/KeyNote ファイルの編集
SSL_BASE=/usr
SSL_INCLUDE= -I$(SSL_BASE)/include
SSL_CFLAGS= -DAPACHE_SSL
SSL_LIB_DIR= $(SSL_BASE)/lib
SSL_LIBS= -L$(SSL_LIB_DIR) -lssl -lcrypto
SSL_APP_DIR=/usr/share
SSL_APP=/usr/bin/openssl
(略)
AddModule modules/standard/mod_auth_dbm.o コメント#を外す
(略)
ESC, c, y で保存

$ ./Configre
$ make
# cp ./httpsd /usr/loca/apache/bin/httpsd

されここからが問題です。コバルトラックのパネルを動かしたまま、すなわち、/usr/sbin/httpd は起動したまま、 /usr/loca/apache/bin/httpsd を同時に動かします。/usr/sbin/httpd が使っているポートは 80 81 443 です。 通常のWWWサービスは80番ポート、SSLは443番ポートですから、これを /usr/loca/apache/bin/httpsd で使いたいわけです。 そこで、/usr/sbin/httpd の設定ファイルである /etc/httpd/httpd.conf を編集し、この中の 80 を 8888 に、 443 を 8887 に置換します。本来このファイルはパネルから自動で書きかえられるものなので、編集する前にバックアップは必ずしておいてください。 編集が終わったら保存し、# /etc/erc.d/init.d/httpd restart で再起動します。 コバルトラックデフォルトのWebサーバは使いませんが、 アクセスしたい場合は、http://アドレス:8888/ で、SSLは https://アドレス:8887/ でアクセスします。 ユーザルートやデフォルトルートなどの確認をして /usr/loca/apache/conf/httpsd.conf を通常編集しますが、 SSL用の秘密キーやCSRは手動で作成し、自己署名証明書またはCAに料金を払ってCERTを取得し、設定します。 その設定した場所をhttpsd.confに設定します。秘密キーは3DESで暗号化し、パスフレーズは組み込まず使用しました。 私の場合、CAはThawteを使いました。 有名なVeriSignは高価ですから。 80 と 443 ポートが空いたので、# /usr/loca/apache/bin/httpsdctl start で起動します。 起動には、秘密キーのパスフレーズを聞いてきますので、入力すれば起動できます。 こちらの場合は、http://アドレス/ で、SSLは https://アドレス/ でアクセスします。 これで共存が出来たことになります。

MTA

実は、sendmailを止めてqmailを入れたかったのですが、これは通常共存は出来ないので、 コバルトラックで電子メールサービスを停止させ、使うことになります。 しかし、転送しようとすると Unable_to_forward_message:_unable_to_exec_qq_(#4.3.0). というエラーが出て、 ローカル配送が出来ないのです。 いろいろ調査 してみましたが、解決できませんでした。これはあとで課題として、デフォルトの電子メールサービスを使っています。


参考文献

ドメインキーパー OpenSSLセキュリティ管理ガイド
(秀和システム ISBN4-7980-0129-5)

OpenSSLによるSSLサーバの構築
(エーアイ出版 ISBN4-87193-811-5)

Apache Webサーバー
(インプレス ISBN4-8443-1298-7)

Linux メールサーバー構築ガイド
(エーアイ出版 ISBN4-87193-737-2)

逆引き日本語redhatLinux
(ローカス ISBN4-89814-024-6)


Powered by CGI RESCUE(R)