カテゴリー

アクセスカウンター


since 1996/06/14

Count per Day

  • 36今日の訪問者数:
  • 47昨日の訪問者数:
  • 743月別訪問者数:
  • 1現在オンライン中の人数:

テープ装置を使ってみる

USB接続できる外付けDATドライブを入手したので、試してみました。

[…]

CentOSサーバセットアップメモ

CentOSでオペレーションをしてるときによく調べる事をメモっておきます。細かい説明は極力省いてます。

[…]

MT

このサイトの見直しをしようと考え初めて早2年くらい経ちましたがw、今はMovableTypeでの再構築を検討してます。 さすがにCGIを1から書くには労力が半端無いのと、たとえばスマホ対応など、日々の進化に自作で追っついて行くには厳しいかなという心境。 で、いろいろ検討した結果、MovableTypeを試していますが、結構大変ですね。 まず、インストール後に入っているサンプルブログなどが全く使い物になりません。というよりか、独自のカスタマイズ機能を活用するのが前提の構成なので、サンプルを応用なんて生やさしい世界では無い感じですね。 さらにカスタマイズ方法ですが、テンプレートページにコードを埋め込むと、それを元に参照用HTMLを作ってくれる仕組みですが、このテンプレートページを理解するのに大変です。 機能がわかりづらい訳では無いですが(むしろよくできてる)、どういう使い方を想定して作られているか(要するにMTの文化のようなもの)を知るまでが大変です。 ってことで、本を三冊くらい買ってやっとその辺が見えてきた本がありました。 Amazon:4883376958 この本は、MTの基本的なことしか書いていません。これを読むだけで複雑なサイトを構築することはできませんが、MTってこういう使い方をするのかってのがわかります。 ある程度HTMLやCSSの基礎知識があれば、1/3くらい読むだけで、だいたいMTの文化的なものが見えてきますね。 とは言え、MTはブログツールでは無く、CMSでありフレームワークだってことがわかりました。だから、基本を理解した上でサイト構成や運営を設計して、構築する必要があります。 逆にこれが理解できれば、非常に柔軟なサイト構築をすることができる感じですね。たとえばスマホや携帯対応サイトとかもプラグイン無しで作れるんじゃないでしょうか。 当然、ブログ構築に必要な機能や、ユーザ・権限の考え方がしっかり組み込まれているので、その辺が手軽に扱えるところはよいですね。 まとめると、前提知識としてHTML/CSSの知識が必要。複雑なページを作る場合はWebサイトの設計も必要(やらないと、後戻りが発生して大変)、そしてこの本を読んで文化を理解することで、やっとスタートラインという流れですね。 あとは、リファレンス系の本や応用方法を参考書などで調べれば、使いこなせるようになるんじゃないかなと思います。 とりあえず、まだ第一歩を踏み込んだレベルなので、もう少し勉強しないとという感じです。

各種CMSの検証

 自分のサイトを維持するのに、わざわざCGIを作るのは維持が大変なので、ツールでまかなえないか検証中。 検証しているツールが多すぎて訳がわからなくなってきているので、メモで残してみる。 一応条件としては、 主にblog、掲示板機能があり、画像もそれなりに楽に管理出来ること。 携帯やスマホ対応もしてるとなお良い。 グループ単位でアカウント管理が出来ること。 できればPerlがいい。ただ、ここは妥協してphp+mysqlでもいいや。 ツールの維持管理も容易であること。 という感じ。 以下の評価はだいぶ忘れている箇所もあるので、その点は「?」にしている。あと、評価の基準については、検証して無くても公式で出来ると記載がある・あるいは出来ているものについては○か△を付けてる。 機能が無い・あっても使いづらいのは×にしている。 geeklog 検証Ver1.7.? URLhttp://www.geeklog.jp/ 動作環境PHP+mysql 機能blog…△、掲示板…○、画像管理…△ 携帯対応○ アカウントグループ○ 管理の容易さ? 追加モジュールの充実さ△ 基本機能としては申し分無い気がするが、何故か公式サイトの解説にMediaWikiを使ってる。そういう機能は無いのか? blogが、blogというかニュース投稿だった。あと、テンプレ次第なんだろうけど、blogが見づらい。 joomla! 検証Ver1.5.22 URLhttp://joomla.jp/ 動作環境PHP+mysql 機能blog…○、掲示板…○、画像管理…? 携帯対応? アカウントグループ△ 管理の容易さ× 追加モジュールの充実さ○?  とても良い感じだったが、アカウントグループ管理が独特で使いづらかった。  あと、PHPの要求Verが5.2で、CentOSの標準Verが5.0。joomla!はPHP5.0でも動くし、CentOSもPHP5.2に上げることは可能だけど、管理が面倒になる。 Xoops、Xoops cube legacy、ImpressCMS 検証VerImpressCMS 1.2 URLhttp://www.impresscms.me/ 動作環境PHP+mysql 機能blog…○、掲示板…○、画像管理…○? 携帯対応? アカウントグループ○ 管理の容易さ× 追加モジュールの充実さ?  ツールとしては良くできているようだが、Xoops、Xoops cube legacy、ImpressCMSのそれぞれのコミュニティの関係性がわからないと運用出来ないというのが直感的な感想。 それぞれの間でモジュールの互換性がある物・無い物があるようだが、どれを使っていいのかわからない。少なくともImpressCMSのサイトに掲載されているImpressCMS用モジュールの掲載は多くないので、そういうのを自力で調べて運用しなければならないというのは面倒。 あと、相変わらずXoops、XoopsJP、Xoops cubeという複数のコミュニティが乱立しているので、部外者にとってはわかりづらい。 Movable Type 検証Ver5 URLhttp://www.sixapart.jp/movabletype/ […]

