Archive for the “Maschienenraum” Category

Hach, diese Software ist einfach grossartig. Wenn man weiss wo man zu schrauben hat kann man alles machen.

Heute: selectives ipv6

Google mag keine ipv6. Ich hab alles so aufgesetzt wie ihre “Regeln” das vorschreiben. Dennoch will der gmail server mails von meiner ipv6 addresse (nur für mail-versand verwendet! sonst für nix!) nicht akzeptieren:

h.spalinger@gmail.com;: host
gmail-smtp-in.l.google.com[2a00:1450:4001:c02::1a] said: 550-5.7.1
[2a01:4f8:131:10e1:ff::77       1] Our system has detected an unusual
550-5.7.1 rate of unsolicited mail originating from your IP address. To
protect 550-5.7.1 our users from spam, mail sent from your IP address has
been blocked. 550-5.7.1 Please visit
http://www.google.com/mail/help/bulk_mail.html to review 550 5.7.1 our Bulk
Email Senders Guidelines. l4si3606152eew.101 - gsmtp (in reply to end of
DATA command)

Ein bischen tcpdump für ipv6 Zeigt definitiv nur sehr wenig traffic (primär andere mailserver; http über verwendet kein Schwein…darum gibts auch so viel IPv6 traffik…ist alles spam-> Siehe auch die Diskussion wegen der Menge des abgehöhrten traffics via NSA und den Prozentangaben.)

Und JA, mein DNS ist richtig; Mein SPF ist richtig; alles ist gut. über v4 klappts auch! da hat google nix dagegen.
Und der google-support schickt einen erstmal auf die Seite die man schon in der Fehlermedlung sieht. “Bitte mal schauen ob OK”. Ja ist es. Seitdem keine Antwort! Da tut man alles um seinen Kunden mail zu ermöglichen und wird von dem “Internet-Vorzeige-Konzern” einfach ignoriert. Aber mit dem kleinen spahan kann mans ja machen.

Anyway; ich wollte nur wegen den google-idioten natürlich jetzt nicht ganz auf ipv6 verzichten und bin dann auf der postfix mailinglist auf folgendes gestossen:

/etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport

/etc/postfix/transport:
gmail.com smtp-ipv4:

/etc/postfix/master.cf:
smtp-ipv4 unix - - - - - smtp
-o inet_protocols=ipv4
-o inet_interfaces=88.198.81.77

# postmap /etc/postfix/transport
# postfix reload

