snort with mysql と ACID 2005-04-24 (日) 16:08:34+09:00

ソフトウェア

対象 OS は CentOS4 。

snort.org から snort-2.3.2 の tar ball をダウンロードしてビルド。

# ./configure --with-mysql=yes
# make; make install

当初 snort.org の download から snort , snort-mysql の rpm バイナリをインストールしてみたのだが、原因不明で snort から mysql へのレコード追加など DB アクセスがまったくされないという症状が発生し、設定上何の問題もないにも関わらず解消しなかった。 ML の記事を見つけたが、同様の構成で同様の結末になり解決していないようだ。 tar ball からソースをビルドして全く同じ設定にしたところ、何の問題もなくサクサク動作した。

ACID をインストール。GD , ADOdb, JpGraph など必要なモジュールがインストールされていなければしておく。

ACID 設定の注意点:acid_conf.php の $db_connect_method を 2 (normal connection) に変更する。初期設定の persistent connection だと、ブラウザで更新するたびに mysql への接続スレッドが1つ増えブラウザを閉じても永続的に残り続ける。何のためにこんなモードが初期設定されているのか全くわからないのだが、この設定のままだとリソースを圧迫して最悪システムダウンを招く原因となるので必ず変更しよう。

snort と ACID のインストールについては @IT の「Snortでつくる不正侵入検知システム」と、「とりあえず動く MySQL + Snort+ ACID(BASE)メモ」が参考になった。

snort の侵入検知ルールは *.rules という名前のファイルで管理されているが、これの最新版を入手したければ snort.org で Regist ( 無料 ) または Subscribe ( 有料 ) が必要となる。 Regist すると、最新ルールを入手できる URL が手に入る。

ルールの更新、 snort.conf への反映などの処理は oinkmaster が便利だ。grin 氏の blog記事、情報が古いが、日本 snort ユーザー会の「oinkmaster を使う ~ 楽々簡単ルールファイルメンテナンス ~」が参考になった。


OS構成としては、サーバー側がCentOS4、クライアント側がWindows98/Me/2000/Xp、サーバー側の文字セットとして標準的なUTF-8を想定し、フリーのソフトウェアで環境を構築するという条件で考える。

まず、必要なソフトウェアについて。

Windows 側クライアントとして、他にもあるかも知れないが見つけた範囲では、 TeraTermPro を平田豊氏が改良されたUTF-8対応版か、 Poderosa の二択である。

いろいろ試したので、他のツールについても書いておく。

SSH SecureShell…非商用使用に限り使える無料版が存在するが、日本語非対応。現在はSSH Tectiaという後継製品となっている。

・Putty…本家は日本語非対応。日本語対応版ごった煮版Putty JP Xtransと、日本語化を含めた改良がされているようだ。しかし残念ながら Me ではダイアログの文字が化けてしまう。情報を頼りに、puttyjp.exe, puttyjp.lng を putty.exe, putty.lng にリネームし、putty.lng をエディタで開き [Japanese] セクションの '_FONTNAME_=MS UI Gothic' を Win98系で存在するフォント名に変えてみたがだめだった。XP の msgothic.ttc をコピーしてみたが、同名のファイルがOSに常に掴まれているため置き換えできができなかった。

・Cygwin…Windowsでクライアントを使いたいので Cygwin を導入するのは本末転倒だが、 bash で LANG=Ja_JP,UTF-8 としても無駄なようだ。

結論としては、 Poderosa がわりと良いんではなかろうか。複数の端末を同時に開けられるし、公開鍵の生成もできる。Cygwin の端末としても使える。ただし注意点が2つ。まず、 ssh2 の鍵は 2048 bit までのようだ。ssh-keygen でつくった 4096 bit の DSA 鍵は使用できなかった。Poderosa 自身の生成機能でも最大値は 2048 だ。次に、cygwin 端末として使う場合 cygwin1.dll が poderosa.exe のあるフォルダの下の Cygterm/ フォルダ内に必要だ。 c:/cygwin/bin/ にパスを切ってもよかろうが、 cygwin の他のバイナリが意図せず動作するなど副作用が嫌なので、 dll をそこに放りこんだ。

