Posts Tagged ‘How-To’

Sonntag, 25. Mai 2014

lftp mit Zertifikatsproblemen

Wenn lftp auf Grund von Zertifikatsproblemen bockt …

Certificate verification: subjectAltName does not match »domain.tld«

… wechselt man folgendermassen auf unsichere FTP-Verbindungen:

$ lftp -e 'set ftp:ssl-allow off; cd public_html; put index.php; bye' www.domain.tld

Via: Lftp Fatal Error: Certificate Verification: Not Trusted

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 25. Mai 2014

curlftpfs unter Mac OS X

Ergänzungen meiner IT-Installation machten es kürzlich nötig, dass ich neu auch unter Mac OS X curlftpfs einsetze, um per FTP von bestimmten Web-Sites Sicherheitskopien anzufertigen (Stichwort: Vagrant und puPHPet, dank an Christian für die „Erleuchtung“!)

Entweder hat sich curlftpfs in der Zwischenzeit weiterentwickelt, oder unter Mac OS X läuft der „Karren“ etwas anders. Auf jeden Fall habe ich bei der Adaptierung meiner Linux-Scripte unter Mac OS X folgendes gelernt:

MacPorts

curlftpfs installiert man sich folgendermassen:

# port install curlftpfs

Wenn man curlftpfs dann zum ersten Mal ausführt, warnt einem Mac OS X (hier: 10.9 Mavericks), dass man eine Kernelextension aktiviert, welche von einem unbekannte Entwickler kompiliert wurde. Henusode … (NSA lässt grüssen). Die Warnung ist seither nie mehr aufgetaucht; ich hoffe, dass dies auch nach einem Reboot so bleibt.

Geduldiges mounten

In Tests hat sich herausgestellt, das das Mounten von FTP-Volumen längert dauert als unter Linux. Meinem Script habe ich deshalb folgendermassen Geduld beigebracht:

...
MAXIMUMITERATIONS=5000
...
TIME=$(date +%H:%M:%S)
echo -n "Checking whether mountpoint is populated ($TIME): "

COUNTER=0
while [ ! -d "$SOURCE" ]
do
	let COUNTER=COUNTER+1
	echo -n "."
	
	if [ "$COUNTER" -eq "$MAXIMUMITERATIONS" ]
	then
		echo "Mountpoint still not available after $COUNTER iterations. Aborting."
		exit 1
	fi
done
...

In der Variable $SOURCE ist der Pfad zu einem auf dem FTP-Server vorhandenen Unterordner gespeichert. Sobald bash meldet, dass dieser nun verfügbar ist, kann ich mit den Kopieraktionen beginnen.

Zugriff verweigert

Bei den Tests traf ich auch auf ein Berechtigungsproblem: Manchmal wurde rsync beim Traversieren von FTP-Ordnerstrukturen der Zugriff verweigert. Nach einigem Pröbeln realisierte ich, dass einige Ordner auf den FTP-Servern das Execution-Bit nur für den Owner gesetzt hatten, nicht aber für die Gruppe oder gar Dritte. In einem Fall passte ich die Berechtigungen über den FTP-Client meiner Wahl an, in einem anderen Fall war ich mir todsicher, dass ich allen Serverbenutzern definitiv keine Berechtigung zum Lesen aller meiner Dateien geben wollte. Was nun?

Folgende Option verhindert, dass curlftpfs respektive FUSE bei FTP-Verbindungen Berechtigungschecks durchführen (dies ist hier Aufgabe des FTP-Servers — gibt dieser Zugriff auf eine Datei, hat definitiv schon eine zuverlässige Authentifizierung und Authorisierung stattgefunden):

$ curlftpfs -o defer_permissions ...

Zeichensalat

In meinem älteren Blog-Artikel zu curlftpfs habe ich gezeigt, wie der Zeichensatzproblematik unter Linux begegnen kann. Unter Mac OS X klappt dies so nicht. Stattdessen sind folgende Werte an curlftpfs zu übergeben:

$ curlftpfs -o modules=iconv,from_code=latin1

Quelle: International characters (e.g. Swedish åäö) in remote file system folder names makes Finder hang #71

Den Ausgabezeichensatz finden FUSE respektive curlftpfs offenbar selber heraus.

Dem Parameter from_code ist natürlich der Zeichensatz des FTP-Servers mitzugeben. Es sind alle iconv bekannten Zeichensätze konfigurierbar:

$ iconv -l

In Verbindung mit rsync führt dies aber zum unerwünschten Verhalten, dass Verzeichnisse und Dateien mit Umlauten im Namen bei jeder Synchronisation erneut heruntergeladen werden (ich bin unschuldig, das war ein anderer Benutzer des Servers!).

Tags: , , , , ,
Labels: Apple, Linux

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 20. Mai 2014

