29.12.2011

Interne Festplatte auf USB-Platte spiegeln, l├Âschen, wieder herstellen

Oft steht das Problem, dass man vor der Reparatur eines Notebooks die Daten von der Festplatte l├Âschen will oder sogar muss. Immerhin haben diese oft mehr Wert als das Notebook selbst und wer wei├č schon, was w├Ąhrend der Reparatur noch geschieht...

Und leider bieten nicht alle Notebooks die M├Âglichkeit, die Festplatte(n) einfach auszubauen. Die folgende Anleitung zeigt Ihnen deshalb, wie Sie
  1. den Inhalt einer internen Festplatte komplett auf eine externe, mit USB angeschlossene Platte spiegeln,
  2. den Inhalt einer Festplatte komplett l├Âschen, so das dieser auch nicht mit gro├čem Aufwand wieder herstellbar ist (die Daten also "schreddern")
  3. das Backup (Image) zur├╝ck spielen
Damit kann Ihnen diese Anleitung also auch dann helfen, wenn Sie gebrauchte Platten weiterverkaufen oder verschrotten wollen oder wenn es darum geht, ein Backup f├╝r eine schnelle Wiederherstellung insbesondere Ihres Betriebssystems zu erzeugen.

Sofern das Notebook noch funktioniert , sollten Sie f├╝r die folgenden Schritte unbedingt am Stromnetz betreiben, denn der Vorgang kann - je nach Plattengr├Â├če - viele Stunden dauern.

Zun├Ąchst sollten Sie sich eine Linux-Live-CD besorgen. Die folgenden Schritte sind mit Ubuntu erprobt, gehen aber auch mit jedem anderen Linux, welches Ihnen eine Live-CD oder gar eine Datenrettungsdisk bietet .

WARNUNG: Bei nicht exakter oder nicht an Ihr System angepasster Vorgehensweise k├Ânnen Ihre Daten von Ihnen selbst unwiederbringlich zerst├Ârt werden: Ohne gefestigte Linux-Grundkenntnisse (und also nicht ohne ein weiteres Backup der DATEN) sollten Sie das nicht angehen.

1) Starten Sie von der Rettungs/Linux-Live-CD.

2a)
├ľffnen Sie eine Konsole, geben Sie ls -l /dev/sda ein. Pr├╝fen Sie das Ergebnis, ob die "Datei" gefunden wurde, dann ist Ihre einzige(?) Platte das Ger├Ąt '/dev/sda' und vermutlich eine SATA-Platte.

Weitere Festplatten m├╝ssten dann unter /dev/sdb, /dev/sdc zu finden sein.

Nur wenn nichts gefunden oder nicht alle Platten entdeckt wurden:

2b)
geben Sie ls -l /dev/hda ein. Pr├╝fen Sie das Ergebnis, ob die "Datei" gefunden wurde, dann ist Deine einzige(?) Platte das Ger├Ąt '/dev/hda' und vermutlich eine IDE-Platte.

Weitere Festplatten m├╝ssten dann unter /dev/hdb, /dev/hdc zu finden sein.

3) Mounten Sie die USB-Platte (einfach anstecken, geht meist automatisch)

4) Schauen Sie nach, wo diese in /media/ gemountet wurde. Ich nehme im Folgenden an, es handelt sich um /media/Volume (das ist auch oft zutreffend)
In der Konsole: ~> ls /media

Finale:
Je nachdem welche Platte existiert und wie "Volume" bei Ihnen heisst:
~> sudo dd if=/dev/sda | gzip -9 -c > /media/Volume/sda.img.gz

Das erzeugt eine Datei mit einem komprimierten(!) Image. Wollen Sie, das das Notebook danach automatisch herunter f├Ąhrt, so gegen Sie unmittelbar nach dem Befehl noch ein

&& init 0

ein,

Shotdown:

Mit einem ~> ls -l /media/Volume/sda.img.gz sollten Sie sich dar├╝ber informieren ob das Anlegen es Backups geklappt hat. Dieses sollte, au├čer bei ganz neuen, nur (gut komprimierbaren) Textdateien enthaltenden oder nur geringf├╝gig gef├╝llten (oder bei bereits "geschredderten") Platten nicht(!) so sehr viel kleiner sein als Ihre eigentliche Festplatte.