次に、sshd サーバーの設定。/etc/ssh/sshd_conf に対する初期設定からの変更点。

試行錯誤するので、最初に:
LogLevel DEBUG
としておいたおかげで、 /var/log/secure をみて、パーミッションの問題で認証失敗しているなど情報が得られた。用が済めばコメントアウトすればよい。

SSH2 のみを許可:
Protocol 2

SSH1 での RSA1 接続を禁止し、 SSH2 での RSA/DSA 接続を許可する:
RSAAuthentication no
PubkeyAuthentication yes

(コメントアウトしても動いたが、トラブルになった場合は):
AuthorizedKeysFile &h;/.ssh/authorized_keys
としておけば、接続許可したい各ユーザーの公開鍵情報一覧がどのファイルに入っているか、明示できるだろう。

rhost 関係、サーバー側の known hosts 、ホストベースでの接続を禁止:
RhostsRDSAuthentication no
HostbasedAughentication no
IgnoreUserKnownHosts yes
IgnoreRhosts yes

公開鍵認証のみ許可したいので、パスワード認証を禁止して空のパスワードでの接続も禁止:
PasswordAuthentication no
PermitEmptyPasswords no

次に、サーバーに接続したいユーザーの鍵に関する設定の例。

1. そのユーザーでサーバーにログインして、ホームディレクトリの直下に .ssh/ ディレクトリを作成して、パーミッションを 0700 にする。

2-a. クライアント側で鍵の生成が出来ない場合。(TeraTermPro の場合。)
接続したいユーザーでサーバーにログインして、
ssh-keygen -b 4096 -t dsa
などどして、公開鍵と暗号鍵をつくる。保存先は .ssh/ 内が初期位置なのでそのままでよい。パスフレーズを聞かれるので、最低6文字以上の一意の文字列を考えて入力する。空白文字などの記号も使用可能だ。クライアントからログインするときは、このパスフレーズをパスワードとしてログインすることになる。

上の例では公開鍵として id_dsa.pub が、秘密鍵として id_dsa ができる。このうち、秘密鍵はクライアント側に何らかのセキュアな手段で移動させ、公開鍵は .ssh/ ディレクトリ内に authorized_keys というファイルを作ってそこに追記する。公開鍵は1行で1ユーザー分の認証情報になっており、当該ユーザーとしてログインを許可したいユーザーの公開鍵をこのファイルに追記していく形式となる。ちなみに authorized_keys のパーミッションは 0600 となる。

2-b. クライアント側で鍵の生成が出来る場合。(Poderosa の場合。)
クライアント側で鍵を生成する。生成した公開鍵をサーバーのログイン許可したいユーザーの .ssh/ ディレクトリ内の authorized_keys というファイルに追記する。

3. ssh クライアントで接続を開始する。
・相手のホスト名は、サーバー側のホスト名または IP アドレス。
・プロトコルは SSH2 。
・ポートは SSH の 22番ポート。
・ユーザー名には、サーバー側に存在するログインしたいユーザー名(当たり前だが .ssh ディレクトリなどを作って準備したユーザーの名前だ)を入れる。
・認証方法は、「公開鍵」方式。
・パスフレーズは、鍵を生成したときに決めたものを入れる。
・鍵ファイルは、サーバーで生成しクライアント側に持ってきた(または、クライアントで生成した)鍵のうち、秘密鍵の方のファイル名を指定する。

以上で、 ssh2 で公開鍵を用いたログインができるようになる。


CentOS4導入記 2005-04-19 (火) 02:29:09+09:00

ソフトウェア