Die Tagesanzeiger-Paywall (eher: das Lehmmäuerchen) umgehen

In den letzten Monaten haben sich die Paywalls der traditionellen Zeitungen im Internet gehäuft: Die New York Times macht, die NZZ auch – und seit kurzem auch der Tagesanzeiger. Aus meiner Sicht war es auch wirklich an der Zeit, dass die Medienhäuser den von ihnen generierten Mehrwert entsprechend schützen und von den Konsumenten vergüten lassen. So wie man das seit Jahrhunderten in der Printpresse auch macht (wobei man anmerken muss, dass bei der Printpresse die Mehrheit der Einnahmen aus der Printwerbung stammen).

Doch wenn man eine Internet-Paywall aufbaut, welche angeblich drei Millionen Schweizer Franken gekostet haben soll, sollte sie dann aber auch der Chinesischen Mauer entsprechen, und nicht einem Lehmmäuerchen oder einem morschen Lattenzaun.

Nachdem man nämlich die maximale Zahl an kostenlosen Tagi-Artikeln gelesen hat, kriegt man die Artikelseiten weiterhin mit dem kompletten Inhalt ausgeliefert. Nach kurzer (oder längerer Ladezeit) wird mit CSS ein halbtransparenter Overlay eingeblendet, welcher den Internetbenutzer auffordert, ein Abonnement abzuschliessen.

Diese „CSS-Wall“ umgeht man unter Google Chrome folgendermassen:

  1. Stylebot herunterladen und installieren
  2. Rechtsklick auf CSS-Icon
  3. Optionen
  4. Stylebot Options
  5. Styles
  6. Edit Global Stylesheet

Dort gibt man ein:

div#overlay_wrap {
	display: none;
}

Abspeichern, Browser neu starten – et voilà!