~> sudo dd if=/dev/zero of=/dev/sda
Das ├╝berschreibt Ihre komplette Platte mit (bin├Ąren) Nullen.

oder, f├╝r gehobene Anspr├╝che:

~> sudo dd if=/dev/random of=/dev/sda
Das ├╝berschreibt Ihre komplette Platte mit Zufallswerten

Die letztere M├Âglichkeit zerst├Ârt Ihre Daten so gr├╝ndlich, dass diese auch nicht mit Geheimdiensten durchaus zur Verf├╝gung stehenden und teuren, langwierigen, deshalb auch nur bei dort selten angewendeten M├Âglichkeiten - die dann auch nur teilweise zum Erfolg f├╝hren - wieder hergestellt werden k├Ânnen. Wenn Sie selbst wirklich zu viel Geld haben k├Ânnen Sie ja mal testen, ob Ontrack diese Daten wieder herstellen kann oder ob es auch bei einer wirklich gro├čen Rechnung dieses auf dem Gebiete absolut anerkannten Spezialisten nur bei dem Versuch bleibt :-)

Aus diesem Grund sollten Sie ├╝berlegen, ob Sie das nicht jemanden machen lassen, der etwas davon versteht. Ein allzu amateurhaftes Vorgehen kann den Komplettverlust Ihrer Daten bewirken!

Nach der Reparatur:

1) Starte Sie von der Linux-Live-CD.
2) ├ľffne Sie eine Konsole
3) Mounten Sie die USB-Platte (einfach anstecken, geht meist automatisch)

Finale:
Je nachdem welche Platte existiert und wie "Volume" bei Ihnen hei├čt:
~> sudo cat /media/Volume/sda.img.gz | gzip -dc | dd of=/dev/sda

Wollen Sie, das das Notebook danach automatisch herunter f├Ąhrt, so gegen Sie unmittelbar nach dem Befehl noch ein

&& init 0

ein.

Die entpackten Daten werden zur├╝ckgeschrieben. Danach k├Ânnen Sie von der Platte normal booten und alle Partitionen sind wieder da.

Hinweis: Je nach Gr├Â├če der USB-Festplatte (├╝ber 2 Terabyte?) kann es sich lohnen dem Programm dd eine Blockgr├Â├če mitzuteilen:

sudo dd bs=4096 if=/dev/sda | gzip -9 -c > /media/Volume/sda.img.gz
sudo dd bs=4096 if=/dev/zero of=/dev/sda
sudo dd bs=4096 if=/dev/random of=/dev/sda

ist die Platte halbwegs modern machen Sie damit nichts falsch. Grund ist, dass moderne und gro├če Platten eine Blockgr├Â├če von 512B nur simulieren, was nat├╝rlich Rechen- und somit Transferzeit kostet.

21.12.2011

Ubuntu 10.10, Wlan via USB mit RT5370-Chipsatz - und wie man das zum Laufen bekommt

Diese Anleitung d├╝rfte f├╝r USB-WLAN-Sticks mit den Chips├Ątzen RT3070, RT3370, RT5370 und RT5372 auf jedem Linux-System mit einem Kernel ab 2.6 funktionieren. Getestet ist Sie unter Ubuntu 10.10 mit einem USB-Stick mit dem Chipsatz RT5370 welcher auf aktuellen und vor allem bei Notebook-Besitzern sehr beliebten kleinen Sticks gern zum Einsatz kommt.
Hinweis: Die Informationen dieses Artikels beziehen sich auf den 20. Dezember 2011. Inzwischen k├Ânnen Treiber oder Kernel in anderen Versionen vorliegen.

Schritt f├╝r Schritt

02.11.2011

PHP: Erster Montag im Monat

Der Frager hat ein "kleines" Problem mit der PHP-Funktion "strtotime". Nach einem Umzug zu einem anderen Hoster funktionierte diese trotz gleicher PHP-Version nicht mehr wie gewohnt. strtotime ist eine Funktion welche versucht(!) aus einem String einen Zeitpunkt zu ermitteln und ist wohl von vielem, u.a. von Lokaliserungseinstellungen abh├Ąngig. Im konkreten Fall f├╝hrt der Luxus aber auch zu Unw├Ągbarkeiten ...und die sollte man umgehen.
<?php
#Test:
print ErsterWochentagImMonat( 11, 2011, 1 )."\n";

