月別アーカイブ: 2007年4月

ターミナルにてログインパスワードを再入力する

対象OS

Mac OS X 10.3 (Panther)
Mac OS X 10.4 (Tiger)

はじめに

Darwin にて各種設定をする際に、su コマンドで root ユーザーになる機会は多い。その際、root ユーザーのパスワードを入力する必要があるけど、タイプミスすることもある。

そんな時、[Back Space] キーで消すことができない。[Back Space] もキー入力として認識されるんだよね。Mac OS X や Windows へのログオンでは、通常の文字入力同様に [Back Space] が使えるから、この違いにはイライラすることもあると思う。

ターミナルでのパスワード入力には [Back Space] は使えないけど、パスワード入力しなおしは下記のようにできる。

入力した文字列を一括消去する

control + U  (コントロールキーを押しながら u キーを押す)

これはパスワード入力以外でもターミナル内で有効。

操作例

$ su - ... root ユーザーになる ('-' を付けると
	環境変数も root 環境になる)
Password: ***** ... キータイプを間違えたら control+U を入力
 ↓
Password: ... control+U にて入力文字列が一括消去される
 ↓
Password: ***** ... 改めてパスワードを入力し直せる

自動バックアップシステムを構築する

対象OS

Mac OS X 10.4 (Tiger)
Mac OS X 10.5 (Leopard)

はじめに

コンピュータが生活に入ってくるようになって、日々重要になってきているのがデータのバックアップ。単にコンピュータのカスタマイズ設定データだけでなく、デジカメの写真ファイルやダウンロード購入した音楽などなど、なくなっては困るデータは多い。デジタルデータは扱いが容易な反面、簡単に削除もできてしまう。また、HDD がある日突然壊れることもある。ここでは、追加で接続した HDD に対して、とにかくごっそりコピーするシステムの構築方法を解説する。

Leopard では Time Machine という便利なバックアップ機能があるが、起動可能な形ではコピーしてくれない。「日時ごとにバックアップしてくれるのは便利だけど、もしものためにブート可能なバックアップもほしい」という方は、この方法と Time Machine を併用するのがおすすめ。その場合はこの方法と Time Machine とそれぞれに HDD パーティションを分けて設定しよう。

2006/7/10 update:
"rsync -E"の不具合が修正されたのに伴い、rsync を使用したバックアップ方法に内容を改めています。以前説明していた psync を使用する方法については、こちらを参照してください。




システム

システム構成

私の Mac mini の HDD 容量は 80GB。これを丸ごとコピーするため、同容量の USB 外付け HDD を使用することにした。特別な HDD は必要としないので、自分の予算や好みにあわせて購入するとよいと思う。

システム要件

このバックアップシステムにて、下記の事柄を満たすようにする。

  • システムの定期サービスにて稼動させる。
  • ユーザーがログイン状態でなくても稼動させる。
  • とにかくすべてのファイルをバックアップする。
  • 一度バックアップしたファイルは変更されない限りバックアップしないようにして、バックアップにかかる時間を節約する。
  • 削除されたファイルはバックアップ先でも削除する。

使用ソフト(コマンド)

バックアップを行うコマンドは rsync を使用する。rsync は Mac OS X に標準でインストールされているので特にインストールは必要ない。

設定

USB HDD の設定

HDDの情報

  1. ユーザーログインする。
  2. USB HDD を Mac mini に取り付ける。すると自動的にその HDD がマウントされる。
  3. HDD を Mac OS 拡張(ジャーナリング) にて初期化する。
  4. デスクトップに表示されたその HDD のアイコンを右クリックして[情報]を選択する。
  5. すると左のような画面が表示される。
  6. [名前と拡張子]にてこの HDD の名前に Backup と入れる。
  7. ウィンドウ下部にある[所有権とアクセス権]にて、[このボリューム上の所有権を無視する]のチェックを外しておく。
  8. ウィンドウを閉じる。


Spotlight の設定

Spotlightの検索から除外

バックアップ用のディスクの内容が Spotlight の検索に含まれるのは無駄なので、下記のように Spotlight 検索データベースにバックアップ HDD の内容が含まれないように設定する。

  1. [システム環境設定] を開く。
  2. [Spotlight] を開く。
  3. すると左の画面が現れるので、バックアップ HDD のアイコン (デスクトップ上に “Backup” という名前で表示されているはず) をドラッグ & ドロップする。


ソフトウェアの設定

# cd /etc/periodic/daily ... 日々定期実行する

# vi 800.backup

-- 下記の内容でファイル作成
#!/bin/bash

RSYNC="/usr/bin/rsync -E -a -x -S --delete"
DISKUTIL="/usr/sbin/diskutil"
BK_HDD=Backup
DEST=/Volumes/${BK_HDD}
MAIL_SUBJECT="System Alert: backup"
MAIL_ADDRESS="john" ... エラーメールを送りたいユーザー名

