アプリケーション


2007年2月13日

リモートデスクトップ

リモートデスクトップとして使えるものをあげてみた。

VNC Viewer
クライアント側:WindowsすべてのEdition サーバー側:WindowsすべてのEdition

Windows リモートデスクトップ
クライアント側:Windows XP, Vista, 2003 Server, Linux サーバー側:Windows XP, Vista, 2003 Server
※rdesktopを使うとLinuxから接続することも出来る。

NetMeeting
クライアント側:WindowsすべてのEdition サーバー側:WindowsすべてのEdition

2007年1月 7日

BIOSパスワードのバックドア

BIOSパスワードって忘れた際にメーカーで復旧できるように管理用パスワードが設定されているらしい

ただPHOENIX BIOSでphoenixを試してみましたがだめでした。最近は変更されているのかもしれません。試してみる価値あり??

2007年1月 6日

VMWare

仮想サーバーの代表格であるVMWareだが、Workstation版を利用する機会があった。
Workstation版ではスナップショットを取ることが出来、瞬時に特定のポイントに戻すことが出来る。開発途中のアプリケーションによってOSなどの環境を破壊して起動しなくなるようなことがあってもスナップショットがあれば安全。(ただVMWare Serverではスナップショット機能に制限があるようだ)

また複数のOSのイメージを登録しておけば、複数の環境における動作チェックも1台のマシンで容易に出来る。

なお、VMWare Serverはフリーになっており、今回利用してみた。

ダウンロードするためにはアカウントの作成が必要となり、その後個人情報の入力が必要となる。
ダウンロードする前にライセンスキーを取得しなければならない点は注意しなければならない。

VMWare ServerはホストOS上にゲストOSのイメージを動作させるという形式であり、VMWare WorkStationと比べても遜色なく利用できる(言語が日本語でない点は苦労するかもしれない)。

ホストOSはWindowsもしくはLinuxを選択できる。今回はWindowsを利用した。
ダウンロード時に30日しか利用できない・・・という点があるがライセンスキーをインストール時に登録すれば日数制限に関係なく利用できる。

VMWareはホストOS上でもメモリを消費するが、ゲストOS上でも設定されたメモリを消費するので、かなりのメモリが必要である。256MBのマシンではかなり厳しい。


VMWare Server上でFedora Core6をインストール

続きを読む "VMWare" »

2006年11月28日

パケットをキャプチャする

WindowsではEthereal(Wireshark)が有名だが、Linuxではtcpdumpコマンドが利用できる。たとえば、SMTP(25番)ポートで通信が行われているかどうかは、

# tcpdump port 25
を実行することで確認できる。

2006年11月22日

Mac OSのゼロデイ脆弱性に対する攻撃コードが公開に

ソフトウエア開発の難しさと今後の自分自身への警鐘とするニュース。

どんなシステムでも脆弱性がない問題はない。ましてや最近は攻撃用ツールが高度化している関係で、脆弱性が見つけられやすくなっている。そして情報の共有化が進み、脆弱性へ対応できる開発者が対応にかかる時間よりも攻撃するための時間が圧倒的に短くなっていることがこのような問題が発生する要因であろう。

今後は脆弱性が間違いなくゼロディ攻撃につながるとすればアプリケーション開発者は脆弱性のないアプリケーション開発をする=品質の高いアプリケーションを提供しなければならない。しかしながら一方で、脆弱性が含まれないアプリケーションを開発することが困難なことは自明であるから、バグを早期に洗い出せるスキルをもつ人材の育成やツールの開発が必要になるだろう。

2006年11月21日

Plagger

フィードアグリゲーターと呼ばれるソフト。簡単に言えば、ある情報源(または複数の情報源)から情報を取得し、整理して(ファイル形式の変換なども含む)提供するソフトウエア。概要は@ITでうまく説明されている。公式サイトはTracで構築されていますね。Trac習得しないとなぁ・・・。

2006年11月18日

パスワードの管理と復号

多くのパスワードをどのように管理されていますか?定期的に変更しなければセキュアでないとしてもパスワード自身を忘れてしまっては元も子もない。パスワードを集中管理するにはID Managerを、もし万一忘れてしまった場合にはみえみえパスワード(Basic認証など)を使ってみると良いだろう。 

2006年11月 7日

trac

チーム開発するにおいては必要な進捗管理およびバージョン管理のためのソフトウエア。詳しい概念は、discypus.jpに紹介されているので参考にしてみてください。lighttpdやMovalog Plugins、Symfonyなどのオープンソースのプロジェクトでも利用されています。

2006年11月 4日

エラーに対する対処方法

