2008-07-01

FileMaker API for PHP を使ったアンケートフォーム作成 (3/4)

 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 前回はアンケートページ操作の枠組みとなる、アンケート入力ページ、確認ページ、そしてお礼ページの切替方法について説明しました。いよいよ本格的なコード記述に入っていきます。PHP のコーディング規則については割愛しておりますので、不明な点があれば PHP のマニュアルを参照してください。

 皆さんご存じのとおり、Web ページの構成はざっと以下のようになっています。



 前回の説明では、本文部分の表示切替について説明したわけですが、実際は、本文を表示する前にヘッダを表示し、本文の表示が終わったところでフッタを表示することによって、Web ページを構成する必要があります。第一回目で、ヘッダとフッタは部品化できると申し上げたとおり、ヘッダとフッタをそれぞれ独立した文字列として変数にセットしておくことで、実際のページ表示を行うときに呼び出して使うことができます。
 以下はその部分を取り出したものですが、HTML による Web ページ作成経験がある方なら、この部分は容易に想像できるでしょう。

 ●ヘッダ部品のソース


ヘッダ中にある $pagetitle は、ページのタイトルを表示するための変数です。入力ページ、確認ページ、お礼ページでタイトルを切り替えることができるため、このようにしておくと便利です。

 ●フッタ部品のソース


 このように部品を用意しておけば、極端な話、PHP コードの中で以下のように記述するだけで一つの Web ページが出来上がります。


echo $header;
echo $footer;


 次に、上記のヘッダとフッタの間に入れる本文部分を検討していきます。

1. ステップ 0 (ユーザ入力ページ)

 ここでは、入力用のフォームを作っていきます。
 フォーム部品(エレメント)は次の 5 つです。

 氏名 -- テキストボックス (myname というエレメント名)
 email -- テキストボックス (email というエレメント名)
 アンケート回答 -- ラジオボタン (answer というエレメント名)
 その他回答 -- テキストボックス (otheranswer というエレメント名)
 ご意見など -- テキストエリア (memo というエレメント名)

 以下は上記を踏まえてフォームを起こすためのコードを PHP で記述したものです。



 上記赤で囲った部分がアンケート回答の選択肢を示すラジオボタンです。これですと、アンケート回答の選択肢が増えるたびにラジオボタン行を増やす必要があるため、将来的に非効率といえば非効率です。というわけで、このラジオボタンの部分を可変対応にしてみましょう。

 そこで選択肢のリスト作って変数に入れてみます。ここでは $answeroptions という変数にリストを配列としてセットしているところです。



 そして、ラジオボタンを表示したいところでこの変数($answeroptions)を呼び出して、各項目を取り出します。その加工を行っているのがこの部分です。



これでデフォルトのページの部品ができあがりました。しかし、これでは各エレメントの value が空欄のため、前回何らかのユーザ入力が行われていたとしても値はページには反映されません。そこで、前回ユーザ入力があった場合にはその値を当該の項目に表示する処理を追加します。
 この処理を施すと、次のようになります。赤線部分に注目してください。



 そしてさらに、必須項目である[氏名]欄と[email]欄が正しく入力されているかどうかをチェックして、値が不正の場合には赤字でメッセージを表示するようにします。
 その処理を施したものが以下のソースです。赤線部分に注目してください。



 入力項目の処理はこれで終わりですが、後は今のステップ番号を次の操作のためにどこかに用意しておく必要があります。
 ここでは以下のような隠しエレメントを用意して、そこにステップ番号を入れることにします。エレメントの名前は後で参照しやすいように page_flg としておきます。今回はステップ 0 (ユーザ入力フォーム)なので、設定しておく値は 0 ですね。



 後は送信ボタンとリセットボタンを用意するだけです。
 上記を踏まえて、もう一度サンプルコードを見てみてください。

2. ステップ 1 (確認ページ)
 このステップは、ステップ 0 に比べると比較的処理が容易です。ここでは、ステップ 0 で入力された値 ($_POST にまとめて入っています)を取り出してページに表示し、ユーザにこの内容でデータベースに送信しても良いか尋ねて、ステップ 2 に入力値を渡すだけです。

 まずは入力された値を表示します。この部分は、確認ページとお礼ページの両方で同じものを表示しますので、使い回すことができます。


 次に、ステップ 2 (お礼ページ)に渡すためのユーザ入力値を隠しエレメントとしてフォームに用意します。
 以下、赤線を引いた箇所が現在のステップ番号を渡しているところです。



 実際にサンプルコードのソースを開いてみて、この部分を確認してみてください。

 残すはステップ 2 です。ステップ 2 では、データベース操作およびメール送信について触れますので、次回詳しく説明いたします。

●まとめ
 入力フォームの記述方法とユーザ入力値の表示方法の理解

