Kategori public

dns sshfp record für alle Algorithmen gleichzeitig erstellen

Freitag, Januar 9th, 2015

Wie ich schon vor einigen Jahren geschrieben habe, kann man die SSH fingerprints im DNS hinterlegen, um SSH Verbindungen zu validieren.

# dig -t sshfp blog.chr.istoph.de
;; ANSWER SECTION:
blog.chr.istoph.de. 7199 IN SSHFP 1 1 D931B1124CC5DA23DB2131C62BA9D286081E3EA7
...

Dafür hinterlegt man die Secure Hash Algorithm (SHA) Summen im DNS:
ssh-keygen -r blog.chr -f /etc/ssh/ssh_host_rsa_key.pub
blog IN SSHFP 1 1 d931b1124cc5da23db2131c62ba9d286081e3ea7
blog IN SSHFP 1 2 0fe30bacf0833a9051a74cec431af450ceeca4171b3da5bf0550ada55adadbfa

Jetzt gibt es aber neue Algorithmen die in SSH Einzug erhalten haben.
1: RSA
2: DSA
3: ECDSA
4: ED25519

Da man mit ssh-keygen immer nur einen Key haschen kann und die neue Kurve ED25519 noch nicht von Ubuntu 14.04. unterstützt wird siehe Beispiel:
ssh-keygen -r blog.chr -f /etc/ssh/ssh_host_ed25519_key.pub
export_dns_rr: unsupported algorithm and/or digest_type

So habe ich mir ein Skript geschrieben, das mir alle Fingerprints auf einmal erstellt.

#!/bin/bash

domain="$1"

if [ "$domain" = "" ]; then
	echo $0 domain
	exit 0
fi

function sshfp() {
	a=$1 #algorithmus
	f=$2 #file
	echo $domain IN SSHFP $a 1 $(awk '{print $2}' $f|base64 -d|sha1sum|awk '{print $1}')
	echo $domain IN SSHFP $a 2 $(awk '{print $2}' $f|base64 -d|sha256sum|awk '{print $1}')
}

for f in /etc/ssh/ssh_host_*_key.pub; do
	case "$(echo $f|awk -F '_' '{print $3}')"
	in
	  rsa)
		sshfp 1 $f
		;;
	  dsa)
		sshfp 2 $f
		;;
	  ecdsa)
		sshfp 3 $f
		;;
	  ed25519)		
		sshfp 4 $f
		;;
	esac
done | sort

Die Ausgabe sieht dann folgendermaßen aus:
(mehr …)

SSH via VPN, HTTP und co. via default route

Freitag, November 28th, 2014

Um einen Host hinter einer Firewall zu administrieren habe ich ein VPN zwischen den beiden Punkten aufgebaut. Um aber den ausgehenden Netzwerktraffic, der über die Firewall läuft, testen zu können brauchte ich eine Routing via Ports. Genau genommen wollte ich Port 22 durch den VPN Tunnel und den HTTP traffic über das Standard Gateway routen.
asyncrones-routing

Zuerst braucht man eine separate routing table in unserem Fall foo
echo "1 foo" >> /etc/iproute2/rt_tables

In diese routing Tabelle legen wir zuerst eine default route ab
ip route add table foo default dev vpn

Dann braucht man eine rule zum die angibt wann die foo routing Tabelle verwendet werden soll.
ip rule add fwmark 1 table foo

Nun kommen wir zur Auswahl der Pakete, die anders geroutet werden sollen. Dies geschieht über die mangle table. Hier werden die einzelnen Pakte über fwmarks markiert.
iptables -t mangle -A OUTPUT -d 203.0.113.80/32 -p tcp -m tcp --dport 22 -j MARK --set-xmark 0x1/0xffffffff

Damit der Kernel auch die ausgehenden Pakete richtig benennt, werden alle Pakete die über das VPN geroutet werden nun auf die source Adresse des VPNs umgeschrieben.
Dies ist notwendig, da der Kernel beim bestimmen der Absenderadresse unserer TCP Verbindung die firewall Konfiguration bei der Bestimmung der ausgehenden route nicht verarbeitet.
iptables -t nat -A POSTROUTING ! -s 10.8.0.2/32 -o vpn -j SNAT --to-source 10.8.0.2

Zum Schluss müssen wir das reverse path filtering ausschalten, damit die Entgegennahme der Pakete, deren Antwort an ein anderes Interface gehen würde, erlaubt werden.
echo 0 | tee /proc/sys/net/ipv4/conf/*/rp_filter

Ohje, alles gepacht und doch verwundbar

Dienstag, November 18th, 2014

Es reicht nicht aus nur Updates einzuspielen, wenn man Dienste nicht neu startet deren libraries aktualisiert wurden. Denn erst nach einem Neustart werden diese neu eingelesen.

lsof | grep libssl | grep DEL
apache2 1129 www-data DEL REG 253,1 1831551 /lib/x86_64-linux-gnu/libssl.so.1.0.0

Ein einfacher Neustart der hier aufgeführten Dienstes reicht in diesem Fall aus.
/etc/init.d/apache restart

mdadm bitmap erstellen

Samstag, November 1st, 2014

Bei RAIDs kommt es ab und an einmal vor, dass Festplatten aus dem RAID geworfen werden. Eine wieder hinzugefügte Festplatte muss dann wieder gesynct (resharpt) werden. In meinem Beispiel von 4x2TB Festplatten in einem RAID 5, dauert dass ca. 4 Stunden. Um die Wahrscheinlichkeit das während des resharpen eine weiter Festplatte ausfällt, das den Totaluferlust der Daten bedeuten würde, zu minimieren. Ist es sinnvoll auf kosten der Schreibperformance ein bitmap zu erstellen.

mdadm --grow --bitmap=internal /dev/md0

Alternativ kann man das bitmap auch auf eine separate Festplatte schreiben, dies erhört die schreib Performance des RAIDs.

mdadm --grow --bitmap=/mnt/bitmap-md0.bin /dev/md0

Um die bitmaps wieder auszuschalten muss man none angeben:

mdadm --grow --bitmap=none /dev/md0

(mehr …)

ShellShock CVE-2014-6271 pakete für Debian sarge, etch and lenny

Samstag, September 27th, 2014

Für all die noch ein „älteres“ Debian im Einsatz haben, habe ich die Updates für ShellShock (CVE-2014-6271) für Debian sarge, etch and lenny mal in mein repository gepackt:

echo "deb http://repository.chr.istoph.de/debian/ etch main" > /etc/apt/sources.list.d/repository.chr.istoph.de.list
wget -O - http://repository.chr.istoph.de/repository.chr.istoph.de.gpg.key |apt-key add -
apt-get update
apt-get upgrade

[UPDATE 28.09.2014]:
Mitlerweine ist auch CVE-2014-7169 gefixt und in meinem repository verhanden.

Quelle: Marco d’Itri Debian Maintainer: http://blog.bofh.it/debian/id_451