definitiv cool. (Das interface gebe ich an, da ich in master.conf auch die interfaces angebe, und der postifx/smtp sonst mit

Aug 31 21:16:43 spahan postfix/smtp[30810]: fatal: config variable inet_interfaces: host not found: 2a01:4f8:131:10e1:00ff::77

abbricht. In der mailinglist musste diese Option nicht verwendet werden. (ist nur ein problem mit dem smtp; nicht mit dem smtpd. Empfangen geht, senden nicht!)

Nun ist das ganze noch nicht perfekt, da gmail-gehostete domains noch nicht funktionieren.
Eine Lösung könnte ein smtp-reply-filter sein, der per pcre-map den 5.x.y Fehler erkennt und dann auf eine andere IP ausweicht, aber daran Feile ich noch. Bis ich da was habe blackliste ich halt domains. Wenn also jemand obige Fehlermeldung von meinem Mailserver kriegt: Einfach bescheid geben.

Alles in allem finde ich die Möglichkeit in postfix fast alles mit maps zu machen genial. Hash-maps, DB-maps, regexp-maps; Die Möglichkeiten sind Gigantisch!

Flattr this!

Comments Comments Off on postfix

Vor ein paar Jahren hab ich mal ipv6 in meinem Heim-Netz ausgerollt. Mit Hilfe von 6to4, openwrt und ein paar Skripten hat das auch ganz gut geklappt. Aber immer mal wieder musste ich dann irgendwas dran herumbasteln, bis ich es dann irgendwann einfach gelassen habe.

Fast Forward to Heute. ipv6 mal wieder in allem Munde, mein Server bei Hetzner macht es schon lange, aber zu Hause gabs das nicht. Also mal gucken. Login auf dem Router, auf “ipv6” klicken und irgendeine Autodiscovery anschalten…. Schwuups mein Laptop hat ipv6. Dat ging ja einfach. Leider immer noch nur mit 6to4, wann wohl die Swisscom im 21.Jahrhundert ankommt? So, mal gucken ob ich mein dyn-dns Script auch richtig hinkriege. Dann klappt das auch mit dem p2p :-p

 

Flattr this!

Comments Comments Off on ipv6 mal schnell eingerichtet

Auf meinem neuen rootserver wollte ich die Root-Partition LUKS-verschlüsseln.
Debian unterstützt dieses vorgehen fast ohne manuelle eingriffe, wobei ein paar Details zu beachten sind.

In meinem Fall sind die beiden 3TB Festplatten in 2 Partitionen unterteilt, einmal eine kleine (1GB) /boot partition und eine LUKS-verschlüsselte LVM für alles andere.
Das LVM erlaubt es mir, Partitionen einfach anzupassen wenn es irgendwo knapp wird (die betrifft vor allem die Home-partitionen).
Das setup habe ich vor dem installieren aus dem rescue-system meines ISPs eingerichtet, die Anleitung im Debian-Handbuch ist dabei hilfreich (suche nach debootstrap).

Das Problem mit LUKS ist, dass das Passwort/Keyfile im initramfs vorhanden sein muss, sonst kann die HD nicht entschlüsselt werden. Normalerweise fragt das initramfs beim booten nach dem Passwort, was aber bei einem headless rootserver im Rechenzentrum nicht geht.
Der Trick besteht darin, einen ssh-server ins initramfs einzubauen, und den key dann über ein keyscript an cryptsetup weiterzureichen. Der normale openssh ist dafür etwas zu gross, daher verwende ich den dropbear sshd. Dieser ist Bestandteil vieler busybox-installationen auf (zum Beispiel) Routern und das von debian verwendete update-initramfs-script benützt es automatisch wenn eine verschlüsselte root-partition gefunden wird (man kann es aber auch in /usr/share/initramfs-tools/conf-hooks/dropbear erzwingen).

Dann muss man noch die /etc/crypttab anpassen.

md1_crypt /dev/md1 none luks,tries=0,keyscript=/lib/cryptsetup/keyscript

Den Key auf “none” setzten; tries=0 erzwingt ewiges warten im initramfs bis das keyscript den korrekten Key liefert.
Das Keyscript prüft ob der key existiert, und falls ja gibt es ihn zurück

if [ -f /lib/cryptsetup/passfifo ]; then
    cat /lib/cryptsetup/passfifo
fi

Das Keyscript wird am einfachsten auf dem host in /lib/cryptsetup/ abgelegt, damit die initramfs-tools es automatisch finden.

Um einfach einzuloggen (ohne passwort) ist es ratsam, den eigenen public key in /etc/initramfs-tools/root/.ssh/authorized-keys anzugeben. Falls die Datei nicht existiert erzeugt initramfs ein eigenes Key-paar, und hinterlegt es im initramfs (schlechte Idee).

Damit ist man fast fertig. Erhält der Server seine IP per DHCP, kann man das interface einfach in /etc/initramfs-tools/initramfs.conf als DEVICE angeben. Will man eine statische öffentliche IP vergeben, so muss man die parameter als kernel-boot-parameter übergeben. In meinem Fall (Grub2, hetzner setup) füge ich also

GRUB_CMDLINE_LINUX="ip=88.198.59.12::88.198.59.1:255.255.255.224:::none"

zu /etc/default/grub hinzu. Die parameter kann man in der Linux-Dokumentation unter /usr/src/linux/Documentation/filesystems/nfs/nfsroot nachlesen (das ganze ist dafür gedacht nfs-Volumes als root einzubinden, aber es funktioniert auch für andere Dinge). Die leeren Parameter werden für nfs-boot gebraucht.
Falls dass nicht klappt, kann man auch ein simples script in /etc/initramfs-tools/scripts/init-premount/mount-boot hinterlegen:

PREREQ="udev devpts"
prereqs() {
    echo "$PREREQ"
}
case "$1" in
    prereqs)
        prereqs
        exit 0
    ;;