check() {
  while read line
  do
    VolName=`echo ${line} | cut -d' ' -f3`
    if [ "x${VolName}" = "x${BK_HDD}" ] ; then
      MFlg=yes

      DevName=`echo ${line} | cut -d' ' -f6`
      ${DISKUTIL} mount ${DevName} >&2

      echo "${MFlg}"
      break
    fi
  done
}

if [ ! -d $DEST ] ; then
  MFlg=`${DISKUTIL} list | check`

  if [ "${MFlg}" != "yes" ] ; then
    echo "Couldn't find backup HDD." \
    | mail -s ${MAIL_SUBJECT} ${MAIL_ADDRESS}
    exit 1
  fi
fi

if [ -d $DEST ] ; then
  ${RSYNC} \
    --exclude="/tmp/*" \
    --exclude="/Network/*" \
    --exclude="/cores/*" \
    --exclude="*/.Trash" \
    --exclude="/afs/*" \
    --exclude="/automount/*" \
    --exclude="/private/tmp/*" \
    --exclude="/private/var/run/*" \
    --exclude="/private/var/spool/*" \
    --exclude="/private/var/vm/*" \
    --exclude="/private/var/tmp/*" \
    --exclude="/private/var/log/*" \
    --exclude="/private/var/launchd/*" \
    --exclude="Previous Systems.localized" \
    --exclude=".Spotlight-*/" \
    / /Volumes/${BK_HDD}/

else
  echo "Couldn't backup because HDD couldn't be mounted." \
  | mail -s ${MAIL_SUBJECT} ${MAIL_ADDRESS} 
  exit 1
fi
-- ここまで

# chmod 744 800.backup ... 先のファイルに実行属性を付加

使い方

以上の設定が終わると、後は自動的にいつも使っている HDD のデータがバックアップ先の HDD に保存される。そのままの形でコピーしているので、バックアップからファイルを戻したいときは普通にファイルコピーして戻すことができる。

バックアップは、システムによってあらかじめ決められた時間に実行される。その時間はデフォルトでは深夜に設定されているので、夜中に電源をオフにしている場合などは下記のリンクを元に適切な時間に実行されるようにしておこう。

バックアップは Mac の電源さえ ON であれば、ユーザーがログインしてなくても勝手に行われるので、普通は特に動作を気にする必要はない。(もちろん、ログイン中でも問題なくバックアップする)

もし、何かの原因でバックアップ先の HDD を見つけられなかった場合、登録ユーザー宛に “System Alert: backup” というタイトルで、本文に “Couldn’t backup because HDD couldn’t be mounted. (HDD がマウントできなかったためにバックアップの実行ができませんでした。)” というメールが送られる。この場合、バックアップ用の HDD の接続を外したり、電源を切ってしまっていないか確認しよう。

参考文献

クラッキング検知を行う

対象OS

Mac OS X 10.3 (Panther)
Mac OS X 10.4 (Tiger)

はじめに

コンピュータをネットに接続していて、恐いのが他人がネットを介してコンピュータに侵入してくる危険です。彼らはコンピュータ内の個人情報を盗み出したり、他のコンピュータに接続する際の踏み台にしたりなどの目的で侵入を試みます。このような行為をクラッキングと呼びます。(ハッキングでないことに注意)

クラッキングにはある程度やり方があって、そのためのツール (rootkit) が出回っています。逆に言えば、rootkit が仕掛けられていないかどうかで、ある程度クラッキングされたかどうかがわかることになります。ここでは、chkrootkit を使用した rootkit の検知を行います。

使用ソフト

  • chkrootkit 0.47




インストール

インストールの前に

Binc IMAP のインストールには MacPorts を使用する。port をまだインストールしていない場合は、インストールしておく。(インストールの仕方はココをクリック)

インストール

# port install chkrootkit

CD-R 実行環境の作成

もし、コンピュータがクラックされたら、chkrootkit または、そこで呼び出される UNIX 内部コマンドがクラッカーによって書き換えられる可能性がある。そうなると chkrootkit はクラッキングを検知できなくなってしまう。そのため、CD-R 上に chkrootkit 実行環境を作成しておき、適宜 CD-R から chkrootkit およびその環境を実行できるようにしておく。

chkrootkit は以下の UNIX コマンドを使用する。

awk, cut, egrep, find, head, id, ls, netstat, ps, strings, sed, uname, echo

ここではこれらのコマンドと chkrootkit ディレクトリすべてを CD-R に保存することとする。

ワークディレクトリにまとめる

$ mkdir /tmp/crk ... 環境を構築するためのワークディレクトリ
$ mkdir /tmp/crk

$ cd /tmp/crk
$ cp /usr/bin/awk .
$ cp /usr/bin/cut .
$ cp /usr/bin/egrep .
$ cp /usr/bin/find .
$ cp /usr/bin/head .
$ cp /usr/bin/id .
$ cp /bin/ls .
$ cp /usr/sbin/netstat .
$ cp /bin/ps .
$ cp /usr/bin/strings .
$ cp /usr/bin/sed .
$ cp /usr/bin/uname .
$ cp /bin/echo .