Linuxでコンパイルインストールなどの際にエラーに悩むことは多いかと思いますので、今までに遭遇したエラーについて記述していきたいと思います。
openssl/err.h: No such file or directory

openssl-develパッケージが入っていないため → yum install openssl-devel でインストールした後に際コンパイルしなおす

SATA disks accessed via libata are not currently supported by smartmontools. When libata is given an ATA pass-thru ioctl() then an additional '-d libata' device type will be added to smartmontools.
smarttoolのバージョンが古く、SATAのデータが取得できないため → smarttoolをアップグレードする。もし見当たらない場合には、kernel-utilsをアップグレードする

SSLeay.xs:102:25: error: openssl/err.h: No such file or directory
perl -MCPAN -e shellからinstall Net::SSLeayコマンドを実行した際に表示される可能性のあるエラーでopenssl/err.hがないため、コンパイルに支障があることを示している→openssl-develパッケージをインストールする。

postfix/cleanup[XXXX]: fatal: open database /etc/postfix/virtual.db: No such file or directory
Postfixでバーチャルホスト設定をした際に
# postmap postfix/virtual
を実行していなかったために起こるため、このコマンドを実行する。

cannot access the server configuration file "/var/lib/pgsql/data/postgresql.conf": Permission denied
/etc/init.d/postgresqlのPGLOGで設定したファイル(デフォルト:/var/lib/pgsql/pgstartup.log)に書き込まれるエラー。init.dでpostgresqlが起動しないときには、SELinuxの設定がどのようになっているかチェックする。getenforceコマンドでenforcingが帰ってくる場合には以下の方法で無効にした上で、再起動する。

# vi /etc/selinux/config

#SELINUX=enforcing


SELINUX=disabled
に変更する

Error in IMAP command APPEND
SquirrelMailはPHP5での動作に不具合があるため修正が必要。Vine Linuxで自宅サーバーに情報源がありましたが、/usr/share/squirrelmail/functions/imap_general.phpの888行目付近を以下のように変更します。

