Ungewollten Shutdown oder Neustart eines Linuxsystems verhindern

Heute war es nun endlich soweit. In meiner nicht mehr ganz so kurzen Laufbahn als #Sysadmin habe ich es geschafft ein (Kunden)System aus versehen herunterzufahren. Angemeldet, root geworden, halt eingegeben, Schrecksekunde, shutdown -c eingegeben, Connection lost…

Per Twitter wurde ich dann auf das Paket „molly-guard“ aufmerksam gemacht.

https://twitter.com/derjoern/statuses/626343427941236736

Die Beschreibung des Debian-Paketes sagt dazu:

Schützt Rechner vor unbeabsichtigtem Herunterfahren/Neustart
 
Dieses Paket installiert ein Shell-Skript, welches die Befehle 
shutdown/reboot/halt/poweroff überlagert. Das Skript ruft zunächst 
eine Reihe weiterer Skripte auf, die alle erfolgreich durchlaufen 
müssen, bevor molly-guard den realen Befehl aufruft.
 
Eines der Skripte sucht nach bestehenden SSH-Sitzungen. Wenn einer 
der vier Befehle interaktiv innerhalb einer SSH-Sitzung aufgerufen 
wird, fragt Sie das Shell-Skript nach dem Namen des Rechners, der 
heruntergefahren werden soll. Das sollte Sie angemessen vor 
unbeabsichtigtem Herunterfahren und neuem Starten schützen.
 
molly-guard lenkt die ursprünglichen Binärprogramme nach 
/lib/molly-guard/ um. Sie können molly-guard umgehen, indem Sie die 
Binärprogramme direkt aufrufen.

Für die Zukunft habe ich mir gemerkt: apt-get install molly-guard

Validatoren für Sysadmins

Ich spiele keine klassischen Computerspiele, aber ich spiele zum Beispiel bei verschiedensten Validatoren möglichst hohe Punkte zu erreichen. Hier mal eine unsortierte Liste:

Nutzt Ihr noch weitere?

Update: 2015-08-05:

Update: 2015-08-22:

Update: 2015-08-28:

Update: 2015-08-30:

Update: 2015-08-14:

#sysadmin Teil 1: Wie man sich auf Linux Systemen verstecken kann

Hier mal ein paar kleine Dinge zusammengeschrieben wie man sich auf Linux Systemen verstecken kann. Was man als Sysadmin dagegen tun kann gibt es dann in dem nächsten Blogpost

  • Wenn man den Output von den Kommandos lastlog, last oder lastb leeren möchte hilft folgendes:
    user@host ~ $ >/var/log/lastlog
    user@host ~ $ >/var/log/wtmp
    user@host ~ $ >/var/log/btmp
  • Befehle die mit vorangestellten zwei Leerzeichen ausgeführt werden sind normalerweise nicht der History sichtbar
    user@host ~ $   cat /var/www/foo/mysql.inc.php
  • Kommandos nicht in die History schreiben:
    user@host ~ $ export HISTSIZE=0
  • PROMPT_COMMAND resetten:
    user@host ~ $ export PROMPT_COMMAND=""
  • History löschen und Shell beenden:
    user@host ~ $ unset HISTFILE && exit
  • Prozesse verstecken kann man, indem man ein leeres Verzeichnis über ein /proc/PID Verzeichnis mountet. Den Mount wiederum kann man auch verstecken:
    user@host ~ $ mkdir /tmp/foo
    user@host ~ $ cp /etc/mtab /tmp/t
    user@host ~ $ mount --bind /tmp/foo /proc/PID
    user@host ~ $ mv /tmp/t /etc/mtab

Weiteres gerne in die Kommentare.

Update 1, 25.07.2015:

https://twitter.com/lordcoke/status/623942954135257088

LDAP Einträge auf der Kommandozeile editieren mit ldapvi

Um Einträge in einem LDAP auf der Kommandozeile zu ändern habe ich vor kurzem das Programm ldapvi kennengelernt. Dieses kann unter Debian oder Ubuntu mit dem folgenden Kommando aus den Paketquellen installiert werden:

aptitude install ldapvi

Danach ist noch der BindDN und das dazugehörige Passwort in die Konfigurationsdatei /etc/ldapvi.conf einzutragen. Die Werte kann man zum Beispiel so erfahren:

cat /etc/ldap.secret && grep -i admin /etc/ldap.conf

In der ldapvi.conf ist dann die Syntax:

user: cn=admin,dc=.....
password: XXXXXX

Anschließend können mit dem Aufruf des Kommandos ldapvi die Einträge im Standardeditor des Systems (update-alternatives –config editor) bearbeitet werden. Ist man fertig und schließt den Editor wird man informiert ob Änderungen vorliegen und wenn ja vor die Wahl gestellt was man nun machen möchte. Hier nutze ich die folgenden Kommandos:

  • v zeigt einem im LDIF Format die Änderungen an
  • e geht zurück in den Editiermodus
  • Q verwirft die Änderungen
  • y übernimmt die Änderungen