function ErsterWochentagImMonat(
$intMonat, $intJahr, $intWochentag
) {

### Erwartete Daten:
#$intMonat = '1...12 (Januar...Dezember)

#$intWochentag = 0 f├╝r Sonntag;
#$intWochentag = 1 f├╝r Montag
# ...
#$intWochentag = 6 f├╝r Sonnabend;

# Plausibilit├Ątspr├╝fungen:
if ( 1 > $intMonat || 12 < $intMonat ) {
return false;
}
if ( 0 > $intWochentag || 6 < $intWochentag ) {
return false;
}

# Berechnung:
$intTag=date( 'w', mktime ( 0, 0, 0, $intMonat, 1, $intJahr ) );
# Ergebnis: 0 ... 6
if ( $intTag == $intWochentag ) {
return '01.' . ZweiStellig($intMonat) . '.' . $intJahr;
} else {
if ( $intTag < $intWochentag ) {
return ZweiStellig( $intWochentag - $intTag + 1 )
. '.' . ZweiStellig($intMonat)
. '.' . $intJahr;
} else {
return ZweiStellig( $intWochentag - $intTag + 8 )
. '.' . ZweiStellig($intMonat)
. '.' . $intJahr;
}
}
return false;
}

function ZweiStellig( $int ) {
$int = intval( $int );
if ( $int < 10 ) {
return '0' . $int;
}
return $int;
}
?>

17.09.2011

Linux: Logdateien als normaler Benutzer lesen

Jedesmal ein su oder sudo voranzusetzen, weil man /var/log/messages lesen oder verfolgen will kann nervig sein, zu dem braucht man das root-passwort, vor allem muss man es st├Ąndig eintippen:

~> sudo tail -fn200 /var/log/messages
Passwort:

Das nervt!

Dem kann man zwar abhelfen, in dem man jedermann Leserechte gibt, aber dies ist auch nicht gerade "ideal" - oft wird man das aus Gr├╝nden der Sicherheit nicht wollen.

Und es geht auch besser: Hier die Schritt-f├╝r Schritt-Anleitung:

1. Installieren Sie das Paket "facl". Ob das installiert ist kann man mit setfacl --help feststellen. Das Programm wird gefunden? Dann ist die Installation bereits erfolgt.

2. ├ťberpr├╝fen Sie, ob die Option "acl" in /etc/fstab f├╝r das Mounten der Partition gesetzt ist. Wenn nicht tragen Sie das nach. Das sieht zum Beispiel so aus:
/dev/disk/by-id/ata[...]-part5 / ext4 acl,user_xattr,noatime 1 1

3. Danach k├Ânnen Sie mittels
~# mount -o remount /

die Partition mit dem neuen Parameter laden. Nat├╝rlich kann man auch neu booten (aber dann h├Ątte man auch gleich ein rebootfreundliches Win.... installieren k├Ânnen :)

4. Setzen Sie jetzt einmalig das Leserecht f├╝r den Benutzer:
~# fsetacl -m BENUTZERNAME:r /var/log/messages

Erhalten Sie keine Fehlermeldung, so k├Ânnen Sie davon ausgehen, dass dies funktioniert hat. Sind Sie dennoch unsicher, so probieren Sie:
~# fgetacl /var/log/messages

Sieht die Ausgabe so aus:
# file: var/log/messages
# owner: root
# group: root
user::rw-
user:BENUTZERNAME:r--
group::r--
mask::r--
other::---

... dann ist alles bestens.

5. Das gen├╝gt aber noch nicht,

denn das Systemprogramm logrotate legt die Datei mit einer gewissen Regelm├Ą├čigkeit neu an - und Sie wollen den Vorgang doch nicht mit einer, von der Konfiguration Ihres Linux abh├Ąngigen H├Ąufigkeit wiederholen.

Logrotate kann Ihnen aber auch helfen.

Und ich lasse mir gerne von meinem Computer bei Problemen helfen, die ich ohne ihn nicht h├Ątte: Auf meinen System (OpenSuSE-Desktop) ├Âffne ich mit root-Rechten die Datei /etc/logrotate.d/syslog mit einem geeigneten Editor:

~# vi /etc/logrotate.d/syslog

und suche folgenden Abschnitt, erg├Ąnze den um die fett ausgegebene Zeile:
/var/log/warn /var/log/messages [...] {
compress
dateext
maxage 365
rotate 99
missingok
notifempty
size +4096k
create 640 root root
sharedscripts
postrotate
/etc/init.d/syslog reload > /dev/null
/usr/bin/setfacl -m BENUTZERNAME:r /var/log/messages
endscript
}

Fertig! Nat├╝rlich kann ich das f├╝r beliebige Logfiles wiederholen. Weitere Hilfe gibt es mit ~> info setfacl, ~> info getfacl (oder in meinem Aufsatz "Benutzerrechte: Access-Control-Lists (ACL) unter_Linux" - PDF) oder mit ~>info logrotate.

11.09.2011

Honeypot blockt Angreifer

Vor einigen Tagen habe ich einen Honeypot fertiggstellt, der Angreifer schon bei der Vorbereitung eines Angriffs auf meine Webserver feststellt und blockiert.

Hier das Ergebnis der letzten Nacht:

(Uhrzeit, Angriffsersuch, IP-Adresse)

04:42 /admin/banner_manager.php/login.php - 174.128.240.2
04:50 /admin/categories.php/login.php?cPath=&action=new_product_preview - 174.142.75.174
04:50 /admin/categories.php/login.php?cPath=&action=new_product_preview - 75.126.154.162
04:53 /admin/categories.php/login.php?cPath=&action=new_product_preview - 85.158.181.47
04:53 /admin/categories.php/login.php?cPath=&action=new_product_preview - 189.113.5.131
04:54 /admin/categories.php/login.php?cPath=&action=new_product_preview - 74.222.6.111
04:59 /admin/categories.php/login.php?cPath=&action=new_product_preview - 85.36.63.35
05:26 /admin/categories.php/login.php?cPath=&action=new_product_preview - 88.12.17.111
06:45 /admin/banner_manager.php/login.php - 89.249.68.71
07:34 /admin/file_manager.php/login.php - 62.173.138.142

Nette Versuche! Beim n├Ąchsten Test auf eine Angriffsm├Âglichkeit gab es f├╝r diese Besucher eine Umleitung zu einer Webseite des BKA ├╝ber die Bek├Ąmpfung von Internetkriminalit├Ąt. (Etwas) Humor habe ich n├Ąmlich auch noch.

18.01.2011

Joomla 1.6 und der Meta-Tag "generator"

Wem es aus gutem Grund nicht gef├Ąllt, dass Joomla 1.6 in jedes HTML-Dokument den Meta-Tag "generator" mit dem Wert "Joomla! 1.6 - Open Source Content Management" einbaut, dem kann geholfen werden:

In der Datei /libraries/joomla/document/document.php befindet sich in Zeile 79 der Eintrag:

var $_generator = 'Joomla! 1.6 - Open Source Content Management';

Den kann man nat├╝rlich ├Ąndern.

13.01.2011

Kein KDE-Sendfax / ksendfax mehr

Viele Benutzer aktueller Linuxversionen, die z.B. mit einer guten, alten ISDN-Karte von AVM Faxe via capisuitefax versenden wollen, werden das Programm KDE-Sendfax vermissen.

Ich mache das deshalb mit folgender, minimalistischer L├Âsung:
------------------------------------------
#!/bin/sh
echo 'Versenden von:';
echo $*;
echo '';
echo 'Abbrechen mit [STRG]+[c] ... oder';
echo -n 'Faxnummer? ';
read nummer;
capisuitefax -d "$nummer" "$*";
echo -n "Enter zum Beenden";
read ende;
------------------------------------------
Gespeichert unter ~/bin/MyFax und dann im Dateimanager mit Postscript- und PDF-Dateien verkn├╝pft (Ausf├╝hren in Terminal!) tut es sein Werk. Will ich mehrere Dokumente (z.B. einen Antrag mit Anlagen) auf einmal versenden, dann hilft mir das PDF-Toolkit (pdftk) mit dem ich mehrere PDF-Dateien (nicht nur) zusammenf├╝gen kann.

Bild: Einrichtung mit Konqueror 4.4.4