Iomega Home Media Network Hard Drive

tiny Tux Beginnen will ich zunächst mit einer Abschrift des Beitrags Iomega HMNHD von md83 aus dem Kathi-Forum. Mit der Zeit werde ich dann meine eigenen Erfahrungen und Hinweise mit einarbeiten.

Bei der Iomega HMNHD (HMNHD = Home Media Network Hard Drive) handelt es sich um ein NAS, welches speziell für den „Consumer-Markt“ vorgesehen ist. Eigentlich wollte ich an der Kiste nicht basteln, aber das dauerhafte Laufen der HDD stört und das Fehlen einfachster Dienste wie NFS oder LDAP Authentifizierung verhindert die Nutzung in heterogenen Netzwerken. Die Platte soll einen Spindown machen, wenn es nichts mehr zu tun gibt. Daten sollen auch über NFS exportiert und Benutzer über LDAP authentifiziert werden können.

Nach langem Suchen im Internet habe ich endlich eine Seite gefunden, die beim Basteln hilft: NAS-Central Iomega Wiki

Noch zu bearbeiten:

Hardware

  • CPU zzgl. Peripherie, SoC: Oxford Semiconductor OXE810(D)SE
    • ARM926EJ-S mit 367 MHz
    • SATA II Interface
    • Lüfter Controller
    • AES Ver- und Entschlüsselung in Hartware
    • 10/100/1000 Ethernet Controller mit TSO
    • USB 1.1 und 2.0 Host Controller
  • 64 MB DDR2 SDRAM Hynix HY5PS121621C
  • 1x 1000BASE-T Ethernet Transceiver IC+ IP1001
  • 1x USB 2.0 Device
  • 1x interne HDD Seagate Barracuda 7200.11 mit 1000 GB
  • 1x interner 12V Lüfter 30mm Evercool EC3010L12EA (neue Seite)
  • Mainboard:
    • meines hat den OXE810SE, die nicht notwendige Dual-SATA-Variante DSE wurde wohl auch verbaut (siehe hier)
    • kein vorbereiteter serieller Port erkennbar und damit leider nicht nachrüstbar

Iomega Wiki

sonstige Hackinfos

Software

  • U-Boot 1.1.2
  • Kernel 2.6.24.4
  • Debian 5.0.3 (Lenny)

U-Boot und Kernel liegen in einer Raw-Partition, genauer in der 3. primären Partition, welche wiederum direkt am Anfang der Festplatte genau 24.097 Blöcke umfasst.

Sicherheitslöcher

Berechenbare Session IDs

CVE-2009-2367: Das proprietäre Programm 'cgi-bin/makecgi-pro' im Iomega StorCenter Pro generiert berechenbare Session IDs. Dies ermöglicht es einem Angreifer per Brut-force Attacke auf den Parameter 'session_id' eine aktive Session zu übernehmen und die zugehörigen Privilegien zu erlangen. Mit sehr hoher Wahrscheinlichkeit wird im Iomage HMNHD die selbe Software genutzt wie auch im Iomega StorCenter Pro und des Szenario ist übertragbar.

Vergleichsprodukte

Gleich nach dem ersten Start-Up habe ich meine Firmware auf die Version 2.064 erneuert. Mittlerweile ist die Version 2.104 erschienen. Diese kann nach vorheriger Anmeldung (also auch Registrierung) bei Iomega hier heruntergeladen werden. Zu beachten ist, dass hierfür unbedingt die Version 2.063 installiert sein muss. Das steht alles bei Iomega zum Nachlesen. Der Upgrade erfolgt wie beschrieben über das Webinterface und ist in wenigen Minuten vollzogen.

Verfügbare Firmware Versionen:

Die GPL Quellen sind ebenfalls verfügbar (auch wenn etwas älter), ohne Registrierung:

Wiederherstellung

Sollte durch eine der folgenden Schritte die Iomega HMNHD unbrauchbar geworden sein, so muss man die verbaute SATA Festplatte ausbauen und den Inhalt der Partitionen von Hand wieder regenerieren.

