Mal wieder ein kurzer Post aus der Kategorie “Vielleicht hilft es jemandem”.
Problem:
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
Lösung:
rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
Mal wieder ein kurzer Post aus der Kategorie “Vielleicht hilft es jemandem”.
Problem:
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
Lösung:
rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
Heute ist es mal wieder soweit: Es gibt einen neuen Root-Exploit für nahezu alle Linux-Kernel:
Kritische Lücke im Linux-Kernel betrifft alle Versionen seit 2001
Auf RedHat Enterprise 4 und 5 scheint der Exploit auch zu funktionieren, auf Ubuntu 9.04 wohl nicht. Bleiben Sie dran…
Ich weiß schon, warum ich RPM nicht mag. Wenn einem die o.g. Fehlermeldung über den Weg läuft, bedeutet das, das man die RPM-Datenbank neu aufbauen muss, weil sie durch eine abgebrochene Installation o.ä. zerfetzt wurde. Das geht wie folgt:
Sicherheitshalber ein Backup machen:
tar cvzf rpm-backup,tgz /var/lib/rpm
RPM-Datenbank neu aufbauen:
rpm --rebuilddb
Neue RPM-Datenbank testen:
rpm -qa
Wenn bei letzterem Befehl keine Fehlermeldungen auftauchen, hat die Operation geklappt.
ntop ist ein Tool, das sich wunderbar eignet, um den eigenen Netzwerk-Traffic zu untersuchen. Es schlüsselt dabei, auf Wunsch, nicht nur nach Protokollen, sondern auch nach Ziel-AS (=Autonomes System) auf.
Leider ist es gar nicht so einfach, einzelne IP-Adressen Ihrem jeweiligen AS zuzuordnen. Daher bringt ntop eine Datei namens AS-list.txt mit, die viele AS und Ihre Prefixe enthält. Leider ist diese Datei (zumindest unter Ubuntu) hemmungslos veraltet und damit fast unbrauchbar. Meine Suche bei Google führte leider auch nicht zu einer aktualisierten Liste, also war es an der Zeit, selbst eine zu erstellen.
Das geht, dank der Hilfe von RouteViews relativ einfach. Man nehme die Zonendatei für asn.routeviews.org und konvertiere sie in das passende Format:
wget -qO - ftp://archive.routeviews.org/dnszones/originas.bz2 | bzip2 -cd | awk '{printf "%s:%s\n",$4,$5}' | sed s/\"//g | sort -un > AS-list.txt
Update: sort -un und uniq tun offensichtlich nicht das gleich, daher muss es korrekt heißen
wget -qO - ftp://archive.routeviews.org/dnszones/originas.bz2 | bzip2 -cd | awk '{printf "%s:%s\n",$4,$5}' | sed s/\"//g | uniq | sort -n > AS-list.txt
Update 2: Wie im Kommentar richtig angemerkt stimmt das Format nicht (mehr). Das liegt daran, das Routeviews.org vor ein paar Tagen sein Quellformat geändert hat. Mit folgender Änderung läuft es wieder, auch wenn die ersten paar Zeilen immernoch ein paar Fehler enthalten stimmen die restlichen 99%
wget -O - ftp://archive.routeviews.org/dnszones/originas.bz2 | bzip2 -cd | awk '{printf "%s:%s/%s\n",$4,$5,$6}' | sed s/\"//g | uniq | sort -n > AS-list.txt
Es ist mal wieder Zeit, etwas zum Thema Shell-Scripting zu schreiben.
Problem: Wie erkenne, ich ob ein Script von einem Benutzer oder durch Cron ausgeführt wird ?
Lösung: Wie immer, mindestens 2
Ansatz 1)
Man setzt in den entsprechenden Crontabs eine Variable (z.B. ISCRON=1) und prüft diese im Script. Das funktioniert natürlich nur, wenn man Kontrolle über die Crontabs hat, was nicht immer der Fall ist.
Ansatz 2)
Man schaut auf eine Variable, die Cron nicht setzt. $TERM ist so eine. Diese wird gesetzt, wenn Sessions auf der Console oder per Telnet/SSH gestartet werden, Cron braucht sie aber schlicht nicht. Das sieht dann z.B. so aus:
if [ "$TERM" = "" ]; then
echo “Hallo Cron”
else
echo “Hallo Mensch”
fi