FileMaker API for PHP を使ったアンケートフォーム作成 (2/4)

 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 さて、前回の説明ではアンケートページの流れと、流用可能部分の洗い出しを行いました。

 以降、PHP を使って話を進めていきますが、実際にコードを書く前に、まずは日本語で分岐処理を考えてみましょう。この作業がしっかりできれば、あとはそれを PHP の規則に従って置き換えるだけです。このやり方ならあらゆるプログラミング言語にも応用が利くので便利です。

 ページがロードされたときに、最初にしなければならないのは、このページが初回ロード(デフォルトページ)なのか、確認用ページなのか、それともお礼ページなのかを把握することです。そこで前回解説した 3 つのステップが登場するわけです。


 0 -- 初回ロード時(デフォルト)ユーザによるアンケート入力用ページ
 1 -- 確認ページ
2 -- お礼ページ

 ここで注目すべきことは、ユーザが正しい入力を行わなければ、いつまでたってもステップ 1 には進めないということです。今回のアンケートフォームでは、このために[氏名]欄と[email]欄を入力必須としています。この二つの項目正しい入力がなければ、誰が送ったのか後で判断できませんし、メールも送信できなくなってしまいます。また、ゴミデータを増やす原因にもなりますので、最低限[氏名]と[email]には入力をしてもらいたいところです。

 つまり、ステップ 0 ではユーザ入力ページを表示させつつ、正しい入力が行われているかどうかという判断も行います。

 ページがロードされた場合に、[氏名]欄と[email]欄に正しいデータ入力が行われていたときは、必要最低限の情報が揃ったことになりますので、ステップ 1 に進みます。

 さらにページがロードされた場合に、前回のユーザ操作で“確定”ボタンが押されていたことを確認できたときは、ステップ 2 に進んでデータを FileMaker データベースに書き込み、さらにメールを送信して終了します。

 実際にコード記述を行う際には、ステップにプログラム内で管理しやすい固有の名前を付けます。ここでは page_flg としてみます。page_flg が 0 ならステップ 0 というわけです。PHP では変数を取る場合は先頭に $ を付けますので $page_flg という名前になります。

 それではここまでを日本語で表現してみます。見やすさのために、各項目内はインデントを行います。ステップの名前は page_flg となっていますので、覚えておいてください。



   
 上記のように、ページがロードされた直後の処理が最も重要であることがわかりますね。page_flg の番号が特定できれば、あとはそれに応じたフォームを表示するだけです。
 さて、次はこれらの分岐を PHP に置き換えてみます。処理の詳細はまだ記述しませんので、コメント行として日本語で表します。先ほど申し上げたとおり、page_flg は PHP では $page_flg と記述します。



 分岐の方法や入力されたフォームの値($_POST に入っています)の説明は PHP のマニュアルをご覧いただくとして、こうして見てみると、処理の流れが意外と単純であることがわかりますね。ちなみに、Mailck()という名前の付いているものは、入力されたメールアドレスが適切な形式であるかどうかをチェックするために私が用意したユーザ定義関数の名前です。

 この枠組みができれば、あとはページヘッダ、フッタ、そしてフォームの詳細を追加していくだけです。
また、前回の説明にあったように、確認ページとお礼ページのコードは流用できる部分があるため、$page_flg の分岐を以下のように変更します。



 コードがさらにすっきりましたね。

 ここで、サンプルコードをダウンロードして、該当箇所を検索し、コードがどのようになっているかを調べてみてください。
 フォーム内容が記述されているため、PHP に不慣れな方には複雑に見えるとは思いますが、この枠組みが理解できていれば、今回のアンケートフォームの操作は 70% 理解できたと言っても過言ではないでしょう。

●まとめ
 ページ操作の枠組みとその記述方法(日本語、PHP)の理解

2008-06-30

FileMaker API for PHP を使ったアンケートフォーム作成 (1/4)

 本記事は2008年に FileMaker 9 の環境下で執筆されました。2016年11月現在、FileMaker の最新バージョンは 15 となっていますが、15 においても本記事の内容はなお有効と思われます。
 一方Ver 15 では WebDirect と呼ばれる 機能があり、これにより PHP などで Webプログラミングを行うことなく、 FileMaker デスクトップアプリとほぼ同様の操作がブラウザ上でも可能となります。WebDirect は開発が非常に楽になる半面、ライセンス費用やブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し、ブラウザ互換性をある程度無視できる環境では WebDirect は FileMaker API for PHP の代替となる可能性があります。

 参考: アンケートシステム・プロトタイプ


ブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し。ブラウザ互換性をある程度無視できる環境では WebDirect は FileMaker API for PHP の代替となる可能性があります。
 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)
 さて、前回の投稿FileMaker Server 9 のインストールを終えましたので、これから数回にわたって FMS9 に装備されている FileMaker API for PHP を使うことによって FileMaker データベースにデータ書き込みを行う方法について説明します。
 ここでは最も手っ取り早く操作を理解することを目標に掲げていますが、今後は機会を見て同操作の Fx.php への展開、MySQL への展開、セッション管理などについても書いていきたいと思っております。

 FileMaker API for PHP は、PHP スクリプトから FileMaker データベースにアクセスすることによって、データベース操作を実現するクラスをまとめた API で、従来の CDML やインスタント Web 公開では機能的に限界のあったデータベース操作がさらに高度で柔軟なものになっています。
 操作にあたってはどうしても HTML と PHP を記述するための知識が必要になるわけですが、今回は理解の最短コースを目指し、最も単純な操作方法をコード付きで紹介します。

 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 こんなページを想像してみましょう。

  1. アンケート入力ページが出てくる。

  2. 上記で正しい入力が行われると、確認ページが出てくる。

  3. 確定ボタンを押すと、入力されたデータが FileMaker データベースに書き込まれるとともに、その内容がメールで投稿者およびサーバ管理者に送信される。


 この動作を実現させたものがこちらのアンケート入力ページです。

入力→確認→データ書込(必要に応じてメール送信)、この三段構えを応用すると、商品申込ページや、住所録作成なども比較的簡単にできるようになります。

さて難しいことは抜きにして、まずは入力ページの部品を見てみましょう。



 ユーザ入力欄は以下の 5 つだけです。

  1. 氏名 -- 入力必須

  2. emailアドレス -- 入力必須

  3. アンケート回答 -- 選択必須。一番上の選択肢が最初に選択されている状態

  4. その他回答入力欄 -- 任意

  5. 要望など入力欄 -- 任意


 HTML による Web ページ作成経験のある方なら、ページ構成は容易に想像できるでしょう。
 PHP では、ある程度ページ部品を使いまわすことができますので、入力、確認、お礼のページで使いまわせそうな部分を抜き出していきます。

 ヘッダ --- 流用可能
 ボディ(本文) --- 一部流用可能
 フッタ --- 流用可能

 ボディが一部流用可能となっている理由は、入力ページではユーザ入力を許可し、確認ページとお礼のページではテキストのみが表示されるという理由で表示動作が異なるためです。それでも確認ページとお礼のページに表示させる内容は使い回せそうですね。

 それではこのアンケートページのブラウザ表示後のソースを見ながら流用できそうな部分にマークを付けてみます。



 図中の赤で囲んだ部分が入力、確認、お礼ページで共通している部分となりますので、PHP コードの中では一度記述すればよいことになります。

 次に、ページ動作の流れを決めます。

  1. 初回ページロード時は入力画面表示。

  2. 必須項目に正しく入力が行われたら、確認ページを表示

  3. 確認ページでユーザが“確定”ボタンを押したら、お礼のページを表示


ページの表示切替を容易に行うため、各ステップを 0 (デフォルト)、1 (確認)、2(お礼)のように決めます。つまり、ステップ 0 では、いくらページをロードしても入力画面が表示され、1 なら確認画面、2 ならお礼の画面という具合です。表示イメージは弊社サーバでテスト公開しているアンケート入力ページで確認していただくことにして、それぞれのステップのフォーム部分のコードを見てみましょう。

【ステップ 0 のソース】


【ステップ 1 のソース】


【ステップ 2 のソース】


ステップ 1 と ステップ 2 を比べてみてください。多少の差異は認められるものの、赤で囲んだ部分が殆んど同じであることがおわかりいただけるでしょう。ということで、この部分も PHP で使いまわすことができます。


●まとめ

  1. アンケート入力→確認→お礼ページの流れを把握

  2. 上記のそれそれのステップに 0, 1, 2 という番号を付ける

  3. ページのヘッダ、フッタ、本文で流用できそうな部分を洗い出す


流用できる部分の洗い出しは、設計段階でとても重要な作業となります。
次回より、上記を踏まえた上で、実際に php を使ってコーディングをしていきます。

2008-06-23

アンチウィルスソフト --- 果てしないセキュリティ

SonicWALL Total Security のようなUTM(統合脅威管理機器)をLAN⇔WAN間に設置すると、ファイアウォール、IPS、アンチウィルス・アンチスパイウェア、コンテンツフィルタリング、暗号化等の機能により、LAN⇔WAN間のすべての通信を管理・監視しネットワークセキュリティを向上させることができます。 では、UTMを配置すればセキュリティは確保できるのでしょうか? 残念ながらそうとは言えません。 ハードディスクのデータをUSBメモリにコピーして持ち出した、機密データを印刷して紛失した、ノートPCを紛失した、サーバ室に許可無く入室した等、セキュリティはシステム管理者だけの問題ではなく、社員など個々人のモラルの問題でもあり、あらゆるリスクを予め想定して対応するのは不可能と言っていでしょう。 