esac
. /scripts/functions
ifconfig eth0 inet pointopoint 88.198.59.1 88.198.59.12/32

Damit ist alles bereit und der Server hält beim booten an, bis in der Datei /lib/cryptsetup/passfifo der Korrekte Key hinterlegt wird.
Der Key muss nach dem booten nicht gelöscht werden da initramfs eh nur im RAM liegt und bald überschrieben sein sollte.

Um sich einzuloggen verwendet man dann etwas in der Art

# ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
	-i "~/id_rsa.initramfs" root@initramfshost.example.com \
	"echo -ne \"secret\" >/lib/cryptsetup/passfifo"

Weitere Details findet man unter /usr/share/doc/cryptsetup/README.remote auf der Festplatte von Debian.
Viel Spass beim basteln und immer schön lange Passwörter verwenden.

DISCLAIMER: Das obige setup ist nicht 100% sicher. ein lokaler Angreifer kann immer noch böse Dinge tun. Ich habe daher (als zusätzliche Hürde) bei mir die /boot partition im normalbetrieb nur read-only gemounted. Kann ein Angreifer aber unbemerkt darauf rumschreiben, wird Sicherheit schwierig. Man könnte im ssh noch den hash des initramfs-images prüfen, aber auch das ist nicht sicher, da der Angreifer ja das hash-tool ersetzten könnte. Aber alles in allem muss der Angreifer mit diesen Massnahmen sehr viel wissen mitbringen, und auch entsprechend vorbereitet sein. Ein Fehler, und der Angriff wird erkannt.

Flattr this!

Comments 1 Comment »

Mein guter alter root-server hat schon ein paar jährchen auf dem Buckel. Und so langsam wird er langsam. Daher ist die NAchfolgergeneration angetreten, und die kann sich sehen lassen:

# free
             total       used       free     shared    buffers     cached
Mem:      16383360     118592   16264768          0       3908      18624
-/+ buffers/cache:      96060   16287300
Swap:     33553328          0   33553328

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md2             1016G  706M  965G   1% /
tmpfs                 7.9G     0  7.9G   0% /lib/init/rw
udev                  7.9G  164K  7.9G   1% /dev
tmpfs                 7.9G     0  7.9G   0% /dev/shm
/dev/md1              496M   31M  440M   7% /boot
/dev/md3              1.7T  196M  1.6T   1% /home

processor    : 7
vendor_id    : GenuineIntel
cpu family    : 6
model        : 42
model name    : Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
stepping    : 7
cpu MHz        : 1600.000
cache size    : 8192 KB
physical id    : 0
siblings    : 8
core id        : 3
cpu cores    : 4
apicid        : 7
initial apicid    : 7
fpu        : yes
fpu_exception    : yes
cpuid level    : 13
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts 
acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good 
xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr 
pdcm sse4_1 sse4_2 x2apic popcnt aes xsave avx lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid
bogomips    : 6822.88
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

Also nicht wundern wenn es mal etwas holprig wird, ich bin am Zügeln 😀

Flattr this!

Comments Comments Off on Ruhestand

häm.ch bietet ab sofort einen dynamischen DNS Dienst an. Wobei anbieten ja etwas zu viel gesagt ist, da ich alles noch sehr manuell mache. Wer eine domain der Art xyz.häm.ch will meldet sich bei mir . Details dazu findet man im devwiki.

Dazu gehöhrt auch das IP-script welches auch in anderen Fällen brauchbar sein kann. Für clients die kein punycode können ist die domain etwas länger http:// xn--hm-via.ch/ip.php

Flattr this!

Comments Comments Off on dyndns auf häm.ch

Auch meine Wenigkeit trägt ein bisschen zur Verbreitung von ipv6 zu:

Jul 28 21:02:45 spahan postfix/smtpd[2498]: connect from liszt.debian.org[2001:41b8:202:deb:213:21ff:fe20:1426]
Jul 28 21:02:45 spahan postfix/smtpd[2498]: 788D1716038: client=liszt.debian.org[2001:41b8:202:deb:213:21ff:fe20:1426]
Jul 28 21:02:45 spahan postfix/cleanup[2501]: 788D1716038: message-id=<0LP2006KE4RM5660@mta3.srv.hcvlny.cv.net>