function sqimap_append ($imap_stream, $sent_folder, $length) {
  fputs ($imap_stream, sqimap_session_id() . " APPEND \"$sent_folder\" (\\Seen) \{$len
gth}\r\n");
  $tmp = fgets ($imap_stream, 1024);


function sqimap_append ($imap_stream, $sent_folder, $length) {
//  fputs ($imap_stream, sqimap_session_id() . " APPEND \"$sent_folder\" (\\Seen) \{$len
gth}\r\n");
  fputs ($imap_stream, sqimap_session_id() . " APPEND \"$sent_folder\" (\\Seen) {" . $le
ngth . "}\r\n");
  $tmp = fgets ($imap_stream, 1024);

仮想ホストが不明です

Mailmanをバーチャルホストで運用しようとした際に、発行しようとしているメーリングリストのドメインと管理ツールのドメインが異なっている際にmm_cfg.pyにadd_virtualhostが設定されいないために発生します。

Symbolic link not allowed or link target not accessible

Apacheのログにこれが出ている場合には、httpd.conf内のDirectoryディレクティブ(ディテクティブではない)のOptions設定でFollowSymLinksが含まれていないためによるもの。

[crit] [client XXX.XXX.XXX.XXX] (13)Permission denied: /home/YYY/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

Apacheのログにこれが含まれている場合には、.htaccessが読み込めないものによる。ただし、DocumentRootに/home/YYY/ZZZ/などになっているにもかかわらず、DocumentRootよりも上位のディレクトリの.htaccessに読みとりエラーが出ていたらそれは/home/YYYディレクトリに対してotherの実行権限がないことによる問題が考えられる。

2006年10月24日

nagios

稼動チェックツールを自作する手もあるのですが、作成したパターン分だけメールに悩まされて障害切り分け遅くなったり多重障害に陥るのもおかしな話です。

結構細かい設定までできてしまうのが、nagiosというソフトウエアで、導入している企業も実際あるようです。

http://www.atmarkit.co.jp/fnetwork/tokusyuu/22tool/02.html

ネットワーク監視ツールnagiosの特徴について
・一度障害を検出した後はステータスが変わらない限りはエラーメッセージが飛んでくることがない
・ネットワーク障害が発生した際にアプリケーション層のエラーメッセージが飛んでくることがない(切り分けが容易なのと、エラーが収束した後に大量のメッセージに悩まされることがありません)
・計画停止はあらかじめ登録しておくことでエラーが起こらないようにできる
・レポート機能を使って稼働率の算出をすることができる


インストールの際に利用した情報源は以下のとおり
http://cubic9.com/Nagios/
http://nagios.x-trans.jp/naija/index.php?%C6%FC%CB%DC%B8%EC%B2%BD
http://bal4u.dip.jp/mt/server/archives/2004/09/index.html (設定ファイルについては一番シンプルにまとまっていました)

zlib-devel, mysql-devel をインストールします
/usr/sbin/adduser nagios でユーザーを追加します
以下のコマンドを実行してダウンロード&コンパイル&インストールを行います

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-1.4.1.tar.gz
wget http://keihanna.dl.sourceforge.jp/nagios-jp/20198/nagios-1.4.1-ja.patch.gz
wget http://keihanna.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.4.tar.gz
tar zxvf nagios-1.4.1.tar.gz
cd nagios-1.4.1
gzip -dc ../nagios-1.4.1-ja.patch.gz | patch -p0
./configure
make all
make install
make install-init
make install-config
make install-commandmode

別途プラグインをインストールします。多くの場合インストールは必須になります。

wget http://nchc.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.5.tar.gz
tar zxvf nagios-plugins-1.4.5.tar.gz
cd nagios-plugins-1.4.5
./configure
make
make install

設定ファイルはhttp://bal4u.dip.jp/mt/server/archives/2004/09/nagios_1.htmlを見て設定します。

続きを読む "nagios" »

2006年10月22日

システムの複雑さとソースコードの行数は指数関数的?

日経コンピューター9/4号より

Windows NT 400万行

Windows 95 1,500万行

Windows XP 3,500万行

Windows Vista 5,000万行

次期バージョンは1億行にも??下位互換をサポートしつづける以上はこの関係はある意味し方が無いのかもしれない。

2006年10月18日

webmin

webminをFedora Coreでインストールする際の記録です。

1.yumではインストールできないので、

wget http://jaist.dl.sourceforge.net/sourceforge/webadmin/webmin-1.260-1.noarch.rpm を実行しダウンロードします。

2.rpm -ivh webmin-1.260-1.noarch.rpm を実行し、インストールします。

3.vi /etc/webmin/miniserv.conf

allow=(許可したいIPアドレス)
ssl_redirect=0
を設定します。

4./etc/init.d/webmin start でサービスを開始し、起動できることを確認します。

5./sbin/chkconfig --level 35 webmin on
でサービスの登録を行います。

なお、ダウンロードするバージョンには脆弱性が含まれているので、すぐにアップデートしなければならない。

6.言語設定を変更します。設定はwebminタブの直下とWebmin 設定メニュー内の2箇所にあります。

7.Webminの設定内でSSLを暗号化するようにします。このときNet::SSLeayがインストールされるが、失敗する場合には、以下の方法で手動インストールする

perl -MCPAN -e shell
最初は質問されるが、全てEnterでOK。一部ダウンロード先を聞かれるので、Asia - Japanを選ぶ
install Net::SSLeay

NISサーバー

Network Infomation Serverといい、TCP/IP上で コンピュータの情報を共有するサービス。Windowsでも対応している。複数台のサーバーを管理する際に、アカウントなどは集中管理できるに越したことが無いわけだが、その際にはNISを使うと良い。これと似たようなものにLDAPがあるが、LDAPはどちらかというと同じ集中管理でもアドレス帳など個人情報を問い合わせするサービスであり、NISサーバーはNISクライアントからの(アカウント発効などの)アクションに対するサービス提供という意味で大きく異なる。

2006年10月10日

NFSサーバーの設定

RedHat(Fedora Core)でNFSサーバーを設定する場合には以下のとおり

/etc/exportsファイルに以下を設定する

マウントポイント IPアドレス(モード)

モードには以下を利用すると良い

読み取り専用にしたい場合:ro

読み書きできるようにしたい場合:rw,no_root_squash,sync

あとはサービスの設定をするだけ

/sbin/chkconfig --level 35 nfs on

/etc/init.d/nfs start

続きを読む "NFSサーバーの設定" »

2006年10月 9日

VLC Media Player

フリーのDVD再生ソフトです。クラスプラットフォーム(Windows, Mac, Linux, etc...)に対応していて、いままでWinDVDを使っていましたが、遜色ない出来です。

2006年10月 3日

サードパーティ製パッチについて

サードパーティ製パッチはMicrosoftがパッチ提供に対する認識の甘さを指摘するものだ。Microsoftは毎月第2火曜日をパッチの提供日にしているわけだが、ゼロディ攻撃が当たり前になりつつある現在において、かなりいただけない。

もちろん、トレンドマイクロ社における不適切な定義ファイル配信ということがあってはならないので、テストは十分に行わなければならないのだが、セキュリティに対する意識の向上をエンドユーザーに徹底するべき会社としての社会的な責任は大きいと考える。

ところで、シマンテック社のサポートもかなりいただけない。先日Corporate Editionの問い合わせを行ったにもかかわらず、返答があったのは2日後、それもありきたりの回答だった。ゴールドサポートという仰々しい名前があるにもかかわらず、電話がほとんどつながらないなど、セキュリティソフトの販売会社として、カスタマサポートがおざなりになるようではいかがなものかと思う。まぁ、現場は相当忙しいのだろうけれども。

2006年10月 2日

proftpd

バージョンが ProFTPD1.2.10rc1 以降 NLISTコマンドが対応しなくなりました。

使用するFTPクライアントソフト(FFFTPなど)によっては標準でNLISTコマンドでリスト取得しているため
接続できてもファイルがなにも表示されない。という現象がでてきます。

この問題を回避するにはクライアントソフトでLISTコマンドでリストを取得するように変更するか、proftpdにパッチをあてる必要があります。

http://dreamer-site.net/modules/bwiki/index.php?ProFTPD1.2.x%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%A5%AC%A5%A4%A5%C9

2006年8月21日

S.M.A.R.T.

ハードディスクの自己診断装置。Self-Monitoring, Analysis and Reporting Technology Systemの略。

smartctlコマンドで取得でき、smartmontoolsパッケージに含まれている。

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/521smartinfo.html

続きを読む "S.M.A.R.T." »

2006年8月 4日

二重起動防止

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");
?>

2006年7月25日

snmpとMRTG

○CPUのLoad Averageをグラフに描画する
snmp.confでの設定は特に不要

Target[192.168.0.1_cpu]: 1.3.6.1.4.1.2021.10.1.5.1&1.3.6.1.4.1.2021.10.1.5.2:
public@192.168.0.1 (※改行されていますが、1行です)
MaxBytes[192.168.0.1_cpu]: 300
YLegend[192.168.0.1_cpu]: Load Average
LegendI[192.168.0.1_cpu]: 1min
LegendO[192.168.0.1_cpu]: 5min
ShortLegend[192.168.0.1_cpu]: %
Unscaled[192.168.0.1_cpu]: dwmy
Title[192.168.0.1_cpu]: Load Average for www.hogehoge.com
PageTop[192.168.0.1_cpu]: <H1>Load Average for www.hogehoge.com</H1>
Options[192.168.0.1_cpu]: gauge,growright
ThreshMaxI[192.168.0.1_cpu]: 50


○httpd(inetd)のプロセス数をグラフに描画する
snmp.confに以下の行を設定する
proc httpd
proc指定は.1.3.6.1.4.1.2021.2のMIBで取得可能なので、MRTGでは

Target[192.168.0.1_httpd]: .1.3.6.1.4.1.2021.2.1.5.1&.1.3.6.1.4.1.2021.2.1.5.1:
public@192.168.0.1: (※改行されていますが、1行です)
MaxBytes[192.168.0.1_httpd]: 200
Title[192.168.0.1_httpd]: HTTPD Process for www.hogehoge.com
PageTop[192.168.0.1_httpd]: <H1>HTTPD Process for www.hogehoge.com</H1>
Options[192.168.0.1_httpd]: absolute,gauge,nopercent,integer
Unscaled[192.168.0.1_httpd]: dwmy
ShortLegend[192.168.0.1_httpd]: process
YLegend[192.168.0.1_httpd]: HTTPD Process


○PostgreSQLのコネクション数をグラフに描画する
まず、vi /home/postgres_process.shとして以下を記述する

---------------------------
#!/bin/sh

LANG=C
export LANG
POSTGRESQL=`ps -ef | grep -w postgres | grep -cv grep`
echo $POSTGRESQL
---------------------------
chmod oug+x /home/postgres_process.shとして実行できるようにする。
ためしに/home/postgres_process.shを実行して数値が帰ってくるか確認する。

snmp.confに以下の行を設定する
exec postgresql /home/postgres_process.sh
exec 指定は.1.3.6.1.4.1.2021.8のMIBで取得可能なので、MRTGでは

Target[192.168.0.1_postgresql]: .1.3.6.1.4.1.2021.8.1.100.1&.1.3.6.1.4.1.2021.8.1.100.1:
public@192.168.0.1: (※改行されていますが、1行です)
MaxBytes[192.168.0.1_postgresql]: 150
Title[192.168.0.1_postgresql]: PostgreSQL Process for www.hogehoge.com
PageTop[192.168.0.1_postgresql]: <H1>PostgreSQL Connection for www.hogehoge.com</H1>
Options[192.168.0.1_postgresql]: gauge,absolute,integer,unknaszero,nopercent
Unscaled[192.168.0.1_postgresql]: dwmy
ShortLegend[192.168.0.1_postgresql]: connections
YLegend[192.168.0.1_postgresql]: PostgreSQL Connection

を設定する。
ところで、デフォルトではグラフの向きが左向きになっているが、日本人の感覚では時系列は右向きであることが自然だ。そこで、全体にgrowrightを効かせる方法(オプションディテクティブ)があるので、これも使ってみると良い。
Options[^]: growright

続きを読む "snmpとMRTG" »

2006年7月24日

再帰的に内容をチェックする

find /var/ -name '*' -exec grep -nH 'hogehoge' {} \;

/var 以下のファイルにhogehogeが含まれるファイル名とその行数を表示

2006年7月18日

md5sum

md5チェックサムの使い方

生成方法
md5sum (target_file) > (md5チェックサムファイル)

検証方法
md5sum --check (md5チェックサムファイル)

OKの場合
(target_files):OK
NGの場合
・・・エラー内容・・・
md5sum: WARNING: 1 of 1 listed file could not be read

2006年7月 4日

MD5とSHA-1

・MD5 RFC1321
1992年にRon Rivest氏が開発
メッセージダイジェスト:128bit

・SHA(Secure Hash Algrithm)1 RFC3174
メッセージダイジェスト:160bit

MD5, SHA-1のいずれにおいても衝突(ハッシュ値が同じになる平文が存在すること)が確認されている。

2006年7月 3日

いろんなソート

大学のときに勉強していたけれども、実際のところ上級言語においてはソートを実装することはまれである。でも最適なオーダーのアルゴリズムを身につけるうえでは非常に重要だと思うので復習。

・クイックソート(オーダー 平均:nlogn 最悪:n2)
・マージソート(オーダー 最悪:nlogn)
・ヒープソート/2分木ソート(オーダー nlogn)
・バブルソート(オーダー n2
※底が省略されているものは、eが底である。念のため・・・

その他で以下のものがあるようだ。
・バスケットソート
・基数ソート

2006年6月26日

sambaによるパスワード共有

sambaでLinuxアカウントのパスワードと共有を行うにはどうしたらよいだろうか?
答えは、smb.confにてencrypt passwordsをYesに設定する。これはデフォルトなので、多くの環境においては問題ない。
問題は、パスワードの変更方法だ。passwdコマンドを使ってしまうと、Linuxアカウントのパスワードは変更されるが、sambaのログインパスワードは変更されない。
smbpasswdコマンドを代わりに利用することで、このコマンドがpasswdコマンドを実行してLinuxパスワードの変更を行ってくれる。
但し、注意事項があるので、こちらを参照されたい。
smb.confのsecurityオプションに関しても面白いドキュメントがあるので、こちらを参考に。

2006年6月14日

Paros

最新バージョンは、3.2.12である。
使ってみた感じでは、Script Insertionを中心的にテストを行っているようだ。実際に運用中のWebアプリケーションの不具合をチェックすることができたので結構使えると思う。

使い方はこちらを参考にされたい。

2006年6月 5日

マスターブートレコーダーがとんだ場合は

Fedora Coreをインストールするとgrubというブートローダーがインストールされる。
このあとにWindowsでリカバリーをかけると、場合によってはMBRを初期化しないケースがある。
その場合、grubだけが起動してしまって、その次のステージに進むことができない。
このようなケースには次の方法を利用すると解決できた。
grub内で・・・
chainloader +1
boot

Windowsが立ち上がったあとで・・
Windows回復コンソールを使う。
fixmbrコマンドを利用してMBRを修復する。

次の文献を参考にされたい。
http://www.geocities.co.jp/SiliconValley-Bay/3897/grub/grub-3.html
http://support.microsoft.com/default.aspx?scid=kb;ja;314058

2006年6月 2日

富豪的?平民的?貧民的?

コーディングの仕方についてのもの。
最近はコンピュータリソースが昔ほどシビアでないので、多少無駄なことをやっても可読性を重視すべきだというのが平民的プログラミング。
平民的なプログラミングをする人間にとって見れば、組み込み系開発を行っている人間を貧民的と言う。ある意味古典的な職人芸だとも言う。
富豪的なプログラミングは、あきらかに無駄な処理を含むプログラミング。通常、logNのオーダーで処理すべきところをN2にするようなプログラム。
自分はどちらかといえば、平民的より貧民的に傾斜したプログラミングをするのであろう。

2006年3月30日

インフォカート

新しいアフィリエイト?インフォカート