自宅の家の鍵を二重三重にし、窓ガラスも強化ガラスを入れ、セコムを頼み、家人が十分気をつけていたとしても、有能で悪意ある確信犯がいれば、その凶行を防ぐのは至難です。 セキュリティも同様です。 どこまでセキュリティに費用と労力をかけるか、実に悩ましいところですが、システム的にはやはりホスト(PCやサーバ)レベルでのウィルス等のマルウェア対策が必要と思います。 以前にも総論的に書きましたが、数十台を超えるPCのセキュリティを各ユーザのスキルとモラルに委ねるのは危険で、業務的にも効率的とは言えず、なるべく統合的、集中的なセキュリティ管理が望まれます。その統合集中的管理が可能なアンチウィルスソリューションの一つに Panda WebAdmin があります。

Panda WebAdmin のメリット

1. 比較的廉価
2. Windows 2000/2003 Server で利用可(但し、Vistaは未対応)
3. 動作が軽い --- 他のアプリケーションに悪影響を与えない、与えにくい
4. 管理PCからクライアント/サーバを統合集中管理
  • 管理PCから各PC/サーバへPanda WebAdminクライアントを(Push式)インストール
  • 各PC/サーバのウィルス感染状況を表示
  • 各PC/サーバのウィルス定義ファイルの更新状況を表示
  • 外出先のモバイルPCも管理可
【各PCのウィルス定義更新状況を表示するWebAdmin】

5.それなりのウィルス検出精度
6.システムに障害を及ぼす“トンデモ”アップデートがあまり無い

以上

2008-06-20

SonicWALL (3) ---ログ分析ツールViewPointインストールで泣く

前回書いたようにSonicWALLには通信を監視し、「問題あり」とみなした通信内容を警告メールとしてネットワーク管理者に送付することができます。 ただ、この警告メールが大量に届くため、管理者がこれを逐一読むのはまず無理です。 そこでSonicWALL Total Security には、ViewPoint というログ分析ツールが無料で付属してきます。 この ViewPoint ですが、ある一定の環境下は簡単にインストールできます。 しかし一定以外の環境では、多分、嵌ります。 一定以外の環境とは? 私が思うに SQL-Server インスタンスが複数動いている環境はマズイのではないかと。 

以前、 SQL-Server インスタンスが既に2つ存在するWindows 2003 に ViewPoint 4.0 をインストールしようとしたのですが、途中までいくとMSDE(Microsoft SQL-Server Desktop Engine、ViewPointのログ保存用データベース)へのログインの画面で認証に失敗し、続行できなくなりました。 表示されたエラーメッセージには、「後で\ViewPoint4\bin\postInstall.batを実行してインストールを続行できます」みたいなことが出ているので、インストールを一旦中断。 ただ、 その後に postInstall.bat を実行しても、全く同じ状況でMSDEの認証で弾かれてしまいます。 で、サポートに電話したのですが、「そのような事例はあるのですが、解決方法は記されていません」の一言。 「おい、おい、 それで終わりかい?」(心の声)
その時は忙しかったので、既存のSQL-ServerインスタンスがないXP機に ViewPoint 4.0 を入れてしまいました。 こちらは全く問題無くインストール終了。

で、最近改めて件のWindows 2003機へ ViewPoint のインストールをトライしてみました。 前回失敗したときにアンインストールをしたみたいだったので、インストーラの VPS_JP.exe を再度実行。 「もしや今度はすんなりと完了するのでは…」という儚い望みはあっさり裏切らせ、前回と同じメッセージ。 しかたんくインストーラを終了して、上記の postInstall.bat を実行してもやっぱり駄目。 ここまでは前回と同様なので、トラブルシュートする腹を決めました。 まず「サービス」を起動してSQL-Serverインスタンス(サーバ名\SNWL)が存在することを確認。 また、インストール時に指定したディレクトリにMSDEが存在することも確認。では、ViewPoint4\MSDE\Data\MSSQL$SNWL\Data\ 内に存在する 筈のViewPoint 用の.mdfと.ldfファイルは…と思って探しても無い。 あるのは、master/msdb/model/tempの4つのシステムファイルだけ。 SQL-Server Management Studio Express を起動して見ても、やはりこの4ファイル以外は無し。 先に成功したXP内のDataディレクトリには sgmsdb.mdf 他のViewPoint用ファイルがあるのに。
ここにきて、データベースのインストールに失敗していることが判明。 そこでググってみると、灯台下暗し「SonicWALL ViewPoint ユーザーズ ガイド」にたどり着く。 このガイドは ViewPoint 2.5 用でエラーのメッセージの出方も違うけど、第六感的にはぴったし。 P.157以降に解決策というのが書いてあります。 以下、上記マニュアルを引用。