Verfügbare Firmware Versionen:

Folgende Anleitungen werden für die Regenerierung benötigt:

Das Gerät kann nur über Webinterface bedient und konfiguriert werden. Aus den Open Source Quellen von Iomega ist ersichtlich, dass die erste serielle Schnittstelle mit einem getty-Login bedient wird. Auszug aus der /etc/inittab:

T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100

Die Ausstattung der Hardware lässt aber keinen Zugriff auf die erste serielle Schnittstelle zu. Der erste Zugriff auf das Gerät muss über das Netzwerk erfolgen.

Aber Achtung:

:!::!::!: Alle weiteren hier gezeigten oder verlinkten Hinweise führen zwangsläufig zum Verlust der Garantie. Ich lehne jegliche Verantwortung zu etwaigen Schäden, inkl. Sach- und Personenschäden, ab. Ich animiere mit dieser Seite ausdrücklich niemanden zum Verändern und Manipulieren seiner garantierten Gerätefunktionen. Jeder einzelne, also auch Sie, handelt selbst verantwortlich. :!::!::!:

Telnetzugang

Dank des NAS-Central Iomega Wiki kann die Aktivierung von Telnet ganz bequem über das Webinterface ohne Ausbau der HDD erfolgen:

  1. neuste Version des Firmware Moduls home-media-telnet-2.063 herunterladen (ZIP Archiv) - es ist hier verfügbar — Achtung: ich hatte bereits auf die Firmware 2.064 gewechselt und so habe ich die im NAS-Central Iomega Wiki etwas weiter unten stehenden Hinweise für das aktuellere Firmware Modul enable_telnet.tgz.encrypted von hier beherzigt und dieses genutzt - das Entpacken entfällt dann :-)
  2. entpacken des ZIP Archiv - ja es ist vermeintlich sehr sehr klein - es beinhaltet auch nur Änderungen an ein paar Konfigurationsdateien
  3. im Webinterface der Iomega HMNHD anmelden und die ausgepackten Datei im Firmware Updater benutzen
  4. die Iomega HMNHD wird dadurch einige Dateien verändern und dann neu starten - danach besitzt die Iomega HMNHD einen vollwertigen Telnet-Zugang

Das Passwort für root und den durch das Update neu angelegten Benutzer nascentral ist ioadmin123. Die Anmeldung über Telnet muss mit dem Benutzernamen nascentral erfolgen, da es root nicht gestattet ist, sich über Telnet anzumelden. Danach kann man mit 'su' zu root werden.

:!: Unmittelbar nach der ersten Anmeldung muss das Passwort geändert werden. :!:

Mein Erfolg:

telnet iomega-hmnhd.domain.earth
Trying 10.0.0.10...
Connected to iomega-hmnhd.domain.earth.
Escape character is '^]'.
Debian GNU/Linux 5.0
iomega-hmnhd login: nascentral
Password:                                                             ← ioadmin123
Linux iomega-hmnhd 2.6.24.4 #1 Mon Jun 1 11:21:53 MDT 2009 armv5tejl

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
nascentral@iomega-hmnhd:~$ su -
Password:                                                             ← ioadmin123
root@iomega-hmnhd:~# _

Software nachinstallieren

Es empfiehlt sich den Midnight Commander noch nach zu installieren, um nun komfortabler zu basteln. Wer mag, kann auch einen in Bedienung bekannteren Editor als den 'vi' installieren, z.B. 'nano'.

Optware

Ein möglicher Weg wäre die Nutzung von Optware, einem Paketsystem der NSLU2-Linux Commune. Die Anleitung für die Iomega HMNHD findet sich im NAS-Central Iomega Wiki. Da es sich aber bei der Iomega HMNHD um eine vollwertige Debian Installation auf Festplatte mit reichlich Reserven im Root-Dateisystem handelt, habe ich mich für die Nutzung der Debian-Pakete entschieden.

Debian Pakete

