2016年3月23日水曜日

Buffalo HD-H160LAN へ Debian Jessie をインストール

バッファローのリンクステーション HD-H160LAN (HD-HLAN シリーズ)へ Debian Jessie (通常版)をインストールしました。

いろいろ後で解ってくると大したことはなかったのかもしれませんが、インストールへの道のりは険しいものがありました(笑)。

なおこの HD-HLAN の記事でもシリアルコンソールを接続して操作することを前提として記述しています。telnet や nc (netcat) による操作が可能かもしれませんが、検証を行っていません。

Debian Jessie をインストールした HD-HLAN です。

今までに判明したこと

HD-HLAN のシステムは、ハードディスクのもの(flboot)も、フラッシュメモリのもの(emboot)も、パスワードが不明でシステムへログインできませんでした。Windows パソコンからファームウェアのインストール時の様子を Wireshark によるパケットモニタを試みましたが、パスワードを見つけることができませんでした。ポート 22936 で何らかの通信を行っていることを発見できただけでした。

そしてハードウェアが同一と思われる 玄箱(初代)のハードディスクを HD-HLAN へ接続すると正常に起動することも発見しました。玄箱(初代)のハードディスクがあれば、u-boot の書き換えなどを出来るようになります。

HD-HLAN のファームウェアがインストールされたハードディスクのパーティションは 1 〜 4 の四つを使用しています。玄箱は三つです。最後の四番目のパーティションの使い道が不明です。

後の話になりますが、u-boot 1.2.0 へ書き換えを行うと、パソコン側からメーカ製のファームウェアのインストールができなくなります。必要であれば、予備のハードディスクへ事前のインストールが必要です。実際には HD-HLAN のファームウェアはパスワードが不明なため、玄箱(初代)のファームウェアを移植すれば問題ありません。

ハードディスクを取り出すために分解した HD-HLAN です。

1. 超簡単 Debian Jessie のインストール方法

u-boot を書き換えていない玄箱(初代)を所有しているならば、玄箱(初代)へ HD-HLAN で使用するハードディスクを接続して、メーカ製のファームウェアをインストールしてください。その玄箱(初代)のファームウェアがインストールされたハードディスクを HD-HLAN へ戻した後、玄箱(初代)へ Debian Jessie をインストールしたときと全く同じ要領でインストールすることができます。
玄人志向 玄箱用 Debian Jessie 通常版(カーネル3.16 版)
http://near-unix.blogspot.jp/2016/01/debian-jessie-316.html

玄箱を使って HD-HLAN へ Debian Jessie をインストール

または、玄箱(初代)で Debian Jessie をインストールした後、そのハードディスクを HD-LAN へ移植する方法もあります。そして flboot を行った後、u-boot 1.2.0 へ書き換え、設定を行ってください。Debian Jessie の部分は一度でも玄箱で起動させてしまうと LAN ポートの情報がシステム上に記録されてしまうため、一部の設定を修正しなければ LAN ポートを使用できません。以下のファイルの赤文字部分を消去します。
# vi /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x1317:0x0985 (tulip)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:07:40:**:**:**", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

2. 手間の掛かる Debian Jessie のインストール方法

HD-HLAN のオリジナルのファームウェアを元にしてインストールする場合です。ルート・パスワードが不明なため、既知のパスワードへ置き換えを行った後、上記と同じ玄箱用の Debian Jessie のインストールと同じ方法を行います。問題はパスワードが不明なため、ログイン出来ないのに、パスワードを変更することができるのか?ということです。NetBSD のハッカーさんが、よい方法を編み出していました。ウェブサイトのホームページをクラッキングして、そしてルート権限を取得するという方法です。まるで映画の主人公(ハッカー)になったかのような気分(笑)です。 以下のウェブサイトを参考にしました。
LinkStation Installation
http://www.jp.netbsd.org/ports/sandpoint/instLinkStation.html

ルート・パスワードの置き換え

オリジナル・ファームウェアが動作している状態でブラウザから HD-HLAN の設定画面へアクセスします。そして「共有フォルダ設定」にて任意のユーザとパスワードを登録します。ここではユーザに user として登録しました。そしてパスワードは、後でルート・パスワードに置き換えるものですので決して忘れないようにしてください。

HD-HLAN の共有フォルダ設定

このユーザ登録によってシリアルコンソールからシステムへログインができるようになります。ただしユーザ権限だけです。ルート権限での操作はこの時点ではできません。

一般ユーザとしてログインしたところで、次のディレクトリへ「パスワード・ファイルの権限を変更するスクリプト・ファイル」(/www/cgi-bin3/exploit.cgi)を作ります。そして chmod コマンドで実行権限を与えます。
$ mkdir /www/cgi-bin3

$ vi /www/cgi-bin3/exploit.cgi
### exploit.cgi の内容 ###

#!/bin/sh
chmod 666 /etc/passwd
$ chmod 755 /www/cgi-bin3/exploit.cgi

ブラウザから上記のスクリプトを呼び出します。アクセスしても何も表示されません。もしスクリプトの内容が表示された場合は、上記のスクリプト・ファイルの権限(755)をもう一度確認してください。これでパスワード・ファイル(/etc/passwd)の権限が変更されました。ユーザ権限でもパスワード・ファイルを編集できます。
http://(HD-HLAN の IP アドレス)/cgi-bin3/exploit.cgi

パスワード・ファイル(/etc/passwd)を編集して、登録したユーザのパスワードのハッシュ値をルートのパスワード部分へ移植します。パスワードのハッシュ値は一番目のコロン(:)と二番目のコロン(:)の間の値です。ここでは青文字の user のパスワードのハッシュ値を赤文字の root のパスワードのハッシュ値へ移植すれば終了です。これで root から userで登録したパスワードでログインできます。
$ vi /etc/passwd
### /etc/passwd の内容 ###

root:r.4feIpNeMISQ:0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/usr/sbin:
sys:*:3:3:sys:/dev:
adm:*:4:4:adm:/var/adm:
sync:*:6:8:sync:/bin:/bin/sync
shutdown:*:7:9:shutdown:/sbin:/sbin/shutdown
halt:*:8:10:halt:/sbin:/sbin/halt
operator:*:12:0:operator:/root:
ftp:*:15:14:ftp:/var/ftp:
nobody:*:99:99:nobody:/home:/bin/sh
user:rnArX/.5MM0Cg:100:1000::/home:/bin/bash

Debian Jessie のインストール

root でログインし直した後、玄箱(初代)と同じ要領で Debian Jessie をインストールすれば、インストールは完了です。

玄人志向 玄箱用 Debian Jessie 通常版(カーネル3.16 版)
http://near-unix.blogspot.jp/2016/01/debian-jessie-316.html

注意事項

ハードディスクのパーティション設定(mfdisk)やフォーマット(mke2fs)は、すべて玄箱(初代)またはHD-HLAN のファームウェアで行ってください。他の Linux マシン上でフォーマットすると u-boot からハードディスク内のファイルを見つけられなくなります。そのため起動できなくなります。

ハードディスクだけを取り出してパソコン上でフォーマットする場合には、 inode size を調整して ext2 または ext3 フォーマットする必要があります。これを見つけるまで大変な苦労をしてしまいました。かつて grub 0.98 の時代にも同様の問題がありました(苦笑)。新しいバージョンの u-boot であれば、この問題も解決されているのかもしれません。
# mke2fs -I 128 -j /dev/hda1
# mke2fs -I 128 -j /dev/hda3
u-boot から起動させるハードディスクは inode サイズに注意


0 件のコメント:

コメントを投稿