====== Iomega Home Media Network Hard Drive ====== {{ :soho:ihmnhd:hmns-hero.jpg?250|tiny Tux}} Beginnen will ich zunächst mit einer Abschrift des Beitrags **Iomega HMNHD** von //md83// aus dem [[http://kathif.vs120005.hl-users.com/thread.php?postid=20752|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: [[http://iomega.nas-central.org/wiki/Category:Home_Media|NAS-Central Iomega Wiki]] Noch zu bearbeiten: * [[https://iomega-eu-de.custhelp.com/app/answers/detail/a_id/26863|Iomega Storage Manager-Dienstprogramm (Linux)]] ===== Technische Parameter ===== ==== Hardware ==== * CPU zzgl. Peripherie, SoC: Oxford Semiconductor [[http://www.plxtech.com/products/consumer/oxe810se|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 [[http://www.hynix.com/datasheet/pdf/dram/HY5PS124(8,16)21C(L)FP(Rev0.4).pdf|Hynix HY5PS121621C]] * 1x 1000BASE-T Ethernet Transceiver [[http://www.icplus.com.tw/pp-IP1001.html|IC+ IP1001]] * 1x USB 2.0 Device * 1x interne HDD [[http://www.seagate.com/staticfiles/support/disc/manuals/desktop/Barracuda%207200.11/100452348g.pdf|Seagate Barracuda 7200.11]] mit 1000 GB * 1x interner 12V Lüfter 30mm [[http://www.evercool.com.tw/products/fan_3010.htm|Evercool EC3010L12EA]] ([[http://www.evercool.tw/prod_in.aspx?mnuid=1886&modid=17&pcid=14&pscid=10&pscid2=&pscid3=&prodid=114|neue Seite]]) * Mainboard: * meines hat den OXE810SE, die nicht notwendige Dual-SATA-Variante DSE wurde wohl auch verbaut (siehe [[http://iomega.nas-central.org/wiki/Home_Media_PCB_Pictures|hier]]) * kein vorbereiteter serieller Port erkennbar und damit leider nicht nachrüstbar === Iomega Wiki === * [[http://iomega.nas-central.org/wiki/Category:Home_Media|Geräteinformationen]] * [[http://iomega.nas-central.org/wiki/Home_Media_Disassembly|Öffnen der Iomega HMNHD]] * [[http://iomega.nas-central.org/wiki/Serial_port_%28Home_Media%29|Serielle Schnittstelle anzapfen]] (:!: nur mit Lötarbeiten möglich :!:) == sonstige Hackinfos == * [[http://iomega.nas-central.org/wiki/Home_Media_Stock_Configuration#First_Partition_Analysis|Partitioning & File Systems]] * [[http://www.mikrocontroller.net/articles/P89626#SATA_Boot|SATA Boot]] (von OXE820 !!!) ==== 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 === __**[[http://www.cvedetails.com/cve/CVE-2009-2367/|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 ==== * WD MyBook WE (WDMBWE) * [[http://community.wdc.com/t5/My-Book-World-Edition/bd-p/mbw_world|WD Forum]] * [[http://mybookworld.wikidot.com/|Hacking WD MyBook World Ed]] * [[http://mockmoon-cybernetics.ch/computer/mbwe/|MyBook World WDH1NC10000]] (Dominic Radermacher) * [[http://www.ismprofessional.net/pascucci/documenti/mybook/mybook-hacking-en.html|How to Revive Western Digital Mybook World Edition]] * [[http://www.ismprofessional.net/pascucci/index.php/progetti/mybook-repository/|MyBook: Hacking e Repository]] ===== Firmware erneuern ===== 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 [[https://iomega-eu-de.custhelp.com/app/answers/detail/a_id/21296|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: * [[https://iomega-eu-de.custhelp.com/app/answers/detail/a_id/21296|Home Media Network Hard Drive Firmware Version 2.104]] * [[https://iomega-eu-de.custhelp.com/app/answers/detail/a_id/24654|Home Media Network Hard Drive Firmware Version 2.064]] * [[https://iomega-eu-de.custhelp.com/app/answers/detail/a_id/21295|Home Media Network Hard Drive Firmware Version 2.063]] * [[https://iomega-eu-de.custhelp.com/app/answers/detail/a_id/22205|Home Media Network Hard Drive Firmware Version 2.040]] Die GPL Quellen sind ebenfalls verfügbar (auch wenn etwas älter), ohne Registrierung: * [[https://iomega-eu-de.custhelp.com/app/answers/detail/a_id/21928|Iomega Home Media Network Hard Drive GPL Source Code]] ==== 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: * [[http://downloads.iomega.nas-central.org/Users/Mijzelf/HMNHD/partitions.2.064/|Partitionsabbilder Firmware Version 2.064]] * [[http://downloads.iomega.nas-central.org/Users/Mijzelf/HMNHD/partitions.2.038/|Partitionsabbilder Firmware Version 2.038]] Folgende Anleitungen werden für die Regenerierung benötigt: * [[http://iomega.nas-central.org/wiki/Home_Media_Disassembly|Öffnen der Iomega HMNHD]] * [[http://iomega.nas-central.org/wiki/Installing_firmware_on_a_new_disk_(Home_Media)|Firmware auf neue HD installieren]] ===== Gerät rooten ===== 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 [[http://iomega.nas-central.org/wiki/Home_Media_Enable_Telnet_And_Root_Access|NAS-Central Iomega Wiki]] kann die Aktivierung von Telnet ganz bequem über das Webinterface ohne Ausbau der HDD erfolgen: - neuste Version des Firmware Moduls **home-media-telnet-2.063** herunterladen (ZIP Archiv) - es ist [[http://downloads.iomega.nas-central.org/Home_Media/FirmwareMods/|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 [[http://downloads.iomega.nas-central.org/Users/Mijzelf/HMNHD/enable_telnet.tgz.encrypted|hier]] beherzigt und dieses genutzt - das Entpacken entfällt dann :-) - entpacken des ZIP Archiv - ja es ist vermeintlich sehr sehr klein - es beinhaltet auch nur Änderungen an ein paar Konfigurationsdateien - im Webinterface der Iomega HMNHD anmelden und die ausgepackten Datei im //Firmware Updater// benutzen - 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 [[http://www.nslu2-linux.org/|NSLU2-Linux Commune]]. Die Anleitung für die Iomega HMNHD findet sich im [[http://iomega.nas-central.org/wiki/Home_Media_Optware|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 [[http://iomega.nas-central.org/wiki/Getting_apt-get_to_work|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 `/' ==> 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. *** (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 [[http://iomega.nas-central.org/wiki/Installing_ssh_daemon|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 … ===== Systemerweiterungen ===== ==== 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 [[http://iomega.nas-central.org/wiki/Nfs_server_(Home_Media)|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 [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=511750|Debian Bug report logs - #511750]]\\ [[https://bugs.launchpad.net/nss-ldap/+bug/387576|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 ===== Links zu GPL Quellen ===== Iomega hat bisher nie den 2-stage Bootloader (U-Boot) als Quelle veröffentlicht. Es gibt aber einige Projekte, die sich damit auseinandergesetzt haben: * http://svn.nslu2-linux.org/svnroot/slugos/trunk/slugos/openembedded/conf/machine/oxnas.conf * http://svn.nslu2-linux.org/svnroot/slugos/trunk/slugos/openembedded/packages/u-boot/u-boot-1.1.2/oxnas.patch * http://svn.nslu2-linux.org/svnroot/slugos/trunk/slugos/openembedded/packages/linux/linux-2.6.24/oxnas/oxnas-uart.patch * http://svn.nslu2-linux.org/svnroot/slugos/trunk/slugos/openembedded/packages/linux/linux-2.6.24/oxnas/oxnas.diff * http://svn.nslu2-linux.org/svnroot/slugos/trunk/slugos/openembedded/packages/linux/linux-2.6.24/oxnas/defconfig * https://github.com/lemenkov/u-boot-oxnas {{tag>soho iomega media rooten telnet nfs ldap ssh rsync inetd optware nslu2 debian}}