Sollte diese Massnahme aus irgendeinem Grund nicht klappen, kann man Stylebot immer noch mittels Druck auf Alt+M aktivieren, auf die dunkle Overlay-Fläche klicken (#overlay_wrap) und im Abschnitt „Layout & Visibility“ den Wert „Visibilty“ auf „Hide“ setzen.

Tags: , , , , , ,
Labels: Web

18 Kommentare | neuen Kommentar verfassen

Montag, 12. Mai 2014

„Delete VPN“-Button fehlt unter iOS 7

Da ich heute erfahren habe, dass ich mit iOS eine PPTP-VPN-Verbindung zu meinen DD-WRT-Router herstellen und mich und meine Daten so in öffentliche Funknetzwerken schützen kann, habe ich mich hinter die Konfiguration meiner drei iOS-Geräte gemacht.

Auf dem kürzlich bei einer Mitarbeiteraktion erstandenen iPad 4 64GB WiFi + 3G war unter Settings > General > VPN bereits ein VPN-Profil meiner Alma Mater erfasst (Ursache: Ich habe das Backup meines iPad 1 auf das neue iPad geladen, welches ich während meiner Studienzeit verwendet habe). Dummerweise fehlte dem Cisco IPSec-Profil der Delete VPN-Knopf zuunterst in den Konfigurationseinstellungen (via Tastendruck auf das runde i-Symbol). Was zum Teufel … Wie kriege ich dieses längst nicht mehr genutzte VPN-Profil von meinem iPad weg?

Einige Minuten Internetrecherchen später hatte ich die Lösung meines Problems gefunden: „Can’t Delete VPN Profile“ Fix

Kurz zusammengefasst geht es darum, Benutzernamen, Serveradresse, Secret, Passwort, sonstige Formularfelder sowie den VPN-Typ mit Phantasiewerten anzupassen und das Profil zu speichern. Beim nächsten Aufruf der Konfigurationseinstellungen strahlte mir der Delete VPN-Knopf dann wie gewünscht entgegen — und das Profil lag innert Sekundenbruchteilen im digitalen Nirvana.

Tags: , , , , , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Freitag, 8. November 2013

Automatische Nummerierungen in Word

Als IT-Auditor sieht man sich am Ende eines jeden Projektes mit der Abfassung von Feststellungen und Empfehlungen konfrontiert. Damit man diese Erkenntnisse sauber referenzieren kann, empfiehlt es sich, diese zu Nummerieren.

Eine Funktion, welche ich in Word noch viel zu wenig verwende, sind Felder, welche sich automatisch fortlaufend Nummerieren.

Im vorliegenden Fall verwendete ich solche Felder, um eine Liste von Fragen zu nummerieren, wobei vor dem Punkt jeweils die Rubrik steht und nach dem Punkt die Nummer der Frage. Da ich zu faul war, die Nummerierung der Fragen auch zu automatisieren, verwendete ich das Feld einzig für die Rubriken.

In der ersten Zeile der Tabelle erstellte ich also ein Feld mit folgendem Inhalt:

{SEQ RubrikID}

. Auf den nächsten Zeilen folgten die Fragen, welche diese Rubrik betrafen. Ich kopierte das Feld also und fügte es in die zweite Zeile ein und ergänzte die Zelle mit .1. Damit die Rubrik-ID nun aber nicht hochzählt, verwendet ich hierzu einen Modifier \C, welcher den Zähler mit dem aktuellen Wert ausgibt:

{SEQ RubrikID \C}

Bei Beginn der nächsten Rubrik kopierte ich das Feld aus der ersten Zeile, welches dann auch prompt auf 2 hochzählte.

Tipp: Die Felder aktualisieren sich nicht automatisch. Am Besten aktiviert man den gesamten Dokumentinhalt mit Ctrl-A und betätigt dann F9.

Via: Field codes: Seq (Sequence) field

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Freitag, 25. Oktober 2013

Graustufenbilder mit ImageMagick in Schwarz-Weiss-Bilder umwandeln

Kürzlich hat Stephanie ihre Cumulus-Karte verlegt. Damit sie weiterhin bei jedem Einkauf eifrig Punkte sammeln kann, habe ich ihr meinen Barcode als Bild eingescannt und wollte diesen ausdrucken, um ihn auf die Rückseite der Supercard (Frevel!) aufzukleben.

Damit der Barcode-Leser der Kasse den Scan auch möglichst einwandfrei lesen kann, wollte ich den Scan aber von Farbe resp. Graustufen in ein monochromes Bild umwandeln. Mittels ImageMagicks convert geht das ganz simpel:

$ convert "Cumulus Barcode.png" -colorspace gray -auto-level -threshold 50% "Cumulus Barcode bw.png"

Indem man mit den Prozentwerten bei -threshold spielt, kann man den Schwellenwert hinunter oder heraufsetzen, basierend auf dem ein Pixel als schwarz oder weiss markiert wird. Ein Wert von 75% resultiert in mehr schwarzen Pixeln, ein Wert von 25% in mehr weissen Pixeln.

Tags: , , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 23. Oktober 2013

Mehrere Dateien in einem Rutsch mit PowerShell umbenennen

Dir | Rename-Item –NewName { $_.name –replace ".jpg",".jpeg" }

Tags: , ,
Labels: Programmierung

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 15. August 2013

libapache2-svn unter Apache 2.4 zum Laufen bringen

Da führt man zu Monatsbeginn auf dem heimischen Linux-Server vor lauter Blödheit ein

# apt-get dist-upgrade

durch und sieht sich plötzlich mit Apache 2.4 konfrontiert.

Nachdem man die Zugriffsprobleme mit IP- und Host-basierten Regeln in allen .htaccess-Dateien behoben hat, realisiert man erst, dass der Web-Server nicht starten will, weil das DAV-Modul „svn“ nicht mehr gefunden wird:

Unknown DAV provider: svn

Was zum Geier?

Die Ursache des Problems ist rasch gefunden: Das Paket libapache2-svn hat eine Abhängigkeit vom Paket apache2.2-common, doch mit Apache 2.4 hat letzteres Paket seine Daseinsberechtigung verloren und ist folglich nicht mehr auf dem System vorhanden. Zu allem Unglück hinzu unterstützt Subversion in der Debian-Version 1.6.17dfsg-4+deb7u3 Apache 2.4 gar nicht.

Nach längerem Herumsuchen im Internet komme ich zum Schluss, dass wirklich nichts an der auf Stackoverflow herumgebotenen Lösung vorbeiführt: Ich muss Subversion doch tatsächlich in der derzeit aktuellen Version 1.7.9 (Debian: 1.7.9-1+nmu3) aus der Quelle kompilieren und danach auf dem System installieren. Diese Version kennt und unterstützt Apache 2.4.

Nachfolgend eine rudimentäre Anleitung, welche sich an den Stackoverflow-Artikel anlehnt.

Anleitung

Zuerst benötigen wir folgende Pakete, um Subversion gegen das aktuell installierte Apache 2.4 kompilieren zu können:

# apt-get install apache2-dev
# apt-get build-dep subversion

Bei mir war anschliessend noch manuell die Installation von folgendem Paket nötig:

# apt-get install libserf1 libserf-dev

Jetzt geht es an das Herunterladen des Subversion-Quellcodes:

$ cd /tmp
$ apt-get source --compile subversion
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
... (Ctrl+C)

Richtig gelesen: Während das Teil vor sich hinkompilieren will, bricht man die Durchführung mittels Ctrl+C ab. Denn zuerst sind noch einige kleinere Anpassungen an den Kompilierungseinstellungen nötig, damit man am Ende nicht nur mit Subversion, sondern auch mit einem Paket libapache2-svn dasteht.

In /tmp/subversion-1.7.9/debian/rules ändert man dazu folgenden Wert:

ENABLE_APACHE        := yes

Und in /tmp/subversion-1.7.9/debian/control fügt man zuunterst folgenden Text ein:

...

Package: libapache2-svn
Section: httpd
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Suggests: db5.1-util
Description: Subversion server modules for Apache
 This package provides the mod_dav_svn and mod_authz_svn modules for
 the Apache 2.2 web server.  These modules provide Subversion's WebDAV
 server backend, to serve repositories over the http and https
 protocols.  See the 'subversion' package for more information.

Schlussendlich startet man die Kompiliererei erneut, verzichtet dieses Mal aber mit dem Attribut DEB_BUILD_CONFIG, dass nach der Kompilierung stundenlang Tests durchgeführt werden, diese scheitern und man nach dem Warten auf Godot ohne .deb-Pakete dasteht (via DEB_BUILD_OPTIONS=nocheck):

$ cd /tmp/subversion-1.7.9/
$ DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -b -uc

Anschliessend installiert man die folgenden drei Pakete:

# dpkg -i /tmp/libsvn1_1.7.9-1+nmu3_i386.deb
# dpkg -i /tmp/libapache2-svn_1.7.9-1+nmu3_i386.deb
# dpkg -i /tmp/subversion_1.7.9-1+nmu3_i386.deb

Schlussendlich muss man in Apache unter /etc/apache2/mods-enabled noch die folgenden Module aus /etc/apache2/mods-available symlinken, wenn sie nicht schon dort sind:

  • authz_svn.load
  • dav_svn.conf
  • dav_svn.load

Dann noch das obligate …

# /etc/init.d/apache2 restart

… und gut is!

Tags: , , , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 9. Juni 2013

RAM-Speicherauslastung unter Mac OS X über SNMP auslesen

Ich habe heute Sonntag ein wenig Zeit in dieses Projekt investiert und stelle die Scripts, Konfigurationsanpassungen und Installationsanleitung über GitHub zur Verfügung:

macosx-memory-snmp

Tags: , , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 9. Juni 2013

SNMP unter Mac OS X 10.8 Mountain Lion aktivieren

Mac OS X 10.8 (Mountain Lion) bringt Out-of-the-box alles mit, um einen SNMP-Server bereitzustellen. In Verbindung mit cacti zeichne ich so in Echtzeit Systeminformationen meines Mac minis, MacBook Airs und Stephanies Mac mini auf.

Wer Rechner ausschliesslich in seinem heimischen LAN betreibt, kann nachfolgende Minimal-Konfiguration einrichten, damit cacti auf einem Drittserver per SNMP v1 und ohne Passwort darauf zurückgreifen kann:

/etc/snmp/snmpd.conf (Desktop-Rechner)

sysContact  Vorname Nachname 
sysLocation Strasse Strassennummer, PLZ Ort

rocommunity public

includeAllDisks 10%
load    30 10 5

Auf einem portablen Gerät würde ich SNMP abriegeln und den Zugriff nur mittels Benutzernamen und Passwort zugänglich machen. Verwendet man obige Lösung, kann im Flughafen-WiFi oder im Uni-WiFi jedes Script-Kiddie mit nmap-Portscans auf den SNMP-Server aufmerksam werden und mehr oder weniger sensitive Informationen abrufen.

Hierzu eignet sich folgende Konfiguration:

/etc/snmp/snmpd.conf (portabler Rechner)

createUser <username>     MD5 "<password>" DES "<secret>"
authuser   read -s usm  <username> priv  .1

sysContact  Vorname Nachname 
sysLocation Strasse Strassennummer, PLZ Ort

includeAllDisks 10%
load    30 10 5

Sowohl password als auch secret können frei gewählt werden (alphanumerische Zeichenfolge).

Quelle: Setup SNMP V3 USM with encryption.

Daemon (neu) starten

Nach der Konfigurationsanpassung heisst es, den SNMP-Server (neu) zu starten. Dies habe ich mit folgendem Script automatisiert:

#!/bin/sh

echo "Stopping SNMP daemon ..."
sudo launchctl unload /System/Library/LaunchDaemons/org.net-snmp.snmpd.plist

echo "Starting SNMP daemon ..."
sudo launchctl load -w /System/Library/LaunchDaemons/org.net-snmp.snmpd.plist

exit 0

Daemon bei jedem Neustart von Mac OS X laden

Hierzu habe ich die von Apple mitgelieferte plist-Datei /System/Library/LaunchDaemons/org.net-snmp.snmpd.plist angepasst:

	<key>Disabled</key>
	<false/>

Tags: , , , , , , ,
Labels: Linux, Uncategorized

Keine Kommentare | neuen Kommentar verfassen