2020 DNS aoi2 再構築ログ


  1. インストールするもの
  2. インストール USB の作成
  3. Debian buster のインストール
  4. 日本語環境の設定
  5. ssh インストール
  6. 作業用アカウントの作成
  7. sudo のインストール
  8. ssh の設定
  9. bind9 のインストール
  10. gate-toroku-system のインストール
  11. syslog-ng のインストール
  12. ログの圧縮
  13. DHCP のインストール

インストールするもの

入れ替え後に blue として稼働する aoi2 に以下のものをインストールする.なお、あらかじめインストールされているUSBを利用したため,以下のUSB作成に関しては参考に過ぎない。

インストールするOS

インストールするソフト

以下,特別な断りがない限り aoi2 で行う作業について記述する.

インストール USB の作成

aoi には CD-R ドライブがない.そのため OS インストールには USB メモリを使用する. 作成にあたっては root 権限をもつ joho19 機を使用した.

Debian JP Project jessie インストーラのページを開き,「小さな CD または USB メモリ」という項目の amd64 をダウンロードし,適当なディレクトリにおく.

USB メモリを挿し,デバイス名を確認

# fdisk -l

USB メモリに iso ファイルを焼く

# cat debian-10.3.0-amd64-netinst.iso > /dev/sdb
        ! デバイス名が /dev/sdb の場合.
# sync

なお,作成方法は情報実験 第 6 回 "ブート・Debian GNU/Linux インストール" の "Debian GNU/Linux インストールガイド" も参照のこと.

Debian のインストール

aoi2 の電源が落ちていることを確認する.aoi2 に 作成した OS インストール用 USB メモリを挿入し,電源を入れる.

先にBIOSを起動し, Advanced欄内のLSI Software RAID Configuration Urilityを選択.
Virtural Drive Managementを開き, RAIDの設定を全て初期化する.(インストーラ―側で設定するのでRAID1に設定する必要はない)
Drive Managementを開き,Unconfigured goodを選択.

再起動

graphic installerを起動

言語

Japanese - 日本語 を選択

場所

日本

キーボード

日本語

ネットワークの設定

eth1 を選択

DHCP の設定が自動で開始されるのでキャンセル

ネットワークを手動で設定

IP アドレス
 133.87.45.135

ネットマスク
 255.255.255.0

ゲートウェイ
 133.87.45.1

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

ホスト名
 aoi2

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

root のパス

任意のパスワードを設定

root の本名

あなたの本名

アカウント名

任意のアカウント名

アカウントのパス

任意のパスワードを設定

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

UEFIインストールを強行しますか? - はいを選択

SCSI1(sda)とSCSI2(sdb)を選択して、あらかじめあるパーティションを消去しておき、 RAIDを組むよりも先に各HDDでパーティションを作る。 ESPを先に作る理由はgrub installの際にESP(EFIシステムパーティション)にインストールを邪魔されてしまうためである。
false true
2つの画像はそれぞれhttps://techacademy.jp/magazine/5827 を参考にした。

パーティショニング機構

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

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

sdb を選択

パーティショニング機構

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

ソフトウェア RAID の設定

ディスクへの変更の書き込み

root パーティションを RAID にする
 md の作成

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

RAID1 アレイのアクティブデバイス数
 2

RAID1 アレイのスペアデバイス数
 0

RAID デバイスの選択
 sda1
 sdb1

記憶デバイスへの変更を書き込み、 RAID を設定しますか?
 はい

swap パーティションを RAID にする
 md の作成

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

RAID1 アレイのアクティブデバイス数
 2

RAID1 アレイのスペアデバイス数
 0

RAID デバイスの選択
 sda5
 sdb5

記憶デバイスへの変更を書き込み、 RAID を設定しますか?
 はい

完了

RAID1 デバイス 0. のファイルシステムを ext4 にし, マウントポジションを / にする

RAID1 デバイス 1. のファイルシステムを スワップ領域にする

最終的に以下のようになっていればよい partition

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

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

はい を選択

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

日本

Debian アーカイブミラー

dennou-k.gfd-dennou.org

HTTP プロキシの情報

空欄にしておく

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

いいえ

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

「標準システムユーティリティ」のみ

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

はい(インストール先は sda)

※ここでGRUBインストールができなくなる時がある。その際はBIOSを起動し、ハードウェアRAIDが組まれていないかチェックする。 組まれていたらあらかじめ消してから再びインストールする。(RAIDがハード側で組まれている場合、パーティショニングの際に HDDが1つと認識されてしまうため、ESPをRAIDから外すことができなくなり、Grubインストールの際に 失敗してしまう。)

以上でインストール完了.USB メモリを抜き取り,再起動.

日本語環境の設定

$ export LC_ALL=C
$ export LANG=C
$ export LANGUAGE=C

ssh インストール

$ su
# apt-get install ssh

以後,遠隔ログインで作業可能.

作業用アカウントの作成

adduserにPATHを通す

/bin/sbin以下にPATHが通ってなかったら以下を実行

export PATH=$PATH:/usr/sbin/

これでadduserを使えるようになった。

