mtd-utils für NAND Sicherung übersetzen

Es gibt im Netz viele Anleitungen zum Übersetzen der mtd-utils. Leider ist keine Einziger von mir aufgefundener Artikel auf meine Anforderungen zugeschnitten. Die meisten Anleitungen sind für sehr alte Versionen der mtd-utils verfasst, so das sie zum Beispiel davon ausgehen das kein ./configure Script für diese Software existiert oder die Anleitungen beziehen sich auf die besonderheiten des Cross-Compilings und lassen alles andere weg.

Hier ist meine Anleitung für das übersetzen der mtd-utils auf der NAS CL-35B2. Diese Anleitung wird benötigt um die Werkzeuge nanddump und nandwrite zu erhalten welche für ein Backup und Restore der NAS benötigt werden.

Die Anleitung kann direkt nach dem vorbereiten eines Buildsystems für die CL-35B2, und einem chroot in das Buildysystem, verwendet werden.

Die Bibliotheken werden direkt in das Buildsystem geschrieben und ich verwende das Paketmanagement nicht da es sich nur um das Buildsystem handelt, welches nach dem erfolgreichen übersetzten der Quellen wieder gelöscht wird. Sollte Dein Buildsystem Dauerhaft bestehen sollen empfehle ich Dir rpm-Pakete entsprechend dieser Anleitung zu erstellen.

1.) Vorbereitungen und Download der Sourcecodes

2.) zlib erstellen

3.) lzo erstellen

4.) e2sfprogs erstellen

5.) Die mtd-utils übersetzen

nach der Installation sind folgende Werkzeuge zusätzlich verfügbar.:

ToolNutzen
ubiupdatevol
ubimkvol
ubirmvol
ubicrc32
ubinfo Ausgabe von Informationen zum NAND Speicher und zur Partitionierung und zu den Details einer UBI-Partition
ubiattach
ubidetach
ubinize
ubiformat
ubirename
mtdinfoAusgabe von Informationen zum NAND Speicher und zur Partitionierung und zu den Details einer MTD-Partition
ubirsvol
ubiblock
ftl_format
doc_loadbios
ftl_check
mtd_debug
docfdisk
serve_image
recv_image
flash_erase
flash_lock
flash_unlock
flash_otp_info
flash_otp_dump
flash_otp_lock
flash_otp_write
flashcp
mtdpart Partitionierungswerkzeug für einen NAND Speicher
nanddump Export des Inhalts einer NAND-Partition
nandwrite zurückschreiben einer Sicherung in den NAND Speicher
nandtest
nftldump
nftl_format
rfddump
rfdformat
mkfs.ubifs
mkfs.jffs2
jffs2dump
jffs2reader
sumtool

Hilfe, ich habe kein uuencode!!!

Zufällige ASCII Zeichen

Ich wollte mir vor kurzem Schadcode zur Analyse von einem Computer ohne Netzwerk über die Serielle Console kopieren, musste jedoch leider feststellen das kein uuencode auf dem Server vorinstalliert war.

Nach einer kurzen suche suche bin ich auf xxd gestoßen, mit dem sich Binärdaten in hexadezimalcodes, und wieder zurück, umwandeln lässt.

Eine Datei „Datei“ kann mit dem folgenden Aufruf in Hex-Dump gewandelt werden.:

Ich schalte bei der Seriellen Console im anschluss das Logging ein, schreibe die Ausgaben also in eine Datei. und gebe mit „cat Datei.txt“ die Hex-Dump-Datei aus.

Nach dem die überzähligen Zeilen aus dem Mitschnitt entfernt wurden kann mit dem folgenden Befehl der Hex-Dump wieder in die Ursprungsdatei zurück umgewandelt werden.

Die beiden Dateien „Datei-eins“ und die auf dem ursprünglichen Computer liegende Datei „Datei“ sind identisch. Der Dateiname und die Dateirechte werden bei dieser Methode jedoch im gegensatz zu uuencode nicht übernommen.

Bei einem Größenvergleich mit uuencode schneidet xxd erwartungsgemäß nicht besonders gut ab,

Test zum Speicherbedarf:

  • Anlegen einer binären Testdatei mit:

  • Erzeugen der Testdateien für uuencode, xxd, base32 und base64:

Die Sicherung der Datei ist als Hex-Dump, xxd deutlich größer als mit uuencode oder base64, sogar noch größer als eine Umwandlung in ASCII via base32:

 

Reverse SSH Tunnel

Tunnel aus der anderen Richtung

Seit der Deaktivierung extern erreichbarer IPv4 Adressen, von den Providers Dual-Stack Lite oder DS-Lite genannt, bei meinem und auch vielen anderen Internetzugängen lassen sich die heimischen Computer und Router nicht mehr ohne weiteres mittels OpenSSH erreichen.

Die Alternativen, wie Beispielsweise einen VPN Tunnel und die teilweise recht obskuren Shell sharing-Dienste (Nach aufruf einer URL habe zugriff auf die Shell als der Benutzer der die Shell freigegeben hat, ohne Passwort, ohne Key), überzeugen mich einfach nicht. Besonders zur Administration meines heimischen Servers und der NAS verlange ich einfach mehr vertraulichkeit von meiner Verbindung.

In diesem Blogbeitrag zeige ich Schritt für Schritt wie ein reverser, mit anderen Worten umgekehrter, SSH Tunnel errichtet werden kann.

Revers SSH-Tunnel? Das ist wenn Bob eine Verbindung zur Shell des Computers von Alice herstellen möchte, der Computer von Alice ist jedoch wegen einem NAT oder einer Firewall nicht erreichbar ist. Alice muss dann zuerst eine Verbindung zu Bobs Computer herstellen und in dieser die Verbindung zu ihrem eigene Computer mitbringen.