******************** 引用始 ********************
ViewPoint が MSDE データベースの場所を見つけることができない
問題
SonicWALL ViewPoint 2.0 のインストールで、MSDE データベースが見つからない場合、次のようなアップグレード失敗を通知するメッセージが表示され、インストールはフェーズ 2 で失敗します。
[DBNETLIB]SQL Server does not exist or access denied. [DBNETLIB]ConnectionOpen (Connect()).
Java doesn't recognize the MSDE database using the URL "127.0.0.1\SNWL". This is an issue on some Windows 2000 servers.
解決策
次の手順を実行し、インストールを続行します。
1. 「キャンセル」 を選択して、フェーズ 2 のインストールを終了します。
2. コマンド プロンプトから、「SQL Server Network Utility」 (SVRNETCN.EXE) を実行します。 一般的に、このプログラムは、C:\Program Files\Microsoft SQL Server\80\Tools\Binn フォルダ内にあります。
3. 複数の SQL サーバ インスタンスがシステム上で稼動している場合は、「Instance(s) on this server」 リスト ボックスに複数のインスタンスが表示されます。 リスト ボックスから、サーバ名\SNWL の項目を選択します。
4. 「Protocols」 リストから 「TCP/IP」を選択し、「Properties」を選択します。
5. ポート番号を記録します。
6. メニューを終了します。
7. c:\sgmsConfig.xml ファイルと \Tomcat\webapps\sgms\WEB-INF\web.xml ファイルに以下の修正を行います。
dbURL の値を、"127.0.0.1/SNWL" から "localhost:ポート番号" へ変更。
dbhost の値を、 "127.0.0.1\SNWL" から "127.0.0.1" へ変更。
技術的ヒントとトラブルシューティング 157
8. \SQL\bldMSDB.bat に、以下の修正を行います。
User の値を sa に変更
Password の値を <フェーズ 1で選択したデータベースのパスワード> に変更。
9. コマンド プロンプトで、\SQL フォルダへ移動し, bldMSDB.bat プログラムを実行して MSDE データベースをインストールします。
10. \Temp へ移動し、次のプログラムを実行して 「SNWL ViewPoint Summarizer」 サービスと 「SNWL ViewPoint Syslogd」 サービスをインストールします。
schedInstall.bat
vpInstall.bat
11. \Tomcat\bin へ移動し、次のプログラムを実行して 「SNWL ViewPoint Web Server」 サービスをインストールします。
tomcat.bat install
12. Windows システムを再起動

******************** 引用終 ********************

上記ステップの8までは問題なく実行できたんですが、ステップ9 bldMSDB.bat が失敗してしまう。 SQL-Serverの認証方法がWindows認証になっているのが問題か?、と思い、認証を混合モードに変更してもやはり駄目。 仕方が無いので、bldMSDB.bat を開いてみると、その中で大量の.sqlファイル群を実行していて、しかも最初の行(sgmsdb.sqlの実行)から失敗している。 で、sgmsdb.sql では何をしてるかというと、

      USE master;

どうもここから失敗している。 コマンドプロンプトを開いて、

      osql -U sa -P password -S 127.0.0.1\snwl

とやると失敗してしてしまう。 そこで、

      
osql -U sa -P password -S computer_name\snwl

とすると成功(computer_nameはWindows のコンピュータ名)。 そこで、どうやらこのループバックアドレス(127.0.0.1)がおかしいらしいと見当をつけて、以下を実行。

  1. 上記ステップ8にある「127.0.0.1」と「localhost」を「computer_name」に変更。
  2. bldMSDB.bat をメモ帳で開き、すべての「127.0.0.1」を「computer_name」に置換。
上記を実行すると、上記マニュアルのステップ9~12はスムーズに終了し、Windows 2003起動してデスクトップに作成された SonicWALL ViewPoint 4.0 を実行すると、ブラウザに ViewPointの認証画面が表示されるようになり、デフォルトのID:admin、Password:password と入力することにより、ログインできました。 めでたし、めでたし。

2008-06-16

FMS9 のインストールで四苦八苦