Linuxからメール転送

 家のサーバを仮想化してから、管理用のメールの扱いが面倒になりました。 解決しなければならない課題は2つ。 Linuxは管理用のメールを「root」へ送ろうとする。ドメインは自分のホスト名が補完されるが、仮想化したホストそれぞれが自分にメールをしてもしょうがないので、これをサーバ1カ所に集約させなければならない。 うちの環境はルーティングの問題で、WAN側の自分自身のサーバへ到達できない。  解決策はいくつかあるけど、この2つを同時に且つ手間のかからない変更で対応したいので、DNSでやっつけてみる。 メーラは、メールアドレスのドメイン名と、DNSのMXレコードから探して配送する。つまり、仮想サーバ毎のMXレコードを定義してやればそのサーバへメールを転送できる。 LAN側のPCからDNSを引くときは、WAN側のIPでは無く、LAN側のIPを引くようにする。 これで、DNSの設定変更のみで行ける。ちなみに、メールの転送先はsendmailなどの場合「/etc/mail/submit.cf」にSMTPサーバを指定できるので、それでも可能。 今回はWAN側のIPに到達できない問題を孕んでいる関係もあるので、submit.cfには手をつけない。 MXレコードを追加して、メールを転送する  この方法は当然自分でDNSを立ててないと対応できない。 対応方法は簡単で、正引き設定ファイルにMXレコードを追加するだけ。 ただし、サーバ分の追加が必要。 送信元をvm.sample.com、送信先をsmtp.sample.comとした場合は、以下のような感じになる。 vm.sample.com. IN MX 10 smtp.sample.com. これで、たとえば「root@vm.sample.com」宛のメールはsmtp.sample.comサーバへ送られる。  ちなみに送信先(受信側)サーバでも「root@vm.sample.com」を自分自身宛と認識させなければならない。 たとえば、postfixの場合は、main.cfのmydestinationにvm.sample.comを追加することで解決する。 LAN側の名前引きの挙動を変える  これは、bindの機能でできる。bind9のどこかのバージョンからできるようになったみたい(この機能は今回初めて使ったので、いつから使えるものだったのかはよくわからない)。 まず、ACLの定義。LAN側サブネットが「192.168.0.0」の場合。 acl "allowed-internal-hosts" { 192.168.0.0/24; 127.0.0.1; }; 次にviewの定義。 view "internal" { match-clients { allowed-internal-hosts; }; allow-query { allowed-internal-hosts; }; …(略) } これで、LAN側ホストからDNSへ問い合わせが来た場合は、このinternal viewを参照するようになる。 ちなみに、WANからのアクセスについては、以下のような定義にしておけばよいみたい。 view "external" { match-clients { any; }; […]

LAMPの設定

LAMPとは、Linux+Apache+Mysql+PHPというWebアプリケーションの実行環境の通称ですね。PをPerlやPythonと読む場合もありますが、元々の言葉の由来はPHPなんじゃないでしょうか。

で、個人的に、MySQL+PHP環境を好んで使うことが無かったので、あまり設定方法をしりません。しかし、いろいろ検証する度に設定方法を調べるのもアレなので、メモを残しておきます。

なお、環境としてはCentOSやFedoraなどの、yum、chkconfig、serviceコマンドが使える環境を想定しています。

Linux+Apache

あまりここでは書くことは無いでしょうが、検証環境を作る時はだいたいWebのDocument Rootを使わないので、その設定の書き方です。httpd.confに追記します。

Webアプリケーションのパスを「/path/to/web_apps」とし、Webからのアクセスを「http://example.com/web_apps/」としたい場合の書き方。

Alias /web_apps /path/to/web_apps <Directory /path/to/web_apps> Order allow,deny Allow from all #AllowOverride All </Directory>

.htaccessなどを有効にしたい場合は、「AllowOverride All」のコメントを外します。

最近、apacheやphpをyumなどでインストールすると、phpが既に有効になっていますので、その辺は省略します。

PHP

yumでの一般的なインストール方法の例です。

yum install php php-mbstring php-gd php-mysql

関係モジュールも含めてインストールします。

php php本体です。 php-mbstring マルチバイトを扱うモジュール。日本語環境を利用する場合によく要求されます。 php-gd 画像加工用のモジュールですね。WebでPhotoAlbumを使うときに要求されることが多いかな。 php-mysql PHPからMySQLへアクセスする為のモジュール。

PHPが正しく動作しているかは、アクセス先のディレクトリに、拡張子がphp(index.phpとか)のファイルを作成し、以下のような内容にします。

<?php phpinfo();?>

ブラウザからこのファイルへアクセスして、PHPのパラメータが出てくれば動作確認OKです。

ちなみに、確認後は速やかにファイルを消しましょう。

MySQL

まず、yumからのインストール&デーモンの起動方法。

yum install mysql-server chkconfig mysqld on service mysqld […]

RAID操作

 なんかいろいろやらかしてしまったので、コマンドを調べたついでに備忘録として残しておきます・・・ 操作を誤るとデータがすっ飛ぶのでご注意ください。 パーテーションの作成 「/dev/vda」ディスク上のパーテーションを切るときコマンド。 fdisk /dev/vda 使い方は省略。RAIDパーテーションを作る時は領域タイプをfd(Linux raid 自動検出)を使う。 RAID1(ミラー)の作成。  たとえば、/dev/vda1と/dev/vdb1でミラーを組んで、/dev/md0を作る方法。 mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/vda1 /dev/vdb1 あるいは mdadm –create /dev/md0 –l1 –n2 /dev/vda1 /dev/vdb1 ※オプションを省略形で書いているだけで、どちらも同じ意味 作成後、マウントする前にファイルシステムを作成して空っぽのディスクにする(ファイルシステムがext3の場合)。 mkfs.ext3 /dev/md0 なお、ミラーディスクを作るとまずそれぞれのディスクが同期を始めます。これが終わらない状態でサーバを落としたりすると起動しなくなったりするので注意です。同期状態の確認方法は以下のコマンド。 cat /proc/mdstat RAIDを解除する  当然、mountを解除してから実行します。/(root)や/varなどはmount解除がそう簡単にはできないので注意(やり方は割愛します)。 以下、/dev/vda1・/dev/vdb1でRAIDパーテーションの/dev/md0ができている想定。 mdadm –misc –stop /dev/md0 この後、「cat /proc/mdstat」で確認すると「/dev/md0」が見えなくなってます。 mdadm –misc –zero-superblock /dev/vda1 /dev/vdb1

[…]

dovecotとSquirrelMailをいじる

 今までずっとpostfix+pop3(apop+pop before SMTP)環境で運用をしてきたけど、さすがに時代遅れ感が出てきた(コンパイルが通るツールが無くなってきた)ので、最新環境を検証してみることにした。 とりあえず方針を決める まず関係するツール。 SMTP:postfix(Maildir環境) これは今までと変更せず。S25Rによる不正メールの除外もそのまま。受信したメールはmboxよりも安全性の高いMaildirで実装。また、pop before SMTPに変わって、SMTP Auth(SMTP認証)を使う。 pop3:dovecot 今までのteapopから変更。 MUA:SquirrelMail 時々DNSの応答がおかしかったり、そもそも家でしかメールを見れない状態から脱したいのでWebメールを使う。 自分だけのメールサーバでは無いので、いろいろポリシーも決めておく。 ユーザはサーバのUNIXユーザ。 これは非常に悩んだけど、それほど大規模ユーザではないので、LDAPとかを採用するよりも汎用性が高く、シンプル。 サーバにメールを溜め込まない IMAPは使いたくない使わない 機能が限定的になるし、IMAP長期保管に向かない(と個人的に感じてる)。 メールデータの蓄積に責任を持ちたくない Webメールはあくまで一時利用目的。 一時的なリモート閲覧用 セキュリティは堅く 以前はまだ歴史が浅くて対応を見合わせてきたプロトコルがたくさんあったけど、いつの間にか一般的になってきてるんだなぁ…と実感。 POP3S OutlookとBecky!が対応していることを確認したので採用。 SMTP認証 これも最近では一般的になってきた。 SPAM対策 存在しないユーザへのメールはUser Unknownで返す(当たり前なことなんだけど、qmailはできなかったのでw)。 当たり前だけど第三者転送は許可しない。 S25R。 当たり前だが、ユーザは/sbin/nologin設定 Maildirでデータの保守性を維持 Webメールは、個別FQDN運用でhttps。BASIC認証も併用するかも。Digest認証は携帯からだとダメな場合が多いので悩む。 メールユーザの作成はWebからさせない。 postfixをSMTP authに対応させる。  基本的なpostfixの設定方法は省きます。S25Rとかもどこかで書いてたと思うので略。 /etc/postfix/main.cfあたりに以下の行を追加。 # SMTP auth 2010.07.19 add smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = […]

geeklogメモ

CentOSにgeeklog 1.6.1を突っ込むためのメモ。 どうでもいいが、VMWareを起動させるとWindows7のComputer Browserとかが再起動を繰り返してパフォーマンスがすごく落ちる。たぶんVMのネット設定のbrige接続あたりを変更すれば直ると思うが… php関連のインストール yum install php php-cli php-common php-mbstring php-mcrypt php-mysql php-pear 特に、php-mbstringはデフォでインストールされない?入れて無くても中途半端に動ごくが掲示板を使い始めるとmb_ereg_replace関数あたりで死んで画面が真っ白になる。 mysql関連のインストール /etc/my.iniに追加。 old_passwords=1 character-set-server = utf8 collation-server = utf8_general_ci init-connect=SET NAMES utf8 utf8_general_ciかの確認。 mysql -u root -p mysql> show character set like ‘utf8’; データベースとユーザの作成。 mysql> create database geeklog; mysql> grant all on geeklog.* to geeklog@localhost identified by ‘パスワード’; geeklogのインストール http://server/geeklog/admin/install […]

pop3サーバメモ

注意ここのページは書きかけで放置されています(汗 qmail系のpop3サーバ等については、「qmailでメールサーバ」を参考にしてください。  

dracのインストール

POP before SMTPができるらしい。  

入手方法

http://mail.cc.umanitoba.ca/drac/からダウンロード この辺↓ ftp://ftp.cc.umanitoba.ca/src/drac.tar.Z  

インストール手順 コンパイル準備とコンパイル

※解答するときにサブディレクトリを作らないので、事前に作っておかないとイタイ目にあう。

$ mkdir drac $ cd drac $ wget ftp://ftp.cc.umanitoba.ca/src/drac.tar.Z $ tar zxvf drac.tar.Z $ vi Makefile

FedoraCore5の場合は、Makefileの設定を以下のような感じにする。 ※ソースは後半の設定ほど優先なので、既存の「MANADM = 1m」の後ろあたりにコピペしてもオッケー。

INSTALL = install EBIN = /usr/local/sbin MAN = /usr/local/man/man DEFS = -DSOCK_RPC […]

LinuxでSELinuxやGUIとか

 前のブログに書いたサーバリプレースの状況。 SELinux  使うのやめた。 情報が少なすぎるし、中途半端な理解で使うのも危険なので。 使わなくてもセキュリティツールは他にもあるしね。 っていうか、検索すると「SELinuxを無効にする方法」ばっかりヒットするんですが(^^; GUI Fedoraを使ってるんですが、VNC接続にいろいろ問題があります。 VNC上からroot権限が必要なGUIツールを起動すると以下のようなログをはき出してGUIツールが起動しません(GUI上にはメッセージも出ない)。 Aug 30 09:30:56 XXX userhelper[4323]: pam_timestamp(system-config-bind:auth): timestamp file `/var/run/sudo/XXXX/unknown:root’ is only 193 seconds old, allowing access to system-config-bind for user XXXX Aug 30 09:30:56 XXX userhelper[4323]: pam_timestamp(system-config-bind:session): updated timestamp file `/var/run/sudo/XXXX/unknown:root’ Aug 30 09:30:56 XXX userhelper[4325]: running ‘/usr/sbin/system-config-bind ‘ with root privileges on behalf of ‘XXXX’ […]

apacheのVerUp

 ソースからコンパイルしてインストールする際に以外と困るのが、前回のコンパイルオプションを忘れてしまう事だったりします。 apache2.2系なら、前回コンパイルしたディレクトリの以下のファイルあたりに残ってます。 config.log config.nice まぁ参考まで…

postfixでメールサーバ

 ここのページはpostfixについて詳しく書こうと思ったけど、面倒になって来たので、他のネタは他のブログを見てください。

postfixとは Amazon:4756140513

 ここはpostfixというMTAの設定の備忘録です。MTAとはつまりメールサーバで、インターネット上でメールの受送信の役割を担います(この辺の詳しい説明は省略)。

紹介している本は私が参考にした本です(既にVerが古いかも・・・汗)。 なぜpostfixか

 メールサーバの代名詞から、セキュリティ問題の代名詞のような扱いにされて早数年のsendmailですが、それだけではなく設定の困難さから、今の世の中でも敬遠されている存在には代わりありません。  過去にqmailの調査と利用もしましたが、qmailは最新バージョン(1.03)が出てからかれこれ8年経過しており、ユーザグループのサポートで何とか生きながらえていると言う状態になっています。「シンプル且つ安全」と言われたqmailですが、既に1.03から追加機能とセキュリティ問題でパッチだらけになってしまい、もやは素人の手出しができない代物になりつつあります。

 そんな中で注目されているメールサーバの一つとして、postfixがあります。性能・設定の容易さなどが特徴でしょう。注目されていること=セキュリティの問題も発見されやすいというのもありますが、公式サイトを見てもわかるとおり、頻繁にバージョンアップされていることから、信頼できるものに見えます。

ソースコードとrpm

 このサイトは、以前からソースコートからコンパイルしでデーモンの構築を推奨してきました。これは、なるべく最新版を入手し運用すべきと考えたからです。 しかし、昨今はバイナリコードによる提供も良くなってきましたので、ここではソースコードからのコンパイルは解説しません(私ももう実際にコンパイルしてないし)。  FedoraCoreであれば(っていうかそれ以外は知らない)、「yum update postfix」などのコマンドで気軽にアップデートできるので、管理上それでよいと思います。

 そんな訳で、ここではFedoraCore5のバイナリベースで解説しています。それ以外の方はパスなどを読み替えてください。

postfixとDNS

 postfixに関わらず、インターネット上で稼働するメールサーバは通常DNSを参照しています。何を参照しているかというと、相手先ドメインのメールサーバがどこにあるかというのを参照しています。  たとえば、yahoo.co.jpドメインであれば、以下のコマンドで調べられます。

# dig yahoo.co.jp mx | grep MX | grep -v '^;' yahoo.co.jp.            384     IN      MX      10 mx2.mail.yahoo.co.jp. yahoo.co.jp.            384     IN      MX      10 mx3.mail.yahoo.co.jp. yahoo.co.jp.            384     IN      MX      10 mx4.mail.yahoo.co.jp. yahoo.co.jp.            […]

qmailでメールサーバ

はじめに Amazon:4756140017  ここでは、qmailを利用したメールサーバの構築方法を解説します。主な内容はqmailによるSMTPサーバの構築と、各種ツールの使い方、popサーバの構築方法です。  qmailはsendmailに比べるとシンプルだと言われますが、動くようになるまでは結構大変です(それこそsendmailとあまり変わりません)。  ちなみに私は「qmail メールサーバの構築」という本で勉強しました。qmailの公式サイトも見づらいので意外と役立つ情報が多いです。 このコンテンツでのソフトのバージョン  特に表記が無ければ、以下のバージョンに関して解説します。新しいバージョンが出てても設定方法はさほど変わらないと思いますので、なるべく最新のものを利用するように心がけてください。 ※一部、インストール中にソースファイルの内容を書き換えているところがありますが、それはバージョンに依存するかも。 qmail:qmail-1.03.tar.gz checkpassword:checkpassword-0.90.tar.gz ucspi-tcp:ucspi-tcp-0.88.tar.gz daemontools:daemontools-0.76.tar.gz relay-ctrl:relay-ctrl-3.1.1.tar.gz qpopper:qpopper4.0.4.tar.gz RedHat9でのエラーについて(2004/02/08)  RedHat9でqmailを構築する際に、コンパイル中に以下のようなエラーが出ます。 : undefined reference to `errno’ collect2: ld はステータス 1 で終了しました make: *** auto-str エラー 1 ※qmail、checkpassword、ucspi-tcp、qmail-vida、daemontoolsでエラーが出ることを確認しましたが、基本的にdjb製のソフトは同様のエラーが発生するそうです。  これを解決するにはソースコードの修正が必要ですが、ftp://moni.csi.hu/pub/qmail/glibc-2.3.1/にパッチがありますので、それを適用することにより解決することも可能です。 ※以下の操作はすべてそれぞれのコンパイル前のソースが存在していることが前提です。 ※qmailの場合 $ wget ftp://moni.csi.hu/pub/qmail/glibc-2.3.1/qmail-1.03.errno.patch $ patch < qmail-1.03.errno.patch ※checkpasswordの場合 $ wget ftp://moni.csi.hu/pub/qmail/glibc-2.3.1/checkpassword-0.90.errno.patch $ patch < checkpassword-0.90.errno.patch ※ucspi-tcp場合 $ wget ftp://moni.csi.hu/pub/qmail/glibc-2.3.1/ucspi-tcp-0.88.errno.patch […]

apache2.0系

Apacheの概要

 Apacheとはwwwサーバソフトウエアで、主にWebサイトを閲覧する為の機能が実装されています。同じようなwwwサーバで有名なものにMicrosoftのIIS(Internet Infomation Server)がありますが(有名な理由は機能よりも、、、以下略)、それらの前身はスイスの欧州粒子物理学研究所(CERN)や、アメリカのNCSAのWebサーバが有名です。5年くらい前にCGIをいじってた人なら、この辺のことを知ってるかと思いますが、今となってはもはや昔のこととなってしまいました。  ApacheはアメリカのNCSAベースのWebサーバにパッチをあてたことから始まり、一説によると名前の由来も「a pach」をもじってるそうです。  歴史はともかくとして、今や世界No1のシェアであり、ほとんどのOSを網羅している上にタダで利用出来るところがなんとも喜ばしいソフトウエアです。 NetCraftによるシェア情報

前置き

 ここでの解説は特に明記されていない限り、apache2.0.43(httpd-2.0.43.tar.gz)を使用しています。バージョンの違いによる差異はほとんど無いアプリケーションですが、頻繁にバージョンアップ(主にセキュリティ関連)されていますので、なるべく最新のものを使用してください。

インストール

 ここでは基本的なインストール方法を解説します。apacheはさまざまなモジュールを使えます。各モジュールの説明は後半の章で解説しますが、コンパイルの時点で記述しなければならない設定もあります。コンパイルの時点で書く内容は可能な限りここの章で解説しますが、他の機能を入れたい場合に再コンパイルが必要になる場合があることに注意してください。

ダウンロード&インストール

 デフォルトインストール方法です。  まずはapacheをダウンロードします。apacheはApache Software Foundation(ASF:http://www.apache.org/)からダウンロードできます。現在はapache1.3.xx系とapache2.0.xx系をダウンロードできます。ここでは、apache2.0を落とします。 例)$ wget http://www.apache.org/dist/httpd/httpd-2.0.43.tar.gz  ダウンロードが終わったら展開します。

$ tar zxvf httpd-2.0.43.tar.gz $ cd httpd-2.0.43.tar.gz

 次に環境設定→コンパイル→インストールをします。大分大きいので時間がかかります。なお、インストール先は「/usr/local/apache2」なので、既にapache1.3系を運用していても上書きはされません(ポート番号が重複しなければ同時起動も可能です)。 ※実際は「./configure」でモジュール等の追加が必要になる場合があります。詳細は次の項で説明します。

$ ./configure $ make $ su # make install

 これでインストールは完了です。

モジュールとDSO

[…]

OBS構築記録

注意 このページはもう更新していませんが、いろいろ役立ちそうなので残しておきます。 ※当時のOBSはかなりCPUパワーが無かったので苦労していますが、最近のは普通のサーバとたいして違わないようです。

OpenBlockSとは?

OpenBlockSはぷらっとホームが発売しているサーバです。サーバに必要な機能以外を可能な限り省き、小型化されたサーバです。ネットワークポートx2個、RS-232Cインターフェース、コンパクトフラッシュのインターフェース、IDEのインターフェース(ノート用の小さいコネクタ)のみの入出力機器を備えています。 ※現在は複数の機種がある 購入するには直接行くか、通販しかありません(OEMで似たようなものはあるみたいだけど)。 ディスプレイは?キーボードは?と疑問に持つかもしれませんが、すべてネットワーク経由でリモート操作することを前提としているため、そんなものありません。 OSはLinux(Linuxがわからない人はココを読んでもつまんないと思うのであえて書きませんが、まぁパーソナルUNIXです)が搭載されています。 ネットワークの設定を間違えると二度と接続不能になり、使えなくなるのか?というとそうではなく、OSはフラッシュROM(プレステのメモリのようなもの)に記録されてて、起動するたびにRAMに展開されます。RAMは電源を切るたびに消去されるので、再起動するたびに元の設定に戻るという仕組みです。当然、変更した設定はフラッシュROMに書き込むこともできますが、これの容量は小さいので、複雑なことはできません。

OpenBlockSの可能性

OpenBlockSで何ができるか?というところですが、主に以下の目的で使うのが良いんじゃないかな?と思います。

ルータ/Firewallとして Linuxの勉強用。 簡易公開サーバ構築用。

ルータとしての用途ですが、はっきり言ってこれにはお勧めしません。OpenBlockS自体は約4万円しますが、一般のブロードバンドルータなどは1万円〜2万円程度で買えます。Firewallとしては意味があるかもしれません。細かいアクセス制御や、アクセスのロギングなどに使えます。ただ、こういう使い方はイマイチ面白くないかもしれません。勉強にはなりますが、、、。 Linuxの勉強用としては非常に有効だと思います。最近のLinuxディストリビューションはイロイロなものが入っていて、さらに自動設定が出来ますので勉強になりません。構築のときはいいですが、障害が出たときなどの問題が出ます。その反面、OpenBlockSは勉強になります。基本的に一般的なディストリビューションは使えません。ぷらっとホームのサイトに非常にシンプルなカーネルイメージがあるのでそれを入手する必要があります。さらに、サーバなどを構築するには、ソースを入手してコンパイルするか、有志によるrpmを使うしかありません。構築するのは非常に厳しいですが、構築が終わったころには一人前のLinux技術者としての第一歩を踏めるでしょう。 簡易公開サーバとしても有効です。特に消費電源量の少なさと、稼動部分が無いことによる静音性が魅力的です。 あえて、「簡易」と書いたのはやはりCPUパワーとメモリ不足の問題でどうしても重いです。イロイロなサービスを稼動させると、ちょっと実用が厳しくなります。 ※HDDを増設する場合、2.5inchなので、そこだけちょっとうるさいです。 いづれにしろ、自宅で公開サーバを構築するにはもってこいの筐体といえるでしょう。

HDD購入

上のOpenBlockSとは?に書きましたけど、これ単体ではたいしたことができません。増設記憶装置としてコンパクトフラッシュメモリ(この文を執筆時の相場で256MByte→2万円位かな)か、2.5インチHDDが接続できます。 HDDは専用オプションとして販売されてますが、当然それを無視して秋葉原でIBMの5GByteHDDを購入し接続しました。はっきり言って差すだけなので簡単です。 無視したらメーカ保証がなくなるだろう?と思いますが、HDDを接続してサーバ代わりに使用すること自体が保証外なので、眼中無しです。っていうか、こういう使い方しないとOpenBlockSの真価が発揮できないしね。 ちなみに容量的にはコンパクトフラッシュで十分なんですが、実は*あること*をしたいがために大容量にしています。何をしたいかはまた後ほど書くとして、、、。 HDDを増設時はかなり注意が必要です。触ると壊れそうな個所がかなりあるので、カスタマエンジニア(パソコンの修理屋)を経験した私でもちょっと怖かったくらいです。

OpenBlockSSの可能性

OpenBlockSの後継機として、OpenBlockSSが2001年11月に発表されました。 ※残念ながらデルタはOpenBlockSSを持っていません。発売前に今のサーバを作ってしまったもので、、、。 OpenBlockSSの大きなポイントはCPUのパワーアップ(50MHz→200MHz)と、メモリの増強(32MB→64MB)です。どのくらいのパフォーマンスが出るかの情報はまだ入手していませんが、非常に期待できるでしょう。

コラム

このコンテンツはOpenBlockSの構築記録ですが、ここにはそれと間接的に関係してきそうなネタを書きたいと思います。

OpenBlockSリンク集

はっきり言って、どこかの個人サイトを参考にしないと厳しい。というか、同じことを考える人は多いので、参考にさせていただいております。

公式サイト http://www.plathome.co.jp/support/labo/obs/ OpenBlockSのhddイメージ用パッケージwith公式サイトhttp://openlab.plathome.co.jp/OpenBlockS/packages.html Club535 http://www.club535.com/linux/mydoc/ob/ OpenBlockS Users room http://133.69.130.72/OBU/ セキュリティ1(バージョンの隠蔽)

デルタはブラックハットでもクラッカーでもないですが、一応セキュリティのお仕事をしているので、セキュリティ対策としてやっといたほうがいいなぁというのを記述しています。 バージョンの隠蔽というのは、所謂どういうサーバかよくわからない状態にすることにより、不正侵入される可能性を低くするという対策です。 バージョン情報はイロイロなところで出てきます。telnetのプロンプトの前や、Webサーバのエラーメッセージ/ヘッダー情報、SMTPに接続したときや、「HELP」コマンドを入力したときです。 バージョン情報の隠し方は特に書きませんが、ソースコードが読めるならチャレンジしてみましょう。 ※それにしても、OpenBlockSはコンパイルに時間がかかるので、いざ直そうと思っても気力が出ない(^^;;

Linuxコマンド集

まぁ、メモってことで。 http://linux.nikkeibp.co.jp/command/

viのコマンド

Linuxには必ずといってもいいほど「vi」というテキストエディタが入っています(というかソレしか使い方知りません)。以下に簡単な使い方を記します。

[…]

DNSの研究

DNSとは Amazon:4873110742

 ここは別に読まなくてもいいけど、DNSがさっぱりで読む暇がある人は読んでみてください。  ちゃんとDNSの仕組みを理解するのであれば、分厚いけどオライリーのDNS&BINDあたりを読んでおくべきだろう。

 DNS(Domain Name System)とは、書くまでも無いかも知れませんが、IPアドレスを人にやさしい名前に変換する仕組み、またはその反対のことをするシステムです。  たとえばこのサイトにアクセスするときにhttps://www.d77.jp/と入力しますが、インターネットの世界ではサーバにアクセスするのにIPアドレスが無いとダメです。この「www.d77.jp」の部分をIPアドレスに変換したり、その逆のことができる為のデータベースのようなものです。なんでこんな仕組みがあるかって、やっぱり数字の羅列よりかは楽だからでしょう。

 DNSの前身は今でも残っていますがhostsです。Linuxの場合は「/etc/hosts」で、Windows2000の場合は「x:\winnt\system32\driver\etc\hosts」にあります(何でdriverなの?とか思ったりしますが、、、)。  このhostsファイルに、

192.168.1.1 hogehoge

とか書いておけば、「ping hogehoge」と打つと、自動的に192.168.1.1にpingしてくれます。

 昔はhostsでも十分だったんですが、インターネットの規模が大きくなるにつれ、管理が大変になり、またサーバへの負荷もかなりヤバい状態になってきたので、それを解決する為に、DNSが作られました。

 DNSは分散データベースになってるので、負荷も分散されます。その気になれば、自分のドメインの中でも負荷を分散することが出来ます。

 また、ゾーン転送やDNSへの問い合わせの仕組みにより、私のサーバのDNSに情報を書き込むだけで、世界中のインターネットにつながったサーバから名前解決を行うことが出来ます。  

ツールの入手とインストール

 DNSサーバとしてよくbindというものが使われています。これはInternet Software Consortium (ISC) によって提供されており、無料で入手することが出来ます。このソフトはLinuxだけでなく、Windows用もあるので、非常に広い範囲で使用されています。

 bindにはいくつかのバージョンがあります。大きくbind4系、bind8系、bind9系のバージョンがあります。ここの文を書いた時はbind4やbind8がまだ主流でしたが、このところbind9も多くなってきました。

 今回はbind8を使います。bind4を使ってもいいですが、機能的に劣るのと、記述方法がbind8とbind9で似てるので、将来移行するのが楽だからです。

 bindはISCでダウンロードしてください。bindは結構凶悪なセキュリティホールが見つかることがあるので、バージョン管理に気をつけてください。bind8の最新版ならOKです。  ここを書いてるときは8.2.5が最新なので、それを入手し解凍します。ここで注意ですが、bindは自分のディレクトリを作らないでいきなり解凍します。他のファイルと混ざってわかりづらくなるときがあるので、ディレクトリを作ってから解凍しましょう。  

$ mkdir bind8 $ cp bind-8.2.5-src.tar.gz ./bind8 $ cd bind8 $ tar zxvf bind-8.2.5-src.tar.gz

んでコンパイル  

$ cd […]

いろいろめも

PerlでAPOP認証(2003/01/06)  pop3サーバに接続が成功すると +OK <云々>  という応答が帰ってくる。この「云々」の部分+パスワードでMD5のメッセージダイジェストを作成し、「APOP user名 MD5メッセージダイジェスト」として送信送信すればAPOP認証が成功する。 変数に、 $res=サーバからの応答(+OK <云々>) $user=ユーザ名 $passwd=パスワード と入れてあるとすると、 use Digest::MD5; # 云々の部分の切り出し $res =~ s/(.+)<(.+)>/<$2>/i; # その後ろにパスワードを付加 $res .= $passwd; # メッセージダイジェストの作成(モジュール任せ) $md5 = Digest::MD5->new; $md5->add($res); $res = $md5->hexdigest;  あとは、「"APOP $user $res"」をサーバへ送り返せば認証成功となる。  、、、というか、サーバ応答(+OK <云々>)から切り出す部分って「<」と「>」も含まなければならないってのに小一時間ハマッタ。 起動すべきデーモンと止めるべきデーモン(2003/10/04)  RedHat系のLinuxは「chkconfig –list」でデーモンの起動の設定を確認することができます(出てこないデーモンもありますけど)。そして、不要なデーモンは「chkconfig nfs off」というようなコマンドで起動しなくすることが可能です。  ここではchkconfigで出てくるデーモン群を説明します。ちなみに私自身知らないものも非常に多いので、かなり推測が入っています。 kudzu新しく追加/取り外しされたハードウェア(マウスとかNICとか)を検知し、設定を行う。これがあると起動中10数秒待たされるが、あったらあったで便利。 syslogログを記録する。これが無いと普通は困る。 netfs起動時にネットワーク系のファイルシステムをマウントする。samba(Windowsファイル共有)とかNFS(ネットワーク経由でファイルシステムをマウント)とかが関係あるらしい。使ってなければいらないっぽい。 networkその名のとおりネットワークの設定とか起動とかをしている。これがなければオフライン。 random乱数を生成する。ゲームプログラマの命(謎)。基本的には残した方が無難。 rawdevicesrawデバイスをマウントする。残すか残さないかは微妙、、、っていうかどういうときに使われるのかがよくわからないので残してます。 pcmciaPCMCIAカード(いわゆるノートパソコンとかに差すPCカード)を使う人は残した方がいいです。デスクトップなら普通いらないと思う。 saslauthdRedHat9で始めて見た気がします。imapとかSMTP-AUTHとかのメール関係の認証で使うみたい。意図して使う人以外はOFFでいいと思う。 keytableキーボードマップ(配列)を設定する。/etc/sysconfig/keyboardあたりの関係だと思う。ONじゃ無いとキーボード配列が狂うかも? apmdAPM(Advancede […]

WebDAV…

 Apache2.2系でWebDAVを建ててるんですが、かなり難しいですね。未だ四苦八苦していますが、今のところ以下のような感じ。 WinXPのWebフォルダ(ネットワークプレースの追加)をクライアントにした場合はまともに動かない(かなりひどい動きをします)。とりあえず検証にはdddavというツールを使用中。 apacheのhttpd.confでLimitExcept/Limitがおかしい?LimitExcept以外の命令を普通に受け付ける。また、LimitExceptの中にrequireを書いても無視されてるっぽい。 特定アカウントをLimitExceptで制限すると、通常のWebアクセスを受け付けちゃう(;´Д`) 日本語はいい感じ。FedoraはUTF-8がデフォなので、そのまま日本語が行ける(シェルでも日本語が使えるので、ファイル管理に困らない)。 Alias /XXX "/xxx/yyy" <Directory "/xxx/yyy"> Dav On Order Allow,Deny Allow from all AuthType Digest AuthName "XXX" AuthUserFile "/xxx/yyy/zzz" <LimitExcept OPTIONS> require valid-user </LimitExcept> </Directory> これだと、LimitExceptが効かない。 ムムム…もう少し調べる必要がありそうだ。

S25RでSPAM対策

 今まで主にブラックリストでSPAM対策をしていた訳ですが、いろいろ試行錯誤してもフィルタ率が80%くらいでした。  届く宛先の傾向を見ると、やはり過去にWebにメアドを載せていたのが原因ですね。ここのサイトも10年以上公開しているので歴史の重みの一つですね。

 で、結構悩んだんですが、S25R(Selective SMTP Rejection)という仕組みを導入してみることにしました。詳しくは以下のサイトを見てください(始めのページに要点も書いてあります)。 http://www.gabacho-net.jp/anti-spam/

 結果から言うと、ほぼ100%SPAMを駆逐出来てます。かなりすごいですね。ただし、誤フィルタの危険性も捨てきれないので、しばらく監視が必要です。

 とりあえず設定方法については上記アドレスの「阻止率99%のスパム対策方式の研究報告」ってところに、postfix向けの設定サンプルが書かれているのでそれで行けますが、ちょっと注意点などを以下に記載してみたいと思います。

 まず、main.cfの設定ですが、元々ブラックリストによる制限をしてますが、S25Rも同じようなところに定義してます。ですので、ブラックリストとS25Rを両立する設定が必要な訳ですが、私は以下のような感じに設定しました。

main.cfの設定サンプル(ブラックリストとS25Rの両立)

〜以下、抜粋です  「reject_rbl_client 云々」がブラックリストの設定。「permit_mynetworks」以下が、S25Rのサイトにあったサンプルと同様の設定です。

smtpd_client_restrictions = reject_rbl_client all.rbl.jp, reject_rbl_client sbl.spamhaus.org, reject_rbl_client bl.spamcop.net, reject_rbl_client list.dsbl.org, permit_mynetworks, check_client_access regexp:〜云々〜, check_client_access regexp:〜云々〜, check_client_access regexp:〜云々〜

 また、S25Rは誤フィルタを防ぐ為にホワイトリスト(許可リスト)を設定する必要があります。ホワイトリストも上記S25Rのサイトの「ホワイトリスト情報」ってところにあります。  で、この情報は頻繁に更新がなされるので、更新されたらメールで知らせてくれるようにcronに以下のソースを設定しています。

更新お知らせシェル

 頻繁にチェックすると相手のサイトに迷惑なので、一日一回だけのチェックにしてます。ちなみに以下の設定だと、サーバのroot宛にメールを送るので、その辺は環境に応じて旨く設定してください。  なお、あくまでお知らせするだけで、更新はしてくれません。

#!/bin/csh wget –no-cache -q -O /etc/postfix/white-list.txt.check -T 10 http://www.gabacho-net.jp/anti-spam/white-list.txt if ( $status != 0 ) […]

1 / 212