Flattr this!

Comments Comments Off on Me haz ipv6 Traffic!

Der Server war Gestern etwas holprig, der Grund ist einfach:

spahan:/www# lsb_release -a
LSB Version:    core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch
Distributor ID:    Debian
Description:    Debian GNU/Linux testing (squeeze)
Release:    testing
Codename:    squeeze

Lenny ist ja schön und gut, aber ich benötigte ein paar modernere Libs und Tools für meine Webarbeiten. Ich habe bisher @home nur gute Erfahrung mit squeeze gemacht, daher wage ich es mal auch den Server auf squeeze upzudaten. Das update lief soweit Problemlos. Die beiden Probleme mit Grub2 und postfix sind mir anzulasten, ich sollte mal öfters alte Konfigs aufräumen… (note @me: Den Server IMMER in einem bootbaren Zustand verlassen! Grr..)

Zuhause hab ich lenny schon auf einem Desktop-G5, und einem Server-MacMini-G4 getestet und keine Probleme festgestellt. Dort läuft aber kein TOR-Exit-Node, daher ist dies auch gleich mal ein Belastungstest.

Flattr this!

Comments Comments Off on update

Wenn ich eine dynamische Webseite aufbaue, verwende ich meist php oder python. Dies erlaubt es Inhalte in Datenbanken zu speichern, und frei formatiert wieder auszugeben. Das ist einfach und stabil.

Aber es geht noch einfacher. Als Datenbank kann man auch das Filesystem verwenden. mod_autoindex erzeugt dann automatisiert eine index Datei. Dabei kann man die exakte Darstellung über die .htaccess Datei steuern. Ich habe diese Tehnik verwendet um das Digital Mayhem Archiv einfach und schnell in einem anschaubaren Format zu veröffentlichen.

Die primäre Idee ist es, per HeaderName und ReadmeName einen Kopftext und einen Fusstext einzubinden. Beim Digital Mayhem Archiv binde ich im Kopf jeweils ein Bild ein (Flyer zum jeweiligen Event). Die Fusszeile ist Konstant und verlinkt auf einen zurück-Button sowie auf den Radio-Stream. Dank IndexStyleSheet wird auch noch die Darstellung der Liste angepasst. Die eingebundenen Dateien habe ich mit dem alten Unix-Trick des vorangestellten “.” gelöst, Apache ignoriert diese Dateien ebenfalls bei der Listengenerierung, wobei die Datei selbst aufrufbar bleibt (was zum Einbinden von Bildern/css/etc wichtig ist). Weitere Dateien welche nicht gelistet werden sollen können mit der IndexIgnore Direktive bestimmt werden.

Mit AddDescription kann ich nun jeder Datei/jedem Ordner einen zusätzlichen Text zuweisen, was jedoch FancyIndexing benötigt. SuppressColumnSorting, SuppressLastModified und SuppressRules verhindern, dass unnötige Felder Dargestellt werden.

Das tolle an der ganzen Sache ist aber, dass ich die Einstellungen global im Root-Ordner einbinden kann, da sich die .htaccess-Einstellungen vererben. Die Einbindung der Bilder kann also nur einmal im root-directory spezifiziert werden, wirkt dann aber überall.

mod_autoindex ist eine einfache und schnelle Möglichkeit Hierarchische Datei-Ordnungen schnell und effektiv zu veröffentlichen. Da es mit dem Apache per default installiert wird, ist es eigentlich immer Vorhanden, und man braucht kein php/python/whatever um es zu benützen.

Flattr this!

Comments Comments Off on einfache Webinterfaces mit apache & mod_autoindex

Eingetlich sollte alles ganz einfach sein. Server wird ausgebaut, Server wird an den neuen Standort gebracht, Server wird eingebaut, Fertig.

Leider scheint das bei meinem Server nicht so ganz geklappt zu haben. Der Server hatte schon zuvor ein bisschen Schluckauf, aber nachdem der Server umgezogen war, wollte er erstmal gar nicht mehr Hochfahren. Nicht einemal der autimatische Reset über das Hetzner-Web-Interface ging mehr. Der Support hat mich dann nach einigen Mails an eine Remote-Konsole geschaltet, welche aber irgendwie trotzdem nicht mein Server war. Das deutet auf ein grösseres Problem hin, der Support hat sich meine Maschine angeguckt.