FileMaker Server 9 で API for PHP が公開されたということで(今まではベータ版での公開だった)、当方の環境にも Filemaker Server 9 (以降 FMS9) をインストールしてみました。

 しかし、一口にインストールとは言っても、アプリケーションの構成が複雑な環境ではなかなか一筋縄ではいかなかったりします。
 今回は FMS9 をインストールしてから希望どおりの結果が得られるまで丸二日を費やすことになってしまいました。

 以下、当方での FMS9 インストールトラブルの記録です。

  1.  FMS7 との競合。FMS7 がインストールされている環境には FMS9 を追加インストールできない。そこで、FMS7 のアンインストールを試みたが、FMS7 インストール構成ファイルの一部が壊れていた模様で、コントロールパネルの「アプリケーションの追加と削除」からは削除ができなくなってしまっていた。
     そこで、Microsoft 社のサイトから Windows Installer CleanUp ユーティリティというツールをダウンロードして、FMS7 のインストール情報を削除してから、ハードディスクに残っている実体ファイル群を削除する目的でもう一度 FMS7 をインストールし、そしてもう一度アンインストール。

  2.  FMS9 インストール。インストーラのガイドにしたがって無事にインストールは終了したが、FMS9 開始ページを起動して設定を始めてみると Web 公開用に接続を試みた IIS が認識されていないことが判明。サービスでは、IIS は正常に動作していたので、どうやら FMS9 とIIS の対話がうまくできていないようだ。
     そこで、コントロールパネルから一度 IIS を外して、もう一度インストールしたら、今度は FMS9 側から認識されるようになった。

  3. ところが、実際にサーバのトップページにアクセスしてみると、ページが見つからないという白紙のページが表示された。IIS マネージャの設定をどう直しても状況は改善しなかったので、試しに FMS9 をアンインストールしたところ、ページが表示されるようになった。
  4.  FMS9 は Java を使うので、インストールされている Java を調べたところ、すでに古いものが 3 つインストールされていた。それらをすべて削除してから IIS 再インストール、FMS9 のインストール、そして FMS9 インストール直後に推奨される Java のインストールに従って、FMS9 に入っている Java をインストールしたところ、FMS9 と IIS の対話がうまくいくようになり、ページも無事に表示されるようになった。


 今回のインストール作業から得られたことは、FMS9 をインストールするには、FMS9 を操作するのに適切な Java と IIS が入っていないとうまく動作しないので、どう設定をいじっても歯が立たない場合は、一度この三点を全部削除して、順にインストールしていくことで解決する可能性が高くなるということです。

 ただ、IIS で複雑なサイトを構築している企業では、IIS をそうやすやすとアンインストールなんてできないと思ってしまうのですが...。

2008-06-14

SonicWALL (2) --- IPS

SonicWall Total Security シリーズには、IPS(Intrusion Prevention System、不正侵入防御システム)が付属してきます。 これは SonicWALL 上の通信を監視し、悪意または不正な行為を検知・遮断する機能です。 通常のファイヤウォールは各ポートの通信を許可・不許可するだけですが、IPSはファイアウォールが許可したポートの通信の内容までも、シグネチャーデータベースに照らして監視します。ネットワーク管理者は SonicWALL の IPS が検知した不正または不正の可能性を含む通信の概要を警告メールとして送信するように設定することができます。 実際メール送信するように設定すると、やたら多くの警告メールが届き、困惑することになります。

よくある警告メール
警告メールの中を見ると、不正またはその可能性がある通信の内容の概要と、その危険度を低、中、高で示されています。 以下、ありがちな警告メールとその説明。

IPS Detection Alert: ICMP Destination Unreachable (Port Unreachable), SID: 310, 優先順位: 低 - 89.178.40.145, 17127, WAN, 89-178-40-145.broadband.corbina.ru - 192.168.*.*, 59367, LAN, ****** -
 外部からのICMPパケットがSonicWallの内側のホストに届かなかった場合に発生。 危険度は「低」。あまり気にする必要はないが、DoS攻撃やネットワーク構成の探知が行なわれている可能性もある。頻発する場合は要注意。 詳細解説


IPS Detection Alert: PROXY-ACCESS SOCKS 5 outbound proxy access, SID: 1775, 優先順位: 低 - 192.168.*.*, 38248, LAN, ***** - 219.160.253.130, 8558, WAN -

 SOCKS Protocol version 5のプロキシサーバへアクセス。攻撃ではないので無視。詳細解説


IPS Detection Alert: ICMP Time-To-Live Exceeded in Transit, SID: 352, 優先順位: 低 - 192.35.246.1, 53, WAN - 192.168.*.*, 1091, LAN -

IPデータグラムが断片化されて相手先ホストに送信されたため、一つ以上の断片化されたデータが未着となっているため、SonicWALLがデータ待ちをしない状態となる。 通常は無視してよいが、DoS攻撃やネットワーク構成探知行為の可能性もある。 詳細解説


Possible port scan detected -  210.248.168.20, 443, WAN, kanri.shopserve.jp -  *.*.*.*, 6887, WAN, ****** - TCP scanned port list, 6755, 6769, 6833, 6845, 6861

