Windowsファイアウォールを制御する

TCP 9999番ポートを開く。(testはラベル)
netsh firewall set portopening TCP 9999 test
これができてしまうということは、悪意あるプログラムはバックドアを簡単に作ることができそう。

PHPでグラフ描画

PHPでグラフを描画するライブラリには、JpGraphという有名なライブラリがあるんだけれども、商用利用では有償なのでその他のライブラリについて。
PHPlot
snort+acidにも利用されているらしい。
http://tec-tech.org/phplot5/doc/index-j.php
最終リリースが2004年10月なので、もう枯れた感が否めないが、残念ながら日本語が利用できないみたいだ。
GraPHPite
会社の人に紹介してもらったライブラリ。
PEARに移行済みで、Image_Graphとしてリリース(Ver.0.72 – α版)されている。こちらにサンプルとともにPHPコードがあるので、容易にグラフを作成することが出来る。

Windowsで優先度を変更する方法

Windowsで優先度を変更する場合には、Ctrl+Alt+Deleteプロセス一覧を表示させて、該当のプロセスを右クリックして、優先度を変更できる。(Linuxのreniceコマンドに相当)
起動時にも優先度を指定する(Linuxのniceコマンドに相当)ことができる。
cmd /c start /[low|belownormal|normal|abovenormal|high|realtime] (コマンド名)
で指定すればよい。

スロースタートアルゴリズム

いくら100Mbpsでイーサーネット接続できていたとしても、途中経路に低速な回線や処理能力の低いルータがあれば、100Mbpsで通信することはできず、輻輳(ふくそう:通信上限に達する)が発生する。
これを防ぐために、徐々に通信量を増やして最適になるように調整するアルゴリズムがスロースタートアルゴリズムである。

“スロースタートアルゴリズム” の続きを読む

フィッシングとファーミング

フィッシングとファーミングの違いは以下の通り
フィッシング
何らかの方法(URL偽装)などを利用して正規のサイトとそっくりの偽サイトに誘導し、実際にログインさせることでログイン情報などを取得する。URLを注意深くチェックすればフィッシングサイトに引っかかることは少ないが、Basic認証対応のURLの場合、ライトユーザーにはチェックが難しい。このURLでアクセスできなくなっているブラウザも存在する。
Basic認証対応のURLパターン:http://(ユーザー名):(パスワード)@(ドメイン名)/
http://www.yahoo.co:jp@hogehoge.com/
というサイトがYahooのサイトと認識されても不思議はない??(でも実際のところ無理がありそうな。。。)

ファーミング
DNSの解決の仕組みを悪用して、ホスト名の解決を正規のIPアドレスではなく、悪意あるホストのIPアドレスを返答させる。これを実現するには、DNSサーバーのキャッシュ情報を書き換える(DNSポイズニング)か、hostsファイルをウィルスなどによって書き換える。
この方法が成功すれば、ユーザーが良く訪れる信用あるURLが実は詐称サイトということになる。
この検出はかなり難しい。正しいhostsファイルのMD5を保存しておいて、それが変わった時点でhostsファイルを信頼しないしかない。あとは信頼あるDNSサーバーを登録するとか。。。もはやDNSサーバーが信頼できないなんて、ありえない事態だ。

Dell Remote Access Controller

DELL製品のリモート管理ソリューションです。これを利用することで、リモートから電源のON/OFFをすることができ、高負荷によってリセットできないといった問題から開放される便利なツール。しかし、ラックマウントサーバー Power Edge850(1U)においてRAIDカードをさしてしまうと利用できない(この問題はPower Edge860より解消されている)。DRACという略称が良く使われているらしい。
http://www1.jp.dell.com/content/learnmore/learnmore.aspx?c=jp&l=jp&s=pad&~id=pedge_remote&~line=enterprise&~mode=popup&~series=tower_servers

二重起動防止

Windowsで二重起動を防止させるためには、Mutexインスタンスを生成した際にエラーが出るかどうかで判断できる。
Linuxではその方法がよく分からないので、プロセス管理から見た形で実装をした例がの通り。
<?php
//プロセスコントロールクラス

define(‘PROC_ONLY’, 1); //プログラムベースで比較
define(‘CONTAIN_ARG’, 2); //引数が完全一致するかで比較
class ProcControl{
 //二重起動を防止するためのプログラム
 function isCurProcRuning($check_mode = PROC_ONLY){
  global $argv;
  if ($check_mode == PROC_ONLY){
   $target = $argv[0];
  } else {
   $target = ‘”‘ . implode(‘ ‘, $argv) . ‘”‘;
  }
  $handle = popen(“ps -ef | grep -w $target | grep -cv grep”, ‘r’);
  $read = fread($handle, 2096);
  pclose($handle);
  return $read > 1;
 }
}

//プロセスの2重起動を防止を判定
if (ProcControl::isCurProcRuning(CONTAIN_ARG)) die(“process already exist\n”);
?>

SANとNAS

SAN(Storage Area Network)とNAS(Network Attached Storage)は同じようなことを言っている(ストレージをネットワーク上に配置して仮想化して位置透過性を実現して利用する)ということなのだが、SANはネットワークそのもの、NASはハードウエアを示している。
SAN: http://e-words.jp/w/SAN.html
NAS: http://e-words.jp/w/NAS.html
ただ、具体的な違いは、ファイルシステム(NASはストレージ自身で持っているが、SANはサーバー側に持つので、互換性のないOSが同じ領域を読み込むと破壊が起こるがSANの方がオーバーヘッドは小さい)ストレージとの接続方法にあるようだ。
http://www.atmarkit.co.jp/fsys/keyword/007san_nas/007san_nas.html
http://itpro.nikkeibp.co.jp/article/COLUMN/20060407/234778/?ST=start4

最近はJ-SOX(日本版SOX法)対応や地震などのサービスを継続しがたい状態になった場合でも他のスタンバイサーバーで最新データにて運用を継続するなど冗長化への利用も増えているようだ。