$ cp /opt/local/bin/chkrootkit .
これらコピーするコマンドがすでに改竄されていては意味がない。できれば新規にインストールした OS X からコピーするようにしよう。
または、上記コマンドを一から作る手もある。これは日経Linux 2005年1月号にて解説されているのが参考になる。

check.sh の作成

# vi /tmp/crk/check.sh

-- 以下のファイルを新規作成
#!/bin/sh

cd /Volumes/chkrootkit/crk	フォルダ名は適宜環境に合わせて
./chkrootkit -q -p .
-- ここまで

# chmod 744 /tmp/crk/check.sh

CD-R に書き込み

Safariのタイトルバー

  1. Safari を開き、アドレス入力欄にて /tmp と入力し、[Enter] キーを押す。


crkフォルダ

  1. すると、/tmp フォルダが表示される。
  2. その中に先ほど作成したワークフォルダ crk がお目見えする。


空のCD-Rをセット

  1. 次に、空の CD-R を Mac に入れる。
  2. すると左のウィンドウが表示される。
  3. 名前の入力欄にて chkrootkit と入力する。
  4. [OK] ボタンを押す。


CD-R書き込み

  1. 3.の crk フォルダを CD-R フォルダにドラッグ&ドロップする。


続けますか?

  1. すると左のウィンドウが表示されるが、[続ける] を押してコピーを続ける。


書き込む

  1. CD-R 書き込みボタンを押す。


設定

800.chkrootkit の作成

# cd /etc/periodic/daily
# vi 800.chkrootkit

-- 下記ファイルを新規に作成する
#!/bin/bash

LOG=/var/log
CHKROOTKIT=/opt/local/bin/chkrootkit  ... chkrootkit のパスを変えている人は適切に変えること
MAIL_SUBJECT="Security Alert: chkrootkit"
MAIL_ADDRESS="ichiro-suzuki" ... エラーメールを送りたいユーザー名

if [ -f $LOG/chkrootkit.log.2 ] ; then
 mv $LOG/chkrootkit.log.2 $LOG/chkrootkit.log.3
fi
if [ -f $LOG/chkrootkit.log.1 ] ; then
 mv $LOG/chkrootkit.log.1 $LOG/chkrootkit.log.2
fi
if [ -f $LOG/chkrootkit.log ] ; then
 mv $LOG/chkrootkit.log $LOG/chkrootkit.log.1
fi

if [ -x $CHKROOTKIT ] ; then  $CHKROOTKIT > $LOG/chkrootkit.log 2> /dev/null
else
  echo "The chkrootkit doesn't exist or isn't executable." \
  | mail -s ${MAIL_SUBJECT} ${MAIL_ADDRESS}
  exit 1
fi

RET=`grep -c INFECTED $LOG/chkrootkit.log`
if [ $RET != 0 ] ; then
  grep INFECTED $LOG/chkrootkit.log \
  | mail -s ${MAIL_SUBJECT} ${MAIL_ADDRESS}
fi
chmod 644 $LOG/chkrootkit.log
-- ここまで

# chmod 744 800.chkrootkit

使用法

設定通りに設定すると、毎日一回自動的に chkrootkit が実行される。OS X 10.3, 10.4 の場合、デフォルトだと深夜に実行される。夜間に Mac の電源をオフにしている人は、システム cron の動作時間を変更する の通りに実行時間を変えておこう。

自動実行の結果は /var/log/chkrootkit.log として保存される。最初の内はちゃんとログが作られているか確認しよう。作られていない場合は、動作していないということなので、ちゃんと設定できているか確かめよう。ログは過去 3 日分が chkrootkit.log.# (# には 1, 2, 3 が入る) として同じディレクトリに保存される。

一旦ちゃんと動作していることが確認できたら、特にログファイルを気にすることはない。もし改竄が検知された場合は自動的に指定ユーザー宛にメールが入るようになっている。なので、システムから Security Alert: ChkRootKit というタイトルのメールが来たら中を見て何が改竄されているのか確認しよう。(もしかしたら誤検知の可能性だってある)

改竄が検知された場合の対処方法が良くわからない人は、OS をクリーンインストールするのも手。個人のデータは消す必要がないのでそのまま使える。その際にはシステムや各ユーザーのパスワードを変更したり、侵入の可能性について考えよう。何もしないとまたやられるので注意。

CD-R 実行環境の使い方

HDD 内にインストールされた chkrootkit の実行と並行して、定期的に CD-R 上の実行環境も使おう。これは手動で行うことにする。使い方は下記の通り。

  1. Mac にログインする。
  2. chkrootkit 実行環境を作成した CD-R を Mac にセットする。
  3. ターミナルを開く。([Macintosh HD] – [アプリケーション] – [ユーティリティ] 内にある)
  4. ターミナルにて、root ユーザーになって下記のように実行する。
# cd /Volumes/chkrootkit/crk
# ./check.sh

ずらずらっと表示される各行にて、INFECTED と表示されているものがないか確認する。もしあれば、改竄の可能性があるので調査&対処しよう。(よくわからない人はこのリンクを見てみて)

参考サイト