Possible port scan detected - 203.77.186.119, 80, WAN, cds32.tyo.llnw.net - *.*.*.*, 1277, WAN, *.*.*.jp - TCP scanned port list, 1263, 1267, 1271, 1273, 1275
クラッカーが侵入準備のために行うポートスキャン、但し、管理目的のことが多い模様。
***.tyo.llnw.net からは非常に多くのアクセスがあるが、Microsoft Windows Update が使用しているミラーサイト(負荷分散サイト)との推定あり。



SonicALERTの全種別一覧
http://software.sonicwall.com/applications/ips/index.asp?ev=cat

2008-05-30

SonicWALL (1)

UTM (統合脅威管理=Unified Threat Management) という言葉ですが、日本ではいまひとつ馴染みが無いようです。 言葉としてもいまいちな感じ。 Integrated Secrurity Appliance とか、All-in-one Security Mnagement Device とか、Security という言葉を入れたほうがピンとくると思うのですが。 認知度が低いのはネーミングが悪いせいかどうかは兎も角、UTM製品名で検索をかけてもヒットするのは宣伝・広告ばかりで、日本のIT関連メディアやユーザサイドからの情報は、今のところ多くはありません。 したがって、運用に際してはには、英語のサイトに頼ることが多くなります。

さて、当方で使用しているのはSonicWALL Total Secure TZ-180というUTMです。 この製品はインターネットとLANの間に配置され、インターネットとLAN間の通信を監視し、設定した内容に従い、許容されていない通信パケットを破棄するとともに、VPNによりパケットの暗号化も行います。通信パケットの管理/暗号化は、ファイアウォール、VPN、ゲートウェイアンチウィルス、アンチスパイウェア、IPS、コンテンツフィルタリングにより行います。 また、ログ解析機能(ViewPoint)/警告メール送信機能も付属しています。

このうち、ゲートウェイアンチウィルス/アンチスパイウェアはhttp/ftp/smtp/POP3といったプロトコル(メーカーの謳い文句による50以上)を監視し、ウィルスやスパイウェアを発見すると除去します。 ただ、ゲートウェイアンチウィルスがあれば個々のPC/サーバにウィルス等のマルウェア対策が必要ないかというとそうではなく、個々のPC/サーバでもやはり対策が必要だと思います。 テロや外国人犯罪を防ぐのに飛行場や港湾といった水際の対策だけではなく、国内に侵入された場合にそなえ個人レベルの警戒も重要、というのと同義でしょう。厭な世の中ですが、破壊・犯罪を防ぐためには仕方がありません。

コンテンツフィルタリングは有害サイトへのアクセスを防ぎます。 一見すると子供向けの機能のようですが、有害サイトにはマルウェアが埋め込まれていることが多く、アクセスするだけで感染することもあります。 有害サイトへのアクセス遮断はマルウェアの侵入を防ぐ意味もあります。

ファイヤウォールとIPS(Intrusion-prevention system、侵入防止システム)の違いですが、一般のファイヤウォールはIPとポートへのアクセスを許可/拒否するように設定できますが、許可しているポートへの通信は、その通信パケットの中に悪意の命令が埋め込まれていても通してしまいます。 その結果、例えば、バッファオーバーフローを起こし、PCの動作異常や異常終了を引き起こしてしまったり、データベースのデータを改竄・消去されてしまったり(SQLインジェクション)ということも起こりえます。 これに対してIPSは、通常、IPやポートに依存せず、通信パケットのヘッダからデータをシグネチャ(攻撃パターン)データベースに照らして監視し、シグネチャに合致する通信パケットは侵入とみなし破棄します。 SonicWALLのシグネチャは24時間自動アップデートされ、新たな攻撃パターンをデータベースに記録します。

参考
Intrusion-prevention system(Wikipedia/英語版)

シグネチャを超えたプロアクティブな防御を――チェック・ポイントが戦略披露


土屋

2008-05-27

セキュリティは個人による管理から集中・統合管理へ(2)

前回、セキュリティは個人ではなく、管理者が集中的、統合的に管理すべき旨を書きました。 理由は個人の資質に依存するのは問題だし、人はミスをするから。 これとは別の理由もあります。

Windowsやインターネットが広く普及し始めてすでに15年以上経ち、いまやPCを使いこなすスキルがすべての人に必須のように言われていますが、はたしてそうでしょうか? 例えば、営業マンにPCスキルは必須でしょうか? 私はそうは思いません。 営業は本来、モノを売り、売上と利益を上げ、顧客からの信頼を築きながら次回の販売に繋げる、というのが本分の筈。 その営業マンが各種アプリケーションソフトの習得やファイヤウオールの設定に時間を費やしているようでは本末転倒です。 優秀な営業であればあるほどその人の時間を営業以外の雑務に費やさせるのは会社にとって損失です。 営業マンには心置きなく数値を追わせてあげましょう。 

