情報危機管理

「危機管理」はどこでも必要。(部屋に鍵をかけるとか、ミサイル防衛構想とか、、、)
「情報」はネットワークの発達により、簡単に「危機」がやってくる。

「事件」と「対策」


・計算機をダウンさせた
実例: (1) プロセスを何個 fork() できるか試して見た。
(2) メモリーをどれだけ malloc() できるか試して見た。
対策: 該当者のアカウントが剥奪された。

・不正な計算機資源の利用
実例: メールサーバで大規模な計算を行っていた。
対策: ユーザプロセスを監視。nice を使うように教育。
実例: ディスクを大量に消費(フリーソフトのコンパイル・インストール)
対策: ディスク・クォータ (quota) を使い、制限。必要なソフトは管理者がインストール。

・メールの不適切な利用
実例: 添付メールをクラス全員にばら撒く。
対策: 一通の大きさを制限(1MB)
実例: ウィルス付きメールが来る。
対策: 受信時にスキャンして隔離する(procmail)。副作用として一部添付メールが受信できない。
例:チェーンメール・ネズミ講・デマ情報
対策:教育

誹謗中傷・プライバシー侵害

運用ポリシー

・商業利用
・利用料金
・組織のネットワークの私的利用
・サーバー開設の可否
Webページの対象
ユニバーサルアクセス、バリアフリー
異なる価値観
自由な情報発信

運用規約・管理組織

運用規約(運用ポリシーの成文化)

システム管理組織(ポリシーを実現する人たち)
・技術的なこと・法律的なこと・経営的なこと

技術的なこと(監視を含む)と人間教育の問題

不正アクセスとセキュリティ

認証(パスワード)
・パスワードの管理(個人・システム管理者)
・パスワード認証の仕組み
UNIX のパスワードファイル
・/etc/passwd /etc/shadow
tkikuchi@nws% /www/bin/htpasswd -c passwd tokio
New password: ← 見えない hogehoge と入力
Re-type new password: ← 同じく
Adding password for user tokio
tkikuchi@nws% cat passwd
tokio:WI/U/s091SyLs
tkikuchi@nws% cat pass.c
#include <stdio.h>
#include <crypt.h>
main() {
    char *salt = "WI";
    char *passwd;
    char *plain = "hogehoge";
    passwd = crypt(plain, salt); # 暗号化
    printf("%s\n", passwd);
}
tkikuchi@nws% gcc -o pass pass.c
tkikuchi@nws% ./pass
WI/U/s091SyLs
・crack というプログラム -- あてずっぽうのパスワード解読プログラム (ログインを繰り返したら怪しまれるので、パスワードファイルを手に入れて 自分のマシンで実行する)
・パスワードは何通り?
  A-Za-z0-9(62文字)/長さ8文字 ... 218,340,105,584,896通り
  a-z0-9(36文字)/長さ6文字 ...... 2,176,782,336通り
1通りを試すのに 1μ秒として全部試すのにどのくらい時間がかかるだろうか?

組織の内部と外部を分ける

1. 外部へアクセスできるホスト・PC
2. 外部からアクセスできるサーバ
Proxy(代理)サーバの利用と管理

システム侵入の手口

1. サーバの脆弱性(vulnerability)を突く
2. 裏口を開ける
3a. パスワードファイルを取る
3b. パケットスニッファ(packet sniffer)を仕掛ける
4. 正規ユーザになりすます

サーバの脆弱性とは? ... バッファ・オーバフロー(buffer overflow)
・バッファ・オーバフローするプログラムの例
#include 

main() {
    char buf[4];

    gets(buf);
    puts(buf);
}
sscanf() でなく fgets() + sscanf() を使う.
printf() でなく snprintf() を使う.
(man ... を読む)

脆弱性の例

匿名性の悪用

・Web 掲示板
・Proxy
・フリーメール

電子メールによる広告(SPAM)

・メールの不正中継 ・振り分け(パターン、確率)

暗号