Im NAS-Central Iomega Wiki findet man die wichtigsten Hinweise für die (Re-)Aktivierung des 'apt-get' Systems von Debian. Wohl aufgrund meiner zuvor installierten Firmwareversion 2.064 und dem neueren Script zur Telnet Aktivierung habe ich dort benannte Probleme nicht erhalten. Es reichten folgende Schritte für die Installation des Midnight Commander aus.

apt-get arbeitsfähig bekommen (als root):

mkdir /var/lib/apt/lists
mkdir /var/lib/apt/lists/partial
mkdir /var/cache/apt/archives
mkdir /var/cache/apt/archives/partial
mkdir /var/lib/dpkg/updates
mkdir /var/lib/dpkg/alternatives
mkdir /var/lib/dpkg/info
touch /var/lib/dpkg/status
touch /var/lib/dpkg/available
touch /var/lib/dpkg/diversions

Debian Repositories synchronisieren und aktualisieren (als root):

apt-get update
apt-get upgrade
apt-get install libc6
apt-get install debconf
apt-get dist-upgrade

Midnight Commander installieren (als root):

apt-get install mc
Hinweise zur Paketinstallation

Bei der Installation einiger systemnaher Pakete wird es zu folgender Meldung kommen:

Configuration file `<directory>/<filename>'
 ==> File on system created by you or by a script.
 ==> File also in package provided by package maintainer.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : background this process to examine the situation
 The default action is to keep your current version.
*** <filename> (Y/I/N/O/D/Z) [default=N] ? _

Hier sollte immer die Voreinstellung 'N' gewählt werden. Im Zweifel kann mit 'D' der Unterschied ermittelt werden und von Fall zu Fall entsprechend entschieden werden.

Beachte: Bei der Frage nach den Unterschieden in der Datei /etc/debian_version sollte unbedingt die neue Version der Debian Distribution übernommen werden. Zum Zeitpunkt dieser Beschreibung hier war es der Wechsel von Version 5.0.3 (original von Iomega) auf 5.0.8. Also mit 'D' prüfen und dann mit 'Y' übernehmen :!:

SSH Zugang

Es empfiehlt sich, den Telnetzugang umgehend durch einen SSH Zugang zu ersetzen. Telnet überträgt Passwörter immer im Klartext über das Netzwerk. Mit geeigneten Hilfsmitteln wäre dieses bei einer etwaigen Nutzung eines WLAN allein nur durch „Zuhören“ zu erspähen. Im NAS-Central Iomega Wiki findet sich dazu diese kurze Anleitung, vorausgesetzt man hat sich für die Nutzung der Debian Pakete entschieden.

Installation als Root:

apt-get update
apt-get install dropbear

Wahrscheinlich aufgrund der in Hardware gegossenen AES Unterstützung erfolgt die Generierung des RSA und besonders des DSS Host Schlüsselpaars ausgesprochen flott. Das habe ich auf flachbrüstigen Systemen auch schon wesentlich langsamer erlebt.

Um den gewohnten Benutzer nascentral auch für den SSH Zugang nutzen zu können, muss kontrolliert werden, dass in der Datei '/etc/shadow' des Passwort für diesen Benutzer nicht leer ist! Das würde so aussehen:

/etc/shadow (zweites Feld ist leer)

nascentral::14517:0:99999:7:::

An diese Stelle muss unbedingt der Inhalt des zweiten Felds aus der '/etc/passwd' kopiert werden (also das verschlüsselte Passwort aus der passwd Datei). Grund hierfür ist, dass der SSH Daemon, Dropbear, ausschließlich nur gegen shadow-Passwörter authentifiziert. Telnet hingegen nutzt nur die klassische passwd Datei.

Nun funktioniert alles so wie hier:

ssh nascentral@iomega-hmnhd.domain.earth
nascentral@iomega-hmnhd's password:                                   ← ioadmin123
Linux iomega-hmnhd 2.6.24.4 #1 Mon Jun 1 11:21:53 MDT 2009 armv5tejl

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
nascentral@iomega-hmnhd:~$ su -
Password:                                                             ← ioadmin123
root@iomega-hmnhd:~# _

PAM Nutzung ausgeschlossen

Leider bringt das Debian Paket von 'dropbear' keine Unterstützung für Das unter Linux übliche Authentifizierungssystem PAM mit sich. Sollte man also (so wie ich) vorhaben, im weiteren Verlauf eine Authentifizierung über LDAP zu aktivieren, dann muss man den OpenSSH Server nutzen. Dieser bringt zwar im Gegensatz zu 'dropbear' erheblich mehr Abhängigkeiten zu anderen „schwergewichtigen“ Bibliotheken mit sich, entspricht aber eher gängigen Standards wie PAM.

Installation als Root:

apt-get update
apt-get install openssh-server

Achtung: Wenn zuvor 'dropbear' installiert wurde, muss dieser natürlich noch vor der Installation des OpenSSH Server deinstalliert werden, als Root mit: apt-get purge dropbear

Telnet Zugang deaktivieren

FIXME Die Deaktivierung des Telnetzugangs kann nun im Anschluss erfolgen …

NFS Server

Für den Betrieb eines NFS Servers benötigt man entsprechende Unterstützung im Linux Kernel. Für den mit der originalen Firmware von Iomega ausgelieferten Linux Kernel wurde aber eine Konfiguration ohne NFS Unterstützung benutzt. Nach der Beschreibung aus dem NAS-Central Iomega Wiki muss der Kernel und die zugehörigen Kernel-Module ausgetauscht werden.

Aber Achtung:

:!::!::!: Das hier beschriebene Vorgehen kann das Gerät in einen absolut unbrauchbaren Zustand versetzen. Sie handeln auf eigenes Risiko! :!::!::!:

hier erst ein kurzer Mitschnitt — Details folgen:

su -
cd /tmp
wget http://downloads.iomega.nas-central.org/Users/Mijzelf/HMNHD/nfsd/uImage-nfs
wget http://downloads.iomega.nas-central.org/Users/Mijzelf/HMNHD/nfsd/modules-nfs.tgz
cd /lib/modules
tar xvzf /tmp/modules-nfs.tgz
rm 2.6.24.4-nfs/build
rm 2.6.24.4-nfs/source
dd if=/tmp/uImage-nfs of=/dev/sda bs=512 seek=300
reboot
su -
apt-get install nfs-kernel-server nfs-common portmap

RSYNC Daemon

apt-get install rsync

Den Rsync Daemon auf die Nutzung durch den Internet Daemon einstellen, wobei folgende Zeile in /etc/default/rsync geändert wird:

RSYNC_ENABLE=inetd

Nun den Internet Daemon für den RSYNC Dienst einrichten, wobei ich hier nur die Konfiguration des klassischen OpenBSD inetd und nicht des moderneren xinetd beschreibe. In der Datei /etc/inetd.conf folgende Zeile ergänzen:

rsync	stream	tcp	nowait	root	/usr/bin/rsync	rsync --daemon

Alle gewünschten RSYNC Datenobjekte in der Datei /etc/rsyncd.conf konfigurieren, so wie zum Beispiel für den vollen Zugriff auf das im HMNHD schon vorbereitete Backup Verzeichnis /nethdd/backup:

uid = root
gid = root
read only = true
transfer logging = false
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

[backup]
        comment         = backup files
        path            = /nethdd/backup
        read only       = no
        list            = yes

Nun erfolgt ein notwendiger Neustart des Internet Daemons, damit dieser seine neue Konfiguration nutzen und somit den RSYNC Dienst anbieten kann:

/etc/init.d/openbsd-inetd restart

LDAP Authenifizierung

FIXME noch mehr schreiben, hier nur die schlimmsten Infos:

sudo apt-get install libnss-ldap
sudo apt-get purge nscd

Debian Bug report logs - #511750
Ubuntu Bug report logs - #387576

ln -sf /lib/nss_ldap.so /usr/lib/libnss_ldap.so
ln -sf nss_ldap.so.1 /lib/libnss_ldap.so.2

http://wiki.debian.org/LDAP/PAM http://www.rjsystems.nl/en/2100-openldap-client.php