営業やその他の部門の人材にそれぞれの本業に専念してもらうには、システムのセキュリティは管理者が代わりとなって、集中・統合管理する必要があります。 そのソリューションとして前回書いたUTM(Unified Threat Management)というものがあります。では、そもそもシステム管理者が対処すべき脅威にはどのようなものがあるのか、列記してみましょう。

1.マルウェア
悪意のプログラム。 最も一般的なコンピュータシステムの脅威。 ウイルス、ワーム、トロイの木馬、スパイウェア、アドウェアなどに分類される。 ハードディスク上のデータを破壊、PCの動作異常・パフォーマンス低下、広告宣伝の強制表示、各種情報の漏洩・改竄などを引き起こす。

2.不正アクセス
許可されていないユーザによるPC/サーバへのログイン、大量の命令をサーバに送り回線速度やサーバ機能を低下または麻痺させる(DoS、Denial of Services)

3.データ傍聴・改竄
インターネットにおけるデータ送受信時のデータ傍聴・改竄

4.その他の脅威
SPAM---不特定多数、無差別に送信される宣伝・勧誘メール
有害サイト---犯罪、ポルノ、暴力、ドラッグなどのWebサイト

UTM製品はインターネットとLANの出入口に配置され、ファイアウォール、VPN、ゲートウェイアンチウィルス、アンチスパイウェア、IPS、コンテンツフィルタリングといった機能により、上記の脅威にそれ単体で対抗します。

2008-05-26

セキュリティは個人による管理から集中・統合管理へ(1)

コンピュータ、ネットワークを運用する際に悩ましいのがセキュリティ。 もし、あなたがルータのログを見たことが無いのであれば、一度みてみるといいかも。 きっと、得体の知れない国内外からのアクセスが一杯記録されています。

最近では、IT企業からの告知・宣伝や、マスコミから伝えられるコンピュータウィルスの被害ニュースもあって、セキュリティ対策が全く施されていないPCやネットワークは無くなりつつあるようです。 お客さんのPCを拝見しても、ノートンやウィルスバスターといったセキュリティソフトが入っています。 しかし、これだけで安心してよいのでしょうか? 個人向けのアンチウイルスやファイアウォールは個人で管理・運用することになりますが、PCに対する見識・知識、経験が異なる個人にセキュリティを任せて大丈夫?
「ウィルス定義が更新されていないPCがあった」とか、「新しいソフトをインストールする際に、アンチウィルスやファイヤウォールを解除し、そのまま放置してしまった」とか、経験ありませんか? 人にミスはつきもの、経験豊富なパワーユーザといえでも、設定し忘れ、戻し漏れといったミスは必ず発生すると言っていいです。 セキュリティは「人はミスをする」ということを前提としなけばなりません。 であれば、個人に“のみ”依存するセキュリティシステムは、ある程度の規模の企業・組織、おそらく、PC/サーバを15-20以上運用するような企業・組織においては、極めて危ういということになります。 では、どうすればよいか? 時代の流れは、個人管理から集中管理、統合管理へと向かっていると思われます。

それではその集中管理、統合管理を行うソリューションにはどんなものがあるのでしょうか? アンチウィルスのベンダーからは定義ファイルの更新状況や感染・駆除状況を管理マシンから集中的に管理できる製品が法人向けとしてリリースされてきています。 メールサーバにはメールに添付ウイルスがないか、スパムメールか否かを判断し、脅威と認識したメールは受信直後に隔離・削除する製品もあります(あります、というよりも、そのようなマルウェア駆除機能が今ではメールサーバの標準機能と言えるかもしれません)。 またUnified Threat Management(UTM、統合脅威管理)と呼ばれる機器は、インターネットとLANの出入口にあって、マルウェア、不正侵入、SPAMを水際で防ぎ、データの暗号化までも行ってくれます。 最近は高価だったUTMの価格も大分下がっており、中小企業でも大分導入しやすくなってきています。

【代表的なUTM】
SonicWALL
FortiGate
CheckPoint
NetScreen

【集中管理型アンチウイルス・ソフト】
Panda WebAdmin

土屋

2008-03-10

FlexSql売管 ― FileMaker と SQL Server 2005 による売上管理システム


FileMaker Pro 9 と Microsoft SQL Server 2005 (Microsoft SQL Server 2005 Express Edition) を統合させた売上管理システム 「FlexSql売管 R0.1」をリリースいたしました。

本ソフトウェアはフリーウェアですので、ご自由にお試しください。




◇FlexSql売管 情報ページ
http://www.tpc.jp/product/fsql/


※ SQL Server と FileMaker の関連記事(2014年6月追記)
一考の価値あり? ― FileMaker のMS SQL Server との連携。
FileMaker IWP と SQL-Server 2000 によるソフトハウス用ライセンス販売管理システム