Diagnose: Mainboard am Arsch. Also HDs raus, in einen neuen Server eingebaut, soweit so gut. Immerhin konnte ich nun ins Rescue-system booten, und habe gleich mal ein aktuelles Backup gezogen. Dank dem Hetzner-FTP war es kein grosses Problem kurz mal 37 GB an Daten extern zu speichern.

Neuer Server, neues Glück; daher auch ein neues System. Nach der Installation startet der Server nicht mehr, also wieder eine Mail an den Hetzner Support; Diagnose: sda Tot.

Ok, neue sda; System neu installiert, Daten vom backup eingespielt, reboot… Hurra! es funktioniert. Zumindest für etwa eine Woche. Thunderbird meldet mir “interne Server-Fehler” beim check des updates. Also per ssh auf den Server, log files angucken…OMFG! Dem ist die sdb mit den Daten unter dem Arsch weggestorben. Er konnte nicht mal mehr auf die HD zugreifen ohne gleich einen Fehler auszuspucken. Also nochmal den Hetzner support bemüht, die tauschten dann sdb und das SATA-Kabel aus.

Seit diesem Tausch scheint nun alles wieder korrekt zu funktionieren. Aber im Rückblick erscheint das ganze Surreal und auch etwas lustig. Hoffen wir mal, dass dies kein böses Omen für das neue Rechenzentrum war. So, und jetzt werd ich mal versuchen das IPv6 zum laufen zu kriegen (und ja, auch hier gabs noch ein tehnische Problem, das aber dank bisher nicht eingesetztem IPv6 von niemandem bemerkt wurde).

Flattr this!

Comments Comments Off on Serverumzug vollzogen, Server tot.

Hetzner hat mir mitgeteilt, dass sie meinen Server nächsten Monat zügeln werden. Daher wird der Server nächsten Monat mal einen Tag offline sein.

Das grösste Problem damit ist der Wegfall des DNS-Servers. Ist kein NS erreichbar, denken viele Mail-Server, dass die Domain nicht existiert, und verwerfen die Mail. Antwortet der NS aber der Mailserver nicht, wird die Mail im Queue für spätere Zustellung behalten.

Das Problem (auch mit anderen PRotokollen) wurde beim design von DNS bedacht. Die RFC diesbezüglich ist eindeutig, Domain-Besitzer MÜSSEN mindestens 2 Authoritative DN-Server bereithalten. Diese sollten in verschiedenen Netzen (AS) beheimatet sein. Ein korolar daraus wäre, dass man NS NICHT auf der Kiste hostet auf der die zu erreichenden Services laufen.

Natürlich gelten diese Regeln immer nur für alle anderen, aber nicht für den Super-Admin Hanspeter. Und jetzt sitze ich in der Tinte. Also woher einen zweiten NS? Im Prinzip brauche ich einfach einen temporären Server, der die Notwendigen Dienste wärend des Umzugs aufrecht hält (DNS, eventuell ein Mail-Proxy?). Zudem kann man diese Gelegenheit auch nützen den betagten Lenny rauszuschmeissen un durch den brandneuen Squeeze zu ersetzen. Squeeze mag noch nicht offiziell Stable sein, aber mein lokaler Squeeze-Server hier macht keine Probleme.

Also woher einen billigen, temporären Zweitserver, den man bei Bedarf hochfährt, und der am besten nichts kosten soll. Amazon to the rescue! in Form von EC2. NAch einer etwas Umständlichen Registrierungs-Prozedur (hey, mein erster Anruf aus den USA…war eine Maschiene), ist die Sache einfach. Einloggen, 10 Minuten nach der BedienerKonsole suchen, Maschienenspezifikationen angeben, und starten. Und schon läuft ein frisch installiertes Fedora irgendwo in den VSA. Kostet mich 0.85$ pro Stunde. Wenn der Server in den nächsten 2 Tagen spuckt, liegt das daran, dass ich die Gelegenheit nutze ein paar Dinge aufzurüsten.

Flattr this!

Comments Comments Off on Server zügeln