2011 DNS 1st 再構築ログ


  1. BIOS の設定
  2. Debian squeeze のインストール
  3. ssh インストール
  4. 作業用アカウントの作成
  5. sudo のインストール
  6. ssh の設定
  7. ntpdate の設定
  8. /etc/inetd.conf の編集
  9. bind9 のインストール
  10. gate-toroku-system のインストール
  11. syslog-ng のインストール
  12. logwatch の設定
  13. MTA(exim4)の設定
  14. ログ監視スクリプトの導入

BIOS の設定

画面の下に BIOS SET UP のメッセージが出たら Del キーを押して BIOS 設定画面にする.

表示される BIOS 設定画面のメニューから, 『BIOS FEATURES SETUP』 を選択し, 『BOOT Sequence』 の項目が 『A, CD-ROM, C』 の順になっていることを確認する. 設定がこれ以外場合には変更すること

Debian squeeze のインストール

ブート画面

boot: installgui netcfg/disable=true

Screenshot の保存場所

/var/log/*.png に保存される.

Choose Language

Japanese - 日本語 を選択

キーボード配置の選択

日本(106 キー)

ネットワークの設定

DHCP をキャンセル

eth0 を選択

IP アドレス
 133.87.45.114

ネットマスク
 255.255.255.0

ゲートウェイ
 133.87.45.1

ネームサーバアドレス
 133.87.45.70 133.87.45.66 133.87.1.11

ホスト名
 kihada

ドメイン名
 ep.sci.hokudai.ac.jp

ディスクのパーティショニング

ガイド - ディスク全体を使う

パーティショニングするディスクの選択

hda を選択

ガイドによるパーティショニング を選択

パーティショニング機構

全てのファイルを1つのパーティションに(初心者ユーザには推奨)

パーティショニングの終了とディスクへの変更の書き込み

ディスクに変更を書き込みますか?

はい を選択

root のパスワード

ユーザの本名

あなたのアカウントのユーザ名

naoya (何でもいい)

ユーザのパスワード

パッケージマネージャの設定

日本

Debian アーカイブミラー

dennou-h.gfd-dennou.org

HTTP プロキシの情報

パッケージマネージャの設定

popularity-contest を設定しています

Debian パッケージ利用調査に参加しますか?

いいえ

インストールするソフトウェアの選択

標準システムのみにする

マスターブートレコードに GRUB ブートローダをインストールしますか?

はい

インストールの完了

起動

ssh インストール

$ su
# aptitude install ssh

以後,遠隔ログインで作業する.

作業用アカウントの作成

コアマネとの相談で mondo*を決める

# adduser --uid 40001 mondo1

sudo のインストール

# aptitude install sudo
# visudo 

mondo1 sudo 権限を追加

以後,mondo1で作業する

ssh の設定

/etc/ssh/sshd_config の設定

X11Forwarding no
PermitRootLogin no

/etc/hosts.deny の編集

sshd: ALL

を追加.

/etc/hosts.allow の編集

sshd: .ep.sci.hokudai.ac.jp

を追加.

ntpdate の設定

# aptitude install ntpdate

/etc/default/ntpdate の編集

NTPDATE_USE_NTP_CONF=no

NTPSERVERS="ntp.hokudai.ac.jp"

と編集

動作確認

# ntpdate-debian

現在の日付・時刻が表示されることを確認

/etc/crontab の編集

00 6  * * *   root    /etc/network/if-up.d/ntpdate

を追記

/etc/inetd.conf の編集

特に必要ない

bind9 のインストール

# aptitude install bind9

インストール中の質問はなくなったようだ.

bind が機能しているか確認

/etc/resolv.conf のバックアップと編集

# cp /etc/resolv.conf /etc/resolv.conf_bk 

resolv.conf を以下のように書き直す. (前の内容は削除した上で書き直す)

search ep.sci.hokudai.ac.jp
nameserver 127.0.0.1 

dig で挙動を調べる

$ dig ep.sci.hokudai.ac.jp any

; <<>> DiG 9.7.3 <<>> ep.sci.hokudai.ac.jp any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19893
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 2, ADDITIONAL: 4

;; QUESTION SECTION:
;ep.sci.hokudai.ac.jp.          IN      ANY

;; ANSWER SECTION:
ep.sci.hokudai.ac.jp.   86400   IN      MX      20 orange.ep.sci.hokudai.ac.jp.
ep.sci.hokudai.ac.jp.   86400   IN      MX      10 grey.ep.sci.hokudai.ac.jp.
ep.sci.hokudai.ac.jp.   86400   IN      NS      yellow.ep.sci.hokudai.ac.jp.
ep.sci.hokudai.ac.jp.   86400   IN      NS      blue.ep.sci.hokudai.ac.jp.
ep.sci.hokudai.ac.jp.   86400   IN      SOA     yellow.ep.sci.hokudai.ac.jp. postm aster.ep.sci.hokudai.ac.jp. 2011100238 10800 3600 604800 86400

;; AUTHORITY SECTION:
ep.sci.hokudai.ac.jp.   86400   IN      NS      yellow.ep.sci.hokudai.ac.jp.
ep.sci.hokudai.ac.jp.   86400   IN      NS      blue.ep.sci.hokudai.ac.jp.

;; ADDITIONAL SECTION:
grey.ep.sci.hokudai.ac.jp. 86400 IN     A       133.50.160.50
orange.ep.sci.hokudai.ac.jp. 86400 IN   A       133.50.160.51
blue.ep.sci.hokudai.ac.jp. 86400 IN     A       133.87.45.66
yellow.ep.sci.hokudai.ac.jp. 86400 IN   A       133.87.45.70

;; Query time: 903 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct 16 14:33:55 2011
;; MSG SIZE  rcvd: 261

ゾーンファイル

ep.zone local.rev local.zone named.root をyellow から持ってくる

# scp ****@yellow.ep.sci.hokudai.ac.jp:/var/named/* /var/cache/bind/

cps-jp.zone はいらない

# rm cps-jp.zone

2010年度と2011年度ではゾーンファイルの置き場所が変わっているので注意

bind9 の設定ファイル

/etc/bind/named.conf.local の書き換え

以下の記述を追加する.

zone "ep.sci.hokudai.ac.jp" {
       type master;
       file "/var/cache/bind/ep.zone";
};

ログで DNS ゾーンファイルの読み込みを確認

bind の restart

# /etc/init.d/bind9 restart

/var/log/daemon.log を見る

/etc/resolv.conf に他の DNS サーバを書き加える

search ep.sci.hokudai.ac.jp
nameserver 127.0.0.1
nameserver 133.87.45.70
nameserver 133.87.1.11

とする.

gate-toroku-system のインストール

必要なパッケージのインストール

作業用アカウントの作成

# adduser --uid 500 --disabled-password gate

管理者の名前は Administrator of gate-toroku-system とした.

gate グループに gate 管理者を加える.

ssh のノンパスワードログインに関する設定

.shosts の設定(各サーバ)

.shosts 認証を可能にする. /etc/ssh/sshd_config を以下のように編集する.

(変更前)
IgnoreRhosts yes
HostbasedAuthentication no

(変更後)
IgnoreRhosts no
HostbasedAuthentication yes

ファイル編集後, ssh を再起動する.

# /etc/init.d/ssh restart

gate ユーザになる.

$ sudo -u gate -s -H

/home/gate へ移動する.

$ cd /home/gate/

.shosts を作成する. ファイルに以下のように書きこむ.

orange.ep.sci.hokudai.ac.jp  gate

.shosts のパーミッションを変更し gate 以外のユーザが見れないようにする.

$ chmod 600 .shosts

.shosts の設定(www で行う)

/usr/bin/ssh, /usr/bin/ssh-keygen の s ビットを立てる.

.shosts 認証を有効にする.

公開鍵を新たに作り直す

各サーバで行う作業

gate ユーザになる.

$ sudo -u gate -s -H

orange の公開鍵が既に存在しているかを調べる.

$ grep orange /home/gate/.ssh/known_hosts 

orange の公開鍵を取得する.アドレスはフルドメインで入力する.

$ ssh orange.ep.sci.hokudai.ac.jp

ここで公開鍵を作るかどうかを聞かれるので yes と入力する.

Ctrl + c で出る.

www での作業

gate ユーザになる.

$ sudo -u gate -s -H 

.ssh/known_hosts にローカルホストの公開鍵が存在するかを確認し,あれば削除する.

$ grep kihada .ssh/known_hosts

公開鍵を取得する. (アドレスはフルドメインで入力する)

$ ssh kihada.ep.sci.hokudai.ac.jp 

パッケージの取得と展開

パッケージの取得

$ sudo -u gate -s -H
$ cd /home/gate
$ scp hogehoge@orange.ep.sci.hokudai.ac.jp:/home/gate/gate-toroku-system.tar.gz ./ 

パッケージの展開

$ tar xvfz gate-toroku-system.tar.gz 
$ cd gate-toroku-system 

パッケージの設定 [www 以外]

/home/gate/gate-toroku-system/include/gate.conf の設定

##  本気モードとデバックモード
#
        $DEBUG_CONFIG = 1;              # 0: 本気モード, 1: デバッグモード

となっていることを確認. 入れ替え直前に本気モードに変える.

- ディレクトリ構成の設定
               $VAR_NAMED_DIR = '/var/cache/bind';

がゾーンファイルの置き場所に対応していることを確認

パッケージのインストール

Config.mk の生成

$ exit (一般ユーザに戻る)
$ sudo -u gate -s -H
$ cd /home/gate/gate-toroku-system
$ perl ./config.pl

make によるコンパイル

$ make

make コマンドが存在しないと言われる

make コマンドのインストール

 # aptitude install make

再度 make によるコンパイル

$ make

ほんとにインストール

$ exit (一般ユーザに戻る)
$ sudo -s (root ユーザになる)
# cd /home/gate/gate-toroku-system
# cp include/gate.conf /etc/gate.conf
# make install

インストール終了後, プログラムファイル (gate-ip-accept 等)が /usr/local/bin, /usr/local/sbin, /usr/local/lib/gate にインストールされていることを確認する. また, /etc/passwd, /etc/shadow, /etc/group, /etc/sudoers が /ETC に存在していることを確認する.

デーモンの設定

デーモンモードで起動するための確認

となっていた.

gate-toroku-system 用のポートの作成

squeeze において inetd は標準装備ではない

# aptitude install openbsd-inetd

/etc/inetd.conf に以下の行を追加(1 行で書く)

gate stream tcp nowait root /usr/sbin/tcpd /usr/local/lib/gate/gate-daily -N 

gate 用に 8888 番 ポートを割り当てる. /etc/services に以下の行を追加する.

gate   8888/tcp

/etc/inetd を起動する.

# /etc/init.d/openbsd-inetd start

TCPWrapper によるセキュリティ強化

gate のポートには登録サーバである orange 以外のホストはアクセスできないようにする. /etc/hosts.deny を以下のように編集して全てのホストに対して gate ポートへのアクセスを禁止する.

gate-daily: ALL [改行]

/etc/hosts.allow を以下のように編集して orange に対して gate ポートへのアクセスを許可する.

gate-daily: orange.ep.sci.hokudai.ac.jp [改行]

アクセスの確認

# tcpdmatch gate-daily [orange.ep.sci.hokudai.ac.jp 以外のホスト名]

access: denied と表示された.

# tcpdmatch gate-daily orange.ep.sci.hokudai.ac.jp

access: granted と表示された.

安全の確保

重要ファイルのバックアップ

# cp /etc/passwd ~/
# cp /etc/shadow ~/
# cp /etc/group ~/
# cp /etc/sudoers ~/  

# chmod 400 passwd shadow group sudoers

root になった端末を残しておく

万一端末が動かなくなった時に作業ができるように root になった端末をもう一つ確保しておく.

動作確認

テストのため, /etc/gate.conf を一度以下のように書き換える

##  本気モードとデバックモード
#
        $DEBUG_CONFIG = 0;              # 0: 本気モード, 1: デバッグモード

www サーバ (orange) から aoi の gate ポートに接続する.

$ ssh orange.ep.sci.hokudai.ac.jp
$ telnet kihada.ep.sci.hokudai.ac.jp 8888

正常に接続できたかを確認するには /etc/passwd, /etc/shadow などのファイルのタイムスタンプを確認する.

(各サーバでチェック [www でじゃないよ!!])
$ date (現在時刻の確認)
$ ls -l /etc/passwd /etc/shadow

また, /etc/passwd の中身がユーザ ID の順番に並び変えられていればよい.

動作確認終了後/etc/gate.conf の設定を元に戻す

##  本気モードとデバックモード
#
        $DEBUG_CONFIG = 1;              # 0: 本気モード, 1: デバッグモード

syslog-ng のインストール

パッケージのインストール

# aptitude install syslog-ng

logwatch の設定

logwatch のインストール

$ sudo aptitude install logwatch

logwatch の設定(実験)

$ cd /usr/share/logwatch/default.conf
$ sudo emacs logwatch.conf

の部分を

MailTo = hogehoge@ep.sci.hokudai.ac.jp

に変更.

Range = Today

に変更。(実際はyesterday)

Detail = Low 

のまま.

MTA(exim4)の設定

"インターネットサイト: メールは SMTP を使って直接送受信される" を選択.

システムメール名:

kihada.ep.sci.hokudai.ac.jp に設定.

入力側 SMTP 接続をリスンする IP アドレス:

空にする.

メールを受け取るその他の宛先:

kihada.ep.sci.hokudai.ac.jp に設定.

メールをリレーするドメイン:

空にする.

メールをリレーするマシン:

空にする.

DNS クエリの数を最小限に留めますか(ダイヤルオンデマンド)?

<いいえ>を選択.

ローカルメールの配送方式:

"ホームディレクトリ内の Maildir 形式" を選択.

設定を小さなファイルに分割しますか?

<いいえ>を選択.

実際にメールが届くかどうか確認

$ sudo logwatch --mailto hogehoge@ep.sci.hokudai.ac.jp

すぐに届いた。 試しにメールではなく、画面に出してみる。

$ sudo logwatch


$ sudo logwatch --service sshd

メールは送れているようなので次に進む。

実験的に変えた設定を元に戻す

/etc/cron.daily/00logwatch の編集

これだけでは cron でメールが送られないようだったので, /etc/cron.daily/00logwatch を編集

"#execute" の次の行を

/usr/sbin/logwatch --mailto epdns[@]ep.sci.hokudai.ac.jp

とした.

ログ監視スクリプトの導入

スクリプトの展開

スクリプトファイルを yellow から持ってきて展開する

# scp hogehoge@yellow.ep.sci.hokudai.ac.jp:/etc/cron.local.tar.bz2 /etc/
# cd /etc&&  bzcat cron.local.tar.bz2 | tar xvf -

展開したファイルに実行権限がない場合にはつける

# chmod 755 cron.local/daily/* cron.local/weekly/*

crontab の書き換え

/etc/crontabに以下の記述を追加する

25 6 * * *   root    cd /&&  run-parts --report /etc/cron.local/daily | mail -s "`hostname -f` daily run outputs" [送り先メールアドレス]
47 6 * * 7   root    cd /&&  run-parts --report /etc/cron.local/weekly | mail -s "`hostname -f` weekly run outputs" [送り先メールアドレス]

cron デーモンを再起動する

# /etc/init.d/cron restart

これで毎朝6:25, 毎週朝6:47にメールが送られてくる