Ubuntu PAM MOTD Local Root Exploit

Sag ich ja nur, kam gestern raus. Also wer tatsaechlich Ubuntu Produktiv nutzt sollte besser updaten.

#   user@ubuntu:~$ bash ubuntu-pam-motd-localroot.sh
#   [*] Ubuntu PAM MOTD local root
#   [*] Backuped /home/user/.ssh/authorized_keys
#   [*] SSH key set up
#   [*] Backuped /home/user/.cache
#   [*] spawn ssh
#   [+] owned: /etc/passwd
#   [*] spawn ssh
#   [+] owned: /etc/shadow
#   [*] Restored /home/user/.cache
#   [*] Restored /home/user/.ssh/authorized_keys
#   [*] SSH key removed
#   [+] Success! Use password toor to get root
#   Password:
#   root@ubuntu:/home/user# id
#   uid=0(root) gid=0(root) groupes=0(root)

getestet mit 9.10

Eigentlich wollte ich ja

Ubuntu Server eine Chance geben. Dafuer sollte ein PE 1855 herhalten. Leider war die Installation eine Katastrophe, besonders die Partitionierung (zeigte einfach ein Dutzend seltsamer Partitionen an). Mit Debian hat der ganze Vorgang so 15 Minuten gedauert, ohne ein einziges Problem und das System war am laufen.

so einfach

stat Desktop/anonlog.sh
 File: „Desktop/anonlog.sh“
 Size: 1002          Blocks: 8          IO Block: 4096   reguläre Datei
Device: 804h/2052d    Inode: 1085146     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  thomas)   Gid: ( 1000/  thomas)
Access: 2010-06-23 09:28:50.186691906 +0200
Modify: 2010-06-23 09:28:32.086691173 +0200
Change: 2010-06-23 09:28:41.926690653 +0200

Keine IPs mehr im Apache Log

Man kann ja vieles tun um die IPs aus den Access Logs des Apaches zu anonymisieren:

1. die Logs vor dem Schreiben in ein Skript pipen http://www.zendas.de/technik/sicherheit/apache/index.html
2. via Apache Modul mod-removeip http://www.wirspeichernnicht.de/content/view/14/24/
3. Diverse Skripte via cron laufen lassen um die IPs loszuwerden
4. Logformat anpassen
5. Bestimmt noch 42 andere Moeglichkleiten

Hat alles seine Vor- und Nachteile. mod-removeip klingt ja erst einmal gut, leider funktioniert dadurch die IP basierte Zugriffskontrolle nicht mehr, aber immerhin sind auch die IPs im Errolog unkenntlich. Via log-in-Skript-pipen die letzten Ziffern anonymisieren, klingt auch nett, fuehrt nur dazu, dass pro vhost mind. ein extra Prozess laeuft. Wodurch eventuell Dinge wie ulimit -n 2048 noetig werden und es zu einer gewissen Unuebersichtlichkeit bei der Prozessliste kommen kann. Bei ein paar Vhosts sicherlich kein Problem, bei etlichen hundert leider schon. Die IPs mit Hilfe eines Skripts zu vorgegebenen Zeiten zu „saeubern“, vielleicht sogar gleich mit logrotate verbinden…auch ok, aber im „Nachhinein anonymisieren“ gefaellt mir auch nicht.  Ueber das LogFormat kann man die IPs nicht so richtig anonymisieren, aber man kann einfach aus

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

machen.  Schon sind wir die IPs in den Accesslogs los. Funktioniert natuerlich keine logbasierte Zugriffsanalyse mehr und auf den Errorlog IPs sitzen wir immer noch. Errorlogs kann man natuerlich nur im Bedarfsfall aktivieren und ansonsten einfach nach /dev/null schicken.
Alles nicht so einfach. Fuehrt eigentlich zu der Einsicht: Wenn Du keine Logs brauchst, produziere keine.
Als Alternative kann man natuerlich Software wie z. B.  Piwik nutzen, natuerlich mit AnonymizeIP Plugin. Damit hat man wenigstens den Bedarf an Accesslogs erschlagen.