ルートからexitすると再び上記コマンドを打ち込む必要があるので、.bashrcにexport以下を書き込んで置くと良い.

 PATH="$PATH:/usr/sbin/"

作業用アカウントの作成

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

# adduser --uid 40001 mondo1
        ! 本年度は mondo1 だったので,以下 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

を追加.

bind9 のインストール

# apt-get install bind9

dnsutilのインストール

# apt install dnsutil

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.11.5-P4-5.1+deb10u1-Debian <<>> ep.sci.hokudai.ac.jp any ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6259 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE : ・・・(good) ;; QUESTION SECTION: ;ep.sci.hokudai.ac.jp. IN A ;; AUTHORITY SECTION: ep.sci.hokudai.ac.jp 10774 IN SOA yellow.ep.sci.hokudai.ac.jp. postmaster.ep.sci.hokudai.ac.jp. 2020062633 10800 3600 604800 86400 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Jul 1 18:02:06 JST 2020 ;; MSG SIZE rcvd: 131

ゾーンファイル

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

# scp hogehoge@blue.ep.sci.hokudai.ac.jp:/var/cache/bind/ファイル名 /var/cache/bind/

bind9 の設定ファイル

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

以下の記述を追加する.

zone "ep.sci.hokudai.ac.jp" {
      type slave;
      file "/var/cache/bind/ep.zone";
      notify no;
      masters {133.87.45.70;};
};

yellow:/etc/bind/named.conf.option の書き換え

!!! yellow での作業 ここから !!!

yellow の /etc/bind/named.conf.options に以下の記述を追加して, aoi へのゾーンファイルの転送を許可する

allow-transfer { 133.87.45.66; 133.87.1.11; 133.87.45.135};

この記述をしないと, ゾーンファイルの転送要請をすべて許可してしまう.

逆に, この記述を加えると明示的に許可していないところからの転送要請はすべて許可されなくなるので注意.

!!! yellow での作業 ここまで !!!

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

bind の restart

# service bind9 restart

/var/log/daemon.log を見る

# lv /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 のインストール

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

以下のパッケージをインストールする.

以上のパッケージは apt-get install すればよい.

これは以下の方法で取得

# wget http://www.gfd-dennou.org/arch/cc-env/htroff/htroff_2.0-1_all.deb
# dpkg -i htroff_2.0-1_all.deb

作業用アカウントの作成

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

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

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

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

.shosts の設定(aoi2 での作業)

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

(変更前)
IgnoreRhosts yes
HostbasedAuthentication no

(変更後)
IgnoreRhosts no
HostbasedAuthentication yes

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

# service 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 での作業.www の root 権限を持つ人に作業してもらう)

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

.shosts 認証を有効にする.

公開鍵を新たに作り直す

aoi2 で行う作業

gate ユーザになる.

$ sudo -u gate -s -H

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

$ ssh-keygen -F orange.ep.sci.hokudai.ac.jp

存在しないはずなので,orange の公開鍵を取得する. アドレスはフルドメインで入力する.

2020/12/17 確認したところ公開鍵は存在したため以下の作業は飛ばした。

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

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

Are you sure you want to continue connecting (yes/no)?

> yes

Ctrl + c で出る. 2020/07/02 普通にパスワードを聞かれてしまい、gateのパスワードを知らないため、これ以降の作業を中断。 gateのパスワードは知らない

↑orangeのgateのパスワードは知らない。

2020/12/17 /etc/shadow内のgeteが以下のようになっていたため、そもそもパスワードを潰していた。
gate:*:18444:0:99999:7:::br
↑2つめの欄の*が、パスワードが潰れている証

$passwd gate
で適当にパスワードを設定し公開鍵があるか確認したところ、存在していた。

www で行う作業(www の root 権限をもつ人に作業してもらう), (2020/9/4 この作業を飛ばして次に進める)(2020/12/17 終了)

gate ユーザになる.

$ sudo -u gate -s -H

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

$ ssh-keygen -F aoi.ep.sci.hokudai.ac.jp

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

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

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

Ctrl + c で出る.

パッケージの取得と展開(2020/9/4 ここから再作業)

パッケージの取得

$ sudo -u gate -s -H
$ cd /home/gate

hogehoge@orange で

$ scp /home/gate/gate-toroku-system.tgz hogehoge@aoi:/home/hogehoge/

gate@aoi で

cp /home/hogehoge/gate-toroku-system.tgz /home/gate/

パッケージの展開

$ tar xvfz gate-toroku-system.tgz
$ cd gate-toroku-system_2018-05-10

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

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

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

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

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

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

2020/9/4 上記記載が以下のようになっていることを確認