Für mein Beispiel nehmen wir an, das der Computer von Alice die IP-Adresse 10.0.0.2 und der Computer von Bob die IP-Adresse 192.168.0.2 hat, und zwar eine Verbindung von Alice zu Bob, jedoch umgekehrt keine Verbindung möglich ist.

1.) SSH Verbindung von Alice zu Bob herstellen. (Vom Zielcomputer zu dem Computer auf dem eine Verbindung auf die Shell eigentlich hergestellt werden soll)

Der Port 49152 den ich hier verwende ist ein beliebiger, auf Bobs Computer nicht verwedeter Port.

2.) Nun kann Bob eine SSH-Verbindung zum Computer von Alice über den jetzt aufgebauten SSH-Tunnel herstellen.

Wenn die von Alice hergestellte Verbindung zu Bob jedoch abbricht verliert auch Bob seine Verbindung zu Alice.
Bob sollte aus diesem Grund due Konfiguration seines SSH-Servers so anpassen, das die Verbindung nicht wegen eines Timeout getrennt wird.

Die Daten /etc/ssh/sshd_config kann zu diesem Zweck wie folgt angepasst werden.:
TCPKeepAlive no
ClientAliveInterval 30
ClientAliveCountMax 100

Linux: eine einfache und „schöne“ Festplattenfüllanzeige

Ich stelle euch hier mein Script zur Festplattenfüllanzeige meiner Server zur verfügung, da viele meiner Freunde das Script von mir wünschten.
Ich habe das script auf meinen Server in der .bashrc Datei hinterlegt und es zeigt nach dem Login auf den Server, auch via SSH, werden die Fülldaten aller eingebundenen Datenträger angezeigt.

Die Ausgabe des Scriptes enspricht dem Folgenden Bild.:
Ausgabe meines Scripts drives.shDie Farben der Rahmen wird bei einer Belegung von 80% nicht mehr grün sondern gelb und ab sowie ab 90% Festplattenfülle in Rot dargestellt.

Die Breite der Darstellung passt sich beim Aufruf automatisch der im Terminalfenster verfügbaren Breite des Fensters an.

Auf meinem CL-25B2 NAS habe dieses Script, anstelle der .bashrc Datei in der Datei /etc/profile.local hinterlegt.

Verbesserungsvorschläge bitte in die Kommentare 😉

 

 

Da im WordPress die Formatierung von Shellscripten immer ungewünscht „angepasst“ wird, zusätzlich hier noch ein Download-Link für das Script.: http://dl.loteks.de/drives.sh

CL-35B2 hacken, Dienste aufräumen sowie SMB und NFS anbieten

Es gibt zwei Wege einen root-Zugang zur CL-35B2 zu erlangen, einen für alte Versionen des Systems und einen für aktuelle Versionen.:

Der klassische Web:
Das root-Passwort ist „toor„!

Der neue Weg wenn der klassische Weg nicht möglich ist:
Lege eine Systemsicherung in der Weboberfläche an. Bearbeite die in der Sicherung enthaltene Datei /etc/shadow in dem Du die Zeile welche mit „admin:“ beginnt in die erste Zeile kopierst, nach dem Du die erste Zeile, welche mit „root:“ beginnt gelöscht hast.
Ändere das „admin:“ in der neuen ersten Zeile in „root:“ Im Anschluss füge die Zip-Datei der Sicherung wieder zusammen und Spiele das Backup auf die CL-35B2 zurück.

Anschließend ist der root-Login via Telnet möglich.

Das erste das ich auf der NAS aktiviere ist der SSH-Dienst, da ich das unverschlüsselte Telnet nicht mag!

Als nächstes ist mir aufgefallen, das jemand in /root/.ssh/authorized_keys einen Key hinterlegt hat. Das mag ich nicht, ich lösche zuerst diese Datei.
Da es kein passwd auf der Box gibt kommt das ändern des Passwortes erst später…

# deaktivieren was nicht laufen soll

# software deinstallieren die wir nicht wollen
# was soll ein Sockproxy auf einer NAS? und ich mag keinen gstreamer auf der NAS
# auserdem lösche ich die NAS Software von fantec

# ACHTUNG !!! Jetzt ist die Netzwerk konfiguration umbenannt worden, korrigieren wir das SOFORT!

Im Anschluss werden die nicht vorhandenen Dienste von der NAS entfernt.:

Jetzt fehlen der NAS alle Dienste die ich persönlich nicht auf meiner NAS sehen möchte.
Jetzt installiere ich mit die grundlegenden Linux Werkzeige lsof, wget, passwd und bzip2

Um auf der NAS Cronjobs ausführen zu können benötige ich eine reihe von zusäztlichen Paketen.:

Jetzt da ich Cronjobs anlegen kann lasse ich mir bei dieser Gelegenheit anzeigen ob jemand aktuell auf dieser CL-35B2 eingeloggt ist. (Ich habe ja ein paar LED’s an der NAS)

… und ein kurzes Shellscript namens countuser.sh das die Anzahl der aktuell eingeloggten benutzer Zählt und die LED setzt.:

Das Script ausführbar machen:

…und ein cronjob für das countuser.sh-Script anlegen.:

# dann die NAS-Box rebooten:

# nur wenn die BOX via SSH zu erreichen ist und ich mich einloggen kann schale ich via:

# Telnet deinstalliere ich via

# zu guter letzt kopiere ich mir noch die bash startdateien in den /root Ordner:
.bash_logout  .bash_profile  .bashrc

ddclient (DynDNS) installieren:

Die Pakete stammen alle aus dem Veralteten Repository auf:

Ergänzung:

Die alten root Passwörter für die CL-25B2, „root“ und „toor“ scheinen in der Aktuellen Firmware nicht mehr verwendet zu werden.