知人のサイトでLinuxの記事をみるうちに触発され、ひさしぶりにOSを導入してみた。

あまっている検証機は、PentiumPro200MHzが2個載っている古いタワー型PCだ。電源を入れてみたら、まだなんとか動くらしい。SCSIの4GBのHDDが1個、2GBが1個、ATAPIのCDROMドライブが1台、ビデオに初代1MBのMilleniumがささっている。

インストールに2時間半、ネットごしのアップデートに2時間かかった。XGAサイズのGNOMEのデスクトップの上を、マウスカーソルが飛び飛びにワープしている。重い…はげしく重い。あげくに最初繋いでみたマウスが寿命でいかれてしまったらしい。カーソルがはげしくランダムワープする上にでたらめにあちこちクリックしまくってしまう。カールさんの壊れたPCを修理したものを弟が使っているのだが、それのマウスを借りてようやく導入が完了した。自分のマウスは壊れたものをのぞいて全てUSBなので使えなかったからだ。

日本語入力モードにはいる方法がわからない。しばらくgoogleで調べてみつけた。RHL系はshift+spaceでしたか。そういえばそうだった気もするが、すっかり忘れていた。

OpenOfficeのWordが縦書きに対応しているかが気になった。以前(RHL7.3の頃)は、横書きしかなかったが、調べてみるとページ設定で設定できるようになっていたので感動した。これで脚本が書けるようになったじゃないか…と、ためしに用紙横置き縦書きに設定して、日本語で「これはテストです。」と打ってみたら、文字が化けて表示された。横書きに設定変更すると正常に表示される。縦書き時のフォント処理にまだ問題があるらしい。残念だ。縦書きで遜色なく文章が打てるようになるまでに何年かかるのだろうか。

…それはさておき、OS自体に関しては安定して動作しているようだ。知人サイトの記事を参考にWebDAVとSVNを試してみようと思っている。それと、blogのローカルテスト環境もつくろうと思う。そのために入れてみた。

ちなみに、この記事はPentiumPro機で入力されたものだ。


関東在住の友人から夜間電話があり、彼がホームページを作りかけていて、萌えるカウンターなるものの設置を試みていることがわかった。

自宅にサーバーを立てているそうで、そのサーバーを用いて、ホームページにカウンターを設置しようとしているそうで、動作確認でお手伝いしたが、カウンタ値が更新されない。プログラマー畑というよりサーバー系の人なので、今回 CGI を動作させる部分でうまくいかないようだった。

彼が、明日の仕事にそなえて就寝した頃にふと、この blog に設置してみようかと思い立ってとりつけてみた。

画像には、日下こかげさんの「OSたんカウンタ」をkurageさんが縁取り、透過処理されたものを使わせて頂いた。

カウンターのコードは実は、 rinn さんの rnote 用サンプルプラグインそのままだ。文字列を出力している箇所をちょっと変えただけだ。(笑)

ひさしぶりにプログラミング(というほどのもんじゃないが…)をしてみて、書き方を忘れかけていたことと、rnote のカスタマイズのしやすさを感じた。思った処理が実現しやすい。C でも PASCAL でも、 Algol 系の言語経験が少しあれば、RAD 的はやさでサイトを構築できるんではないだろうか? MOVABLETYPE などの大がかりな blog ツールでこんな軽快さが得られるかどうか…。素晴らしいツールだ。

ちなみに、深い意味なく設置してしまった画像カウンターだが、このような画像になじめば自分も「萌え」というものが理解できるようになってくるのだろうか…。

なんとなくだが、なにかが音を立てて崩れていった気がするのは気のせいだろうか。

[コメントの受付は終了しています ]
1: 冬星 (04/04 12:53)
moonfishさんの「ねこみみカウンター改」の画像も出てくるようにしてみました。クライアント側にスクリプトを用意していないのでとりあえず出るだけです。ランダムに画像が選ばれるので何度か更新すると出てくるでしょう。