## ディレクトリ構成の設定
        ・
        ・
        ・
        #
        # 生成されるファイルのディレクトリ
        #
        $TMPDIR = '/tmp';
        # デバッグモードの場合には /etc の代わりに /ETC を使用.
        if ($DEBUG_CONFIG) {
                $ETCDIR = '/ETC';
                $VAR_NAMED_DIR = '/ETC';
        } else {
                $ETCDIR = '/etc';
                $VAR_NAMED_DIR = '/etc/bind';
                → $VAR_NAMED_DIR = '/var/cache/bind/';に変更
        }

        # ユーザ用システムファイル置場
        $PASSWD_FILE = "$ETCDIR/passwd";
        $USING_SHADOW_PASSWD = 1;       # shadow パスワードを 0: 使用しない, 1: 使用する
        $CRYPT_TYPE = 'crypt';          # 'crypt' or 'md5'
        $SHADOW_FILE = "$ETCDIR/shadow";
        $GROUP_FILE = "$ETCDIR/group";

        # DNS用ゾーンファイル置場
        $ZONE_FILE = "$VAR_NAMED_DIR/ep.zone";

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

Config.mk の生成

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

make によるコンパイル

$ make

インストール

$ exit (一般ユーザに戻る)
$ sudo -s (root ユーザになる)
# cd /home/gate/gate-toroku-system_2018-05-10
# 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 用のポートの作成

/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 を起動する.

# service inetutils-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: デバッグモード

ここまでやったら一度再起動をする。

# reboot

!!! www での作業 ここから !!!

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

$ telnet aoi.ep.sci.hokudai.ac.jp 8888

!!! www での作業 ここまで !!!

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

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

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

ここでは, 初めは/etc/passwd や /etc/shadow のタイムスタンプが更新されていなかった.また, /etc/passwd の中身はユーザ ID の順番に並び替えられていなかった. reboot して再度 gate ポートに接続してみたら上記の異常は解消された.

一方で, 再びaoi2にログインしたときにpasswdファイルから自分が消えていた.そこで

$ su root
# adduser "消えたアカウント名"

として再びpasswordを追加した. このファイルをもう一度ホーム以下にコピーしてバックアップを取っておく。

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

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

syslog-ng のインストール

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

$ apt-get install syslog-ng

受信の設定

/etc/syslog-ng/syslog-ng.conf に,

source s_lemon {
       #   - UDP 514 番を使う。
       udp(ip("133.87.45.135") port(514));
};


destination d_lemon_log {
       # lemon から受信したログは /var/log/lemon_log に保存する。
       file("/var/log/lemon_log");
};


filter f_lemon_log {
       host(133.87.45.154) and level(info..emerg);
};


log {
       source(s_lemon);
       filter(f_lemon_log);
       destination(d_lemon_log);
};

を追記.

# service syslog-ng restart

で syslog-ng を再起動し,設定を有効にする.

ログの圧縮

# vi /etc/logrotate.conf

以下の記述を追加する

/var/log/lemon_log {
    weekly
    rotate 10
    compress
 }

DHCP のインストール

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

# aptitude install isc-dhcp-server

2020/12/17 aptとaptitudeは異なるため注意

sudo apt updateをしなかったため最初インストールできなかった。

インストールの完了を確認

$ dpkg -l | grep isc-dhcp-* 

ii isc-dhcp-client 4.4.1-2 amd64 DHCP client for automatically obtaining an IP address ii isc-dhcp-common 4.4.1-2 amd64 common manpages relevant to all of the isc-dhcp packages ii isc-dhcp-server 4.4.1-2 amd64 ISC DHCP server for automatic IP address assignment 4.3.1-6+deb8u2 amd64

設定ファイルの編集

設定ファイルの場所は /etc/dhcp/dhcpd.conf である.

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

# cd /etc/dhcp/
# cp dhcpd.conf dhcpd.conf.org

dhcpd.conf の中身をすべて消して以下のものを書き込む.

# dhcpd.conf
#
# This is dhcpd.conf, generated by gate-db-to-dhcpd.
# If you are to edit this file, do not edit it directly.
#
# General Configuration

default-lease-time 6000;
max-lease-time 72000;
option routers 192.168.16.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.16.255;
option domain-name "ep.sci.hokudai.ac.jp";
option domain-name-servers 133.87.45.70, 133.87.45.66, 133.87.1.11;

subnet 192.168.16.0 netmask 255.255.255.0 {
    range 192.168.16.130 192.168.16.254;
}

DHCPのネットワークインターフェイスの指定

/etc/network/interfaces の編集

auto eth1
iface eth1 inet static
        address 192.168.16.2
        netmask 255.255.255.0
        broadcast 192.168.16.255

と書き加える

同じIPを持っているマシンが存在するので, 聞かれたときに同じネットワーク内でしか答えないようにする

これを行わないと現在運用中のDHCPが機能しなくなるので注意

/etc/sysctl.conf に以下の記述を書き加える

net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth1.arp_ignore = 1

/etc/default/isc-dhcp-server の編集

INTERFACES="eth1"

とした

2020/12/17 ipv4かipv6の二つ選択できるようになっていた。

INTERFACESv4="" 
INTERFACESv6=""

どちらに書き込むべきか分からなかったため、飛ばして進めた。

/etc/gate.confの書き換え

- DHCP に関する設定
       $DHCPD_FILE = "$ETCDIR/dhcp/dhcpd.conf";
       $DHCP_INIT = 'isc-dhcp-server';

となっていることを確認

2020/12/